Ich habe jetzt die letzten Tage damit verbracht mir alles durchzulesen und habe auch einiges probiert - allerdings hat nichts funktioniert... Das Thema Threads ist wirklich nicht gerade ein Thema was man sich mal so eben selbst aneignet! Leider haben wir mit unserem Dozenten nicht wirklich über dieses Thema gesprochen, dafür haben die 6 Wochen Java/JavaFX Kurs doch nicht ausgereicht...
Falls sich also jemand erbarmt und mir dabei helfen mag - ich poste hier mal den gesamten Code den ich habe, alle mit dem Aufrufe von txtImport.appendText("Text\n"); sollen während der Laufzeit in der TextArea erscheinen. Ich kann mir natürlich denken dass viele Sachen im Code verbesserungswürdig sind - das ist bei einem Anfänger und Hobby-Coder auch sicherlich nicht verwunderlich, dafür kommentiere ich wenigstens die wichtigsten Sachen^^
[code=java]
package main;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import org.json.JSONArray;
import org.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.swing.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.*;
public class ImportJSON extends Application {
//Quelldateien
// private File sourceWorldJSON = new File("D:\\Gamez\\STEAM\\steamapps\\common\\Gems of War\\res\\Data\\World.json");
// private File sourceWorldXML = new File("D:\\Gamez\\STEAM\\steamapps\\common\\Gems of War\\res\\Text\\en_US\\World.xml");
// private File sourceCommonXML = new File("D:\\Gamez\\STEAM\\steamapps\\common\\Gems of War\\res\\Text\\en_US\\Common.xml");
private File sourceWorldJSON = new File("World.json");
private File sourceWorldXML = new File("World.xml");
private File sourceCommonXML = new File("Common.xml");
private Document documentWorldXML = null, documentCommonXML = null;
private File saveAs = null;
//Elemente
private Button btnStart;
private Label lblCheckFiles = new Label("Dateiprüfung:"), lblCheckJWorldSON = new Label("check"), lblCheckWorldXML = new Label("check"), lblCheckCommonXML = new Label("check");
private TextArea txtImport = new TextArea();
//JSONObject mit komplettem Inhalt der World.json
private static JSONObject jsonFull, jsonData;
private static ObservableList<String> listTypes = FXCollections.observableArrayList();
//JSONArrays mit originalen Daten
private static JSONArray arrayHeroClassesOriginal, arrayKingdomsOriginal, arrayTraitsOriginal, arrayTroopsOriginal, arraySpellsOriginal, arrayWeaponsOriginal;
@Override
public void start(Stage primaryStage) throws Exception{
//Oberfläche erzeugen
lblCheckFiles.setFont(Font.font("Arial", FontWeight.BOLD, 15));
lblCheckFiles.setPadding(new Insets(0,0,10,0));
GridPane gridLabels = new GridPane();
gridLabels.setHgap(10);
gridLabels.setVgap(5);
gridLabels.setPadding(new Insets(10,0,10,20));
gridLabels.add(lblCheckFiles,0,0,2,1);
gridLabels.add(new Label("World.json: "),0,1);
gridLabels.add(lblCheckJWorldSON,1,1);
gridLabels.add(new Label("World.xml: "),0,2);
gridLabels.add(lblCheckWorldXML,1,2);
gridLabels.add(new Label("Common.xml: "),0,3);
gridLabels.add(lblCheckCommonXML,1,3);
txtImport.setPrefWidth(600);
txtImport.setPrefHeight(500);
VBox boxTextArea = new VBox(txtImport);
boxTextArea.setPadding(new Insets(10));
btnStart = new Button("Start");
btnStart.setPrefHeight(40);
btnStart.setPrefWidth(100);
Button btnClose = new Button("Schließen");
btnClose.setPrefHeight(40);
btnClose.setPrefWidth(100);
HBox boxButtons = new HBox(btnStart, btnClose);
boxButtons.setAlignment(Pos.CENTER_RIGHT);
boxButtons.setPadding(new Insets(10));
boxButtons.setSpacing(20);
VBox root = new VBox(gridLabels, boxTextArea, boxButtons);
primaryStage.setTitle("Data Import");
primaryStage.setScene(new Scene(root));
primaryStage.show();
//World.json auf Existenz prüfen
if(sourceWorldJSON.exists()) {
lblCheckJWorldSON.setText("Datei gefunden!");
} else {
lblCheckJWorldSON.setText("FEHLER: Datei nicht gefunden!");
btnStart.setDisable(true);
}
//World.xml auf Existenz prüfen
if(sourceWorldXML.exists()) {
lblCheckWorldXML.setText("Datei gefunden!");
} else {
lblCheckWorldXML.setText("FEHLER: Datei nicht gefunden!");
btnStart.setDisable(true);
}
//Common.xml auf Existenz prüfen
if(sourceCommonXML.exists()) {
lblCheckCommonXML.setText("Datei gefunden!");
} else {
lblCheckCommonXML.setText("FEHLER: Datei nicht gefunden!");
btnStart.setDisable(true);
}
//FileChooser für Pfad der neuen Datei
FileChooser fileChooser = new FileChooser();
fileChooser.setInitialFileName("Data.json");
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JSON", "*.json"));
//Button Actions
btnStart.setOnAction(event -> {
btnStart.setDisable(true);
saveAs = fileChooser.showSaveDialog(primaryStage);
importData();
});
btnClose.setOnAction(event -> System.exit(0));
}
private void importData() {
System.out.println("Speicherort --> "+saveAs.getAbsolutePath()+"\n");
//XML Dateien umwandeln ("&" in "&" wandeln)
txtImport.appendText("Temporäre XML Dateien erzeugen\n");
File tempWorldXML = createTempXML(sourceWorldXML);
documentWorldXML = convertXML(tempWorldXML);
File tempCommonXML = createTempXML(sourceCommonXML);
documentCommonXML = convertXML(tempCommonXML);
//JSON Daten verarbeiten
try {
txtImport.appendText("JSON Quelldatei einlesen und JSONObject erstellen\n");
FileReader fileReader = new FileReader(sourceWorldJSON);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String fileContent = bufferedReader.readLine();
bufferedReader.close();
jsonFull = new JSONObject(fileContent);
//Arrays aus bestehender JSON erstellen
arrayHeroClassesOriginal = jsonFull.getJSONArray("HeroClasses");
arrayKingdomsOriginal = jsonFull.getJSONArray("Kingdoms");
arrayTraitsOriginal = jsonFull.getJSONArray("Traits");
arrayTroopsOriginal = jsonFull.getJSONArray("Troops");
arraySpellsOriginal = jsonFull.getJSONArray("Spells");
arrayWeaponsOriginal = jsonFull.getJSONArray("Weapons");
//Neue Arrays mit benötigten Daten füllen
JSONObject newHeroClasses = createHeroClasses(arrayHeroClassesOriginal);
JSONObject newKingdoms = createKingdoms(arrayKingdomsOriginal);
JSONObject newTraits = createTraits(arrayTraitsOriginal);
JSONObject newTroops = createTroops(arrayTroopsOriginal);
JSONObject newSpells = createSpells(arraySpellsOriginal);
JSONObject newWeapons = createWeapons(arrayWeaponsOriginal);
//Object für ManaBonus erzeugen
JSONObject manaBonus = new JSONObject();
for(int colorNr=0; colorNr<=5; colorNr++) {
String colorName="", searchBonus, searchDescription;
switch(colorNr) {
case 0:
colorName = "Blue";
break;
case 1:
colorName = "Green";
break;
case 2:
colorName = "Red";
break;
case 3:
colorName = "Yellow";
break;
case 4:
colorName = "Purple";
break;
case 5:
colorName = "Brown";
break;
}
searchBonus = "[BONUS_COLOR_"+colorNr+"]";
searchDescription = "[BONUS_COLOR_DESCRIPTION_"+colorNr+"]";
manaBonus.put("Bonus"+colorName, findXMLContent(searchBonus, documentCommonXML));
manaBonus.put("Bonus"+colorName+"Description", findXMLContent(searchDescription, documentCommonXML));
}
//Object für TypeBonus erzeugen
JSONObject typeBonus = new JSONObject();
for(String type : listTypes) {
String typeUC = type.toUpperCase();
String searchBonus, searchDescription;
for(int a=3; a<=4; a++) {
searchBonus = "[BONUS_TROOPTYPE_"+typeUC+"_"+a+"]";
searchDescription ="[BONUS_TROOPTYPE_DESCRIPTION_"+typeUC+"_"+a+"]";
typeBonus.put(type+"_"+a, findXMLContent(searchBonus, documentCommonXML));
typeBonus.put(type+"_"+a+"_"+"Description", findXMLContent(searchDescription, documentCommonXML));
}
}
//Neues Object für alle gesammelten Daten erstellen
jsonData = new JSONObject();
jsonData.put("HeroClasses", newHeroClasses);
jsonData.put("Kingdoms", newKingdoms);
jsonData.put("Traits", newTraits);
jsonData.put("Troops", newTroops);
jsonData.put("Spells", newSpells);
jsonData.put("Weapons", newWeapons);
jsonData.put("ManaBonus",manaBonus);
jsonData.put("TypeBonus", typeBonus);
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "Datei konnte nicht gefunden werden:\n" + e.toString(), "Datei nicht gefunden", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//Data.json mit gesammelten Daten erzeugen
saveNewJSON(jsonData.toString());
//Temporäre XML Dateien wieder löschen
if(tempWorldXML.delete()) {
System.out.println("tempWorld.xml gelöscht");
txtImport.appendText("tempWorld.xml gelöscht\n");
}
if(tempCommonXML.delete()) {
System.out.println("tempCommon.xml gelöscht");
txtImport.appendText("tempCommon.xml gelöscht\n");
}
saveStatistic("-----------------------------------------------------------");
btnStart.setDisable(false);
}
private File createTempXML(File file) {
//XML einlesen - "&" durch "&" ersetzen
System.out.println(file+" wird temporär neu erstellt");
String fileContent = "", line;
try {
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
line = line.replace("&", "&");
fileContent += line+"\n";
}
bufferedReader.close();
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "Datei konnte nicht gefunden werden:\n" + e.toString(), "Datei nicht gefunden", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//Temporäre XML-Datei erzeugen
File tempXML = null;
if(file.equals(sourceWorldXML)) {
tempXML = new File("tempWorld.xml");
}
if(file.equals(sourceCommonXML)) {
tempXML = new File("tempCommon.xml");
}
if(tempXML != null) {
try {
FileWriter fw = new FileWriter(tempXML);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(fileContent);
bw.close();
System.out.println("Temporäre Datei \""+tempXML+"\" erstellt!\n");
} catch (IOException e) {
e.printStackTrace();
}
}
return tempXML;
}
private Document convertXML(File tempXML) {
//tempXML parsen
Document documentXML = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
documentXML = builder.parse(tempXML);
} catch (SAXException | ParserConfigurationException | IOException e) {
e.printStackTrace();
}
return documentXML;
}
private JSONObject createHeroClasses(JSONArray originalHeroClasses) {
JSONObject objectHeroClasses = new JSONObject();
for(int classNr=0; classNr<originalHeroClasses.length(); classNr++) {
JSONObject heroClassOriginal = (JSONObject) originalHeroClasses.get(classNr);
JSONObject heroClassNew = new JSONObject();
//Name
String className = findXMLContent(heroClassOriginal.getString("Name"), documentWorldXML);
heroClassNew.put("Name", className);
//Augments
JSONArray arrayClassAugments = heroClassOriginal.getJSONArray("Augment");
String augment_1 = arrayClassAugments.getString(0);
String augment_2 = arrayClassAugments.getString(1);
String augment_3 = arrayClassAugments.getString(2);
heroClassNew.put("Augment_1", augment_1);
heroClassNew.put("Augment_2", augment_2);
heroClassNew.put("Augment_3", augment_3);
JSONArray arrayClassAugmentNames = heroClassOriginal.getJSONArray("AugmentName");
String augmentName_1 = findXMLContent(arrayClassAugmentNames.getString(0), documentWorldXML);
String augmentName_2 = findXMLContent(arrayClassAugmentNames.getString(1), documentWorldXML);
String augmentName_3 = findXMLContent(arrayClassAugmentNames.getString(2), documentWorldXML);
heroClassNew.put("AugmentName_1", augmentName_1);
heroClassNew.put("AugmentName_2", augmentName_2);
heroClassNew.put("AugmentName_3", augmentName_3);
//Traits
JSONArray arrayClassTraits = heroClassOriginal.getJSONArray("Traits");
String trait_1 = getTraitName(arrayClassTraits.getString(0));
String trait_2 = getTraitName(arrayClassTraits.getString(1));
String trait_3 = getTraitName(arrayClassTraits.getString(2));
heroClassNew.put("Trait_1", trait_1);
heroClassNew.put("Trait_2", trait_2);
heroClassNew.put("Trait_3", trait_3);
objectHeroClasses.put(className, heroClassNew);
System.out.println("HeroClass: "+className);
}
txtImport.appendText("HeroClasses: "+objectHeroClasses.length()+"\n\n");
saveStatistic("HeroClasses: "+objectHeroClasses.length());
System.out.println("HeroClasses: "+objectHeroClasses.length());
return objectHeroClasses;
}
private JSONObject createKingdoms(JSONArray originalKingdoms) {
JSONObject objectKingdoms = new JSONObject();
for(int kingdomNr=0; kingdomNr<originalKingdoms.length(); kingdomNr++) {
JSONObject kingdomOriginal = (JSONObject) originalKingdoms.get(kingdomNr);
JSONObject kingdomNew = new JSONObject();
if(kingdomOriginal.getBoolean("Tutorial")) { //Tutorial Broken Spire filtern
continue;
}
//Name
String kingdomName = findXMLContent(kingdomOriginal.getString("Name"), documentWorldXML);
kingdomNew.put("Name", kingdomName);
//Banner
String bannerName = findXMLContent(kingdomOriginal.getString("BannerName"), documentWorldXML);
String bannerDesc = findXMLContent(kingdomOriginal.getString("BannerManaDescription"), documentWorldXML);
kingdomNew.put("BannerName", bannerName);
kingdomNew.put("BannerDescription", bannerDesc);
//Einheiten
JSONArray arrayTroopIds = kingdomOriginal.getJSONArray("TroopIds");
JSONArray arrayTroopNames = getTroopNames(arrayTroopIds);
kingdomNew.put("Troops", arrayTroopNames);
//Bonus
for(int i=2; i<5; i++) {
int id = kingdomOriginal.getInt("Id");
String bonusCode = "[BONUS_KINGDOM_"+id+"_"+i+"]";
String bonus = findXMLContent(bonusCode, documentCommonXML);
kingdomNew.put("Bonus_"+i, bonus);
String bonusDescCode = "[BONUS_KINGDOM_DESCRIPTION_"+id+"_"+i+"]";
String bonusDesc = findXMLContent(bonusDescCode, documentCommonXML);
kingdomNew.put("Bonus_"+i+"_Description", bonusDesc);
}
//FileBase
String fileBase = kingdomOriginal.getString("FileBase");
kingdomNew.put("FileBase", fileBase);
objectKingdoms.put(kingdomName, kingdomNew);
if(kingdomOriginal.getBoolean("Used")) {
System.out.println("Kingdom: "+kingdomName);
} else {
txtImport.appendText("Kingdom: "+kingdomName+" (Ungenutzt)\n");
saveStatistic("Kingdom: "+kingdomName+" (Ungenutzt)");
System.out.println("Kingdom: "+kingdomName+" (Ungenutzt)");
}
}
txtImport.appendText("Kingdoms: "+objectKingdoms.length()+"\n\n");
saveStatistic("Kingdoms: "+objectKingdoms.length());
System.out.println("Kingdoms: "+objectKingdoms.length());
return objectKingdoms;
}
private JSONObject createTraits(JSONArray originalTraits) {
JSONObject objectTraits = new JSONObject();
for(int traitNr=0; traitNr<originalTraits.length(); traitNr++) {
JSONObject traitOriginal = (JSONObject) originalTraits.get(traitNr);
JSONObject traitNew = new JSONObject();
//Name
String traitName = findXMLContent(traitOriginal.getString("Name"), documentWorldXML);
traitNew.put("Name", traitName);
//Beschreibung
String traitDesc = findXMLContent(traitOriginal.getString("Description"), documentWorldXML);
traitNew.put("Description", traitDesc);
objectTraits.put(traitName, traitNew);
System.out.println("Trait: "+traitName);
}
txtImport.appendText("Traits: "+objectTraits.length()+"\n\n");
saveStatistic("Traits: "+objectTraits.length());
System.out.println("Traits: "+objectTraits.length());
return objectTraits;
}
private JSONObject createTroops(JSONArray originalTroops) {
JSONObject objectTroops = new JSONObject();
for(int troopNr = 0; troopNr< originalTroops.length(); troopNr++) {
JSONObject troopOriginal = (JSONObject) originalTroops.get(troopNr);
JSONObject troopNew = new JSONObject();
if(troopOriginal.getInt("Id") == 6127) { //MegaGorgotha filtern
continue;
}
//Name
String troopName = findXMLContent(troopOriginal.getString("Name"), documentWorldXML);
troopNew.put("Name", troopName);
//Typ
String typ = troopOriginal.getString("TroopType");
troopNew.put("Typ", typ);
//Rarity
String rarity = getRarity(troopOriginal.getString("TroopRarity"));
troopNew.put("Rarity", rarity);
//Kingdom / used?
int id = troopOriginal.getInt("Id");
boolean used = false;
for(int i=0; i<arrayKingdomsOriginal.length(); i++) {
JSONObject kingdom = arrayKingdomsOriginal.getJSONObject(i);
JSONArray troopIds = kingdom.getJSONArray("TroopIds");
for(int j=0; j<troopIds.length(); j++) {
if(troopIds.getInt(j) == id) {
used = true;
String kingdomName = findXMLContent(kingdom.getString("Name"), documentWorldXML);
troopNew.put("Kingdom", kingdomName);
break;
}
}
if(used) {
break;
}
}
//Manafarben
JSONObject manaColors = troopOriginal.getJSONObject("ManaColors");
troopNew.put("PrimaryColor", troopOriginal.getString("PrimaryColor"));
troopNew.put("ManaColors", manaColors);
//Zauber / Kosten
int spellId = troopOriginal.getInt("SpellId");
for(int i=0; i<arraySpellsOriginal.length(); i++) {
JSONObject spell = arraySpellsOriginal.getJSONObject(i);
if(spell.getInt("Id") == spellId) {
String spellName = findXMLContent(spell.getString("Name"), documentWorldXML);
troopNew.put("Spell", spellName);
troopNew.put("Cost", spell.getInt("Cost"));
break;
}
}
//Traits
JSONArray arrayTroopTraits = troopOriginal.getJSONArray("Traits");
String trait_1 = getTraitName(arrayTroopTraits.getString(0));
String trait_2 = getTraitName(arrayTroopTraits.getString(1));
String trait_3 = getTraitName(arrayTroopTraits.getString(2));
troopNew.put("Trait_1", trait_1);
troopNew.put("Trait_2", trait_2);
troopNew.put("Trait_3", trait_3);
//Beschreibung
String description = findXMLContent(troopOriginal.getString("Description"), documentWorldXML);
troopNew.put("Description", description);
//FileBase
String fileBase = troopOriginal.getString("FileBase");
troopNew.put("FileBase", fileBase);
//Level Stats
JSONArray healthIncrease = troopOriginal.getJSONArray("HealthIncrease");
JSONArray armorIncrease = troopOriginal.getJSONArray("ArmorIncrease");
JSONArray attackIncrease = troopOriginal.getJSONArray("AttackIncrease");
JSONArray spellpowerIncrease = troopOriginal.getJSONArray("SpellPowerIncrease");
int baseHealth = troopOriginal.getInt("Health_Base");
int baseArmor = troopOriginal.getInt("Armor_Base");
int baseAttack = troopOriginal.getInt("Attack_Base");
int baseSpellpower = troopOriginal.getInt("SpellPower_Base");
JSONArray healthLevel = calculateLevelStats(baseHealth, healthIncrease);
troopNew.put("HealthPerLevel", healthLevel);
JSONArray armorLevel = calculateLevelStats(baseArmor, armorIncrease);
troopNew.put("ArmorPerLevel", armorLevel);
JSONArray attackLevel = calculateLevelStats(baseAttack, attackIncrease);
troopNew.put("AttackPerLevel", attackLevel);
JSONArray magicLevel = calculateLevelStats(baseSpellpower, spellpowerIncrease);
troopNew.put("MagicPerLevel", magicLevel);
//Liste für alle Typen zur Kontrolle
if(!listTypes.contains(troopOriginal.getString("TroopType"))) {
listTypes.add(troopOriginal.getString("TroopType"));
}
if(used) {
System.out.println("Troop: "+troopName);
} else {
txtImport.appendText("Troop: "+troopName+" (Ungenutzt)\n");
saveStatistic("Troop: "+troopName+" (Ungenutzt)");
System.out.println("Troop: "+troopName+" (Ungenutzt)");
}
objectTroops.put(troopName, troopNew);
}
txtImport.appendText("Troops: "+objectTroops.length()+"\n\n");
saveStatistic("Troops: "+objectTroops.length());
System.out.println("Troops: "+objectTroops.length());
return objectTroops;
}
private JSONObject createSpells(JSONArray originalSpells) {
JSONObject objectSpells = new JSONObject();
for(int spellNr=0; spellNr<originalSpells.length(); spellNr++) {
JSONObject spellOriginal = (JSONObject) originalSpells.get(spellNr);
JSONObject spellNew = new JSONObject();
//Name
String spellName = findXMLContent(spellOriginal.getString("Name"), documentWorldXML);
spellNew.put("Name", spellName);
//Beschreibung
String traitDesc = findXMLContent(spellOriginal.getString("Description"), documentWorldXML);
spellNew.put("Description", traitDesc);
objectSpells.put(spellName, spellNew);
System.out.println("Trait: "+spellName);
}
txtImport.appendText("Traits: "+objectSpells.length()+"\n\n");
saveStatistic("Traits: "+objectSpells.length());
System.out.println("Traits: "+objectSpells.length());
return objectSpells;
}
private JSONObject createWeapons(JSONArray originalWeapons) {
JSONObject objectWeapons = new JSONObject();
for(int weaponNr=0; weaponNr<originalWeapons.length(); weaponNr++) {
JSONObject weaponOriginal = (JSONObject) originalWeapons.get(weaponNr);
JSONObject weaponNew = new JSONObject();
//Name
String weaponName = findXMLContent(weaponOriginal.getString("Name"), documentWorldXML);
weaponNew.put("Name", weaponName);
//Rarity
String rarity = getRarity(weaponOriginal.getString("WeaponRarity"));
weaponNew.put("Rarity", rarity);
//Mana Colors
JSONObject manaColors = weaponOriginal.getJSONObject("ManaColors");
weaponNew.put("ManaColors", manaColors);
//FileBase
String fileBase = weaponOriginal.getString("FileBase");
weaponNew.put("FileBase", fileBase);
objectWeapons.put(weaponName, weaponNew);
System.out.println("Weapon: "+weaponName);
}
txtImport.appendText("Weapons: "+objectWeapons.length()+"\n\n");
saveStatistic("Weapons: "+objectWeapons.length());
System.out.println("Weapons: "+objectWeapons.length());
return objectWeapons;
}
private String getRarity(String replace) {
switch(replace) {
case "Uncommon":
return "Rare";
case "Rare":
return "UltraRare";
case "UltraRare":
return "Epic";
case "Epic":
return "Legendary";
case "Legendary":
return "Mythic";
default:
return "----";
}
}
private JSONArray getTroopNames(JSONArray troopIds) {
JSONArray troopNames = new JSONArray();
for(int i=0; i<troopIds.length(); i++) {
int id = troopIds.getInt(i);
for(int j=0; j<arrayTroopsOriginal.length(); j++) {
JSONObject troop = arrayTroopsOriginal.getJSONObject(j);
if(troop.getInt("Id") == id) {
String troopName = findXMLContent(troop.getString("Name"), documentWorldXML);
troopNames.put(i, troopName);
break;
}
}
}
return troopNames;
}
private String getTraitName(String code) {
String traitName = "----";
for(int i=0; i<arrayTraitsOriginal.length(); i++) {
JSONObject trait = arrayTraitsOriginal.getJSONObject(i);
if(trait.getString("Code").equals(code)) {
String trait1Code = trait.getString("Name");
traitName = findXMLContent(trait1Code, documentWorldXML);
return traitName;
}
}
return traitName;
}
private JSONArray calculateLevelStats(int base, JSONArray increase) {
JSONArray levelUp = new JSONArray();
for(int i=0; i<increase.length(); i++) {
if(i == 0) {
levelUp.put(i, base+increase.getInt(i));
} else {
levelUp.put(i, levelUp.getInt(i-1)+increase.getInt(i));
}
}
return levelUp;
}
private String findXMLContent(String searchString, Document documentXML) {
String foundString;
NodeList childList = documentXML.getElementsByTagName("Text");
int length = childList.getLength();
for(int i=0; i<length; i++) {
if(childList.item(i).getAttributes().getLength() == 1) {
NamedNodeMap nodemap = childList.item(i).getAttributes();
if(nodemap.getNamedItem("tag").getTextContent().equals(searchString)) {
foundString = childList.item(i).getTextContent();
//System.out.println(searchString+" >>> "+foundString);
return foundString;
}
}
}
return searchString;
}
private void saveNewJSON(String jsonNew) {
try {
FileWriter fw = new FileWriter(saveAs);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(jsonNew);
bw.close();
System.out.println("Neue Datei \""+saveAs+"\" erstellt!");
} catch (IOException e) {
e.printStackTrace();
}
}
private void saveStatistic(String save) {
try {
FileWriter fw = new FileWriter(new File("statistic.txt"), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.append(save).append("\n");
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
[/code]
Wäre toll wenn sich das mal jemand anschaut - ansonsten muss ich eben damit leben...