Auf Thema antworten

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 "&amp;" 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 "&amp;" 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("&", "&amp;");

                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...



Oben