From 0417d9b9bb436d593791d360c4dd05486ae50c8c Mon Sep 17 00:00:00 2001 From: potzplitz <127513690+potzplitz@users.noreply.github.com> Date: Sat, 30 Mar 2024 20:44:54 +0100 Subject: [PATCH] added new record stuff and lots of optimisation --- src/database/DatabaseManager.java | 6 +- src/database/MigrateDataToNewDatabase.java | 15 ++ src/database/Sqlite.java | 210 ++++++++++++++------- src/gui/AttemptsProgress.java | 22 ++- src/gui/MainGUI.java | 39 ++-- src/main/Main.java | 7 +- src/readsafefile/ReadAttemptsFromXML.java | 112 +++++------ src/readsafefile/SafeFileManager.java | 40 ++-- 8 files changed, 289 insertions(+), 162 deletions(-) create mode 100644 src/database/MigrateDataToNewDatabase.java diff --git a/src/database/DatabaseManager.java b/src/database/DatabaseManager.java index 74095ae..2336434 100644 --- a/src/database/DatabaseManager.java +++ b/src/database/DatabaseManager.java @@ -18,6 +18,9 @@ public class DatabaseManager { createLevelDB.createNewDatabase("levels"); } createLevelDB.createNewTable("levels"); + + createLevelDB.checkColumns("levels"); + } public void migrateData() { @@ -77,7 +80,8 @@ public class DatabaseManager { Integer.parseInt(data.getQualification().get(i)), // Qualifikation data.getVictors().get(i), // Sieger false, - false + false, + "" ); } diff --git a/src/database/MigrateDataToNewDatabase.java b/src/database/MigrateDataToNewDatabase.java new file mode 100644 index 0000000..385ecd2 --- /dev/null +++ b/src/database/MigrateDataToNewDatabase.java @@ -0,0 +1,15 @@ +package database; + +public class MigrateDataToNewDatabase { + + public void migrate() { + + Sqlite sql = new Sqlite("levels"); + sql.queryData("levels"); + + + + } + +} + diff --git a/src/database/Sqlite.java b/src/database/Sqlite.java index f522866..91efa1e 100644 --- a/src/database/Sqlite.java +++ b/src/database/Sqlite.java @@ -2,21 +2,21 @@ package database; import java.io.File; import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import data.FetchData; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; - public class Sqlite { - - private static String url = "jdbc:sqlite:C:\\ExtremeDemonList\\database\\sqlite\\"; + + private static String url = "jdbc:sqlite:C:\\ExtremeDemonList\\database\\sqlite\\"; private static String filename; - + private ArrayList levelname = new ArrayList(); private ArrayList levelID = new ArrayList(); private ArrayList author = new ArrayList(); @@ -29,6 +29,7 @@ public class Sqlite { private ArrayList rawLevelNames = new ArrayList(); private ArrayList attempts = new ArrayList(); private ArrayList locked = new ArrayList(); // New column + private ArrayList pbarr = new ArrayList(); public ArrayList getLevelname() { return levelname; @@ -69,7 +70,7 @@ public class Sqlite { public ArrayList getRawLevelNames() { return rawLevelNames; } - + public ArrayList getAttempts() { return attempts; } @@ -78,34 +79,32 @@ public class Sqlite { return locked; } + public ArrayList getPbarr() { + return pbarr; + } + public Sqlite(String dbname) { // setzt variablen url = "jdbc:sqlite:C:\\ExtremeDemonList\\database\\sqlite\\"; - url += dbname + ".db"; - filename = dbname + ""; - + url += dbname + ".db"; + filename = dbname + ""; } public boolean exists() { // überprüft, ob datenbank existiert - + File file = new File("C:\\ExtremeDemonList\\database\\sqlite\\" + filename + ".db"); - if(file.exists()) { - return true; // ja - } else { - return false; // nein - } + return file.exists(); } - + public void createNewDatabase(String dbname) { // erstellt eine neue datenbank url = "jdbc:sqlite:C:\\ExtremeDemonList\\database\\sqlite\\"; url += dbname + ".db"; filename = dbname; try (Connection conn = DriverManager.getConnection(url)) { - } catch(SQLException e) { + } catch (SQLException e) { e.printStackTrace(); } } - public void createNewTable(String tablename) { String sql = "CREATE TABLE IF NOT EXISTS " + tablename + " (\n" + " id INTEGER PRIMARY KEY,\n" @@ -121,24 +120,24 @@ public class Sqlite { + " records TEXT NOT NULL,\n" + " attempts INTEGER NOT NULL,\n" + " completed BOOLEAN NOT NULL,\n" - + " locked BOOLEAN NOT NULL\n" // Neue Spalte + + " locked BOOLEAN NOT NULL,\n" // Neue Spalte + + " personalBest STRING NOT NULL\n" + ");"; - try (Connection conn = DriverManager.getConnection(url); - Statement stmt = conn.createStatement()) { + Statement stmt = conn.createStatement()) { // create a new table stmt.execute(sql); } catch (SQLException e) { System.out.println(e.getMessage()); } } - - public void insertData(String tablename, Integer attempts, int placement, String levelname, String levelnameRaw, int levelid, String author, String creators, String verifier, String verificationLink, int percenttoqualify, String records, boolean completed, boolean locked) { - String sql = "INSERT INTO " + tablename + " (placement, levelname, levelnameRaw, levelID, author, creators, verifier, verificationLink, percentToQualify, records, attempts, completed, locked) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - + + public void insertData(String tablename, Integer attempts, int placement, String levelname, String levelnameRaw, int levelid, String author, String creators, String verifier, String verificationLink, int percenttoqualify, String records, boolean completed, boolean locked, String pb) { + String sql = "INSERT INTO " + tablename + " (placement, levelname, levelnameRaw, levelID, author, creators, verifier, verificationLink, percentToQualify, records, attempts, completed, locked, personalBest) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + System.out.println("tablename: " + levelname); - + try (Connection conn = DriverManager.getConnection(url); PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setInt(1, placement); @@ -154,47 +153,48 @@ public class Sqlite { pstmt.setInt(11, attempts); pstmt.setBoolean(12, completed); pstmt.setBoolean(13, locked); + pstmt.setString(14, pb); pstmt.executeUpdate(); - + } catch (SQLException e) { - e.printStackTrace(); - } - } - - - - public void queryData(String tablename) { - - String sql = "SELECT levelname, levelNameRaw, levelID, author, creators, verifier, verificationLink, percentToQualify, attempts, completed, records, locked FROM " + tablename; - - try (Connection conn = DriverManager.getConnection(url); - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery(sql)){ - - // loop through the result set - while (rs.next()) { - levelname.add(rs.getString("levelname")); - levelID.add(rs.getInt("levelID") + ""); - author.add(rs.getString("author")); - creators.add(rs.getString("creators")); - verifier.add(rs.getString("verifier")); - verificationLink.add(rs.getString("verificationLink")); - percenttoqualify.add(rs.getInt("percentToQualify") + ""); - completed.add(rs.getBoolean("completed") + ""); - records.add(rs.getString("records")); - rawLevelNames.add(rs.getString("levelNameRaw")); - attempts.add(rs.getInt("attempts")); - locked.add(rs.getBoolean("locked")); // Get the value of the new column - } - - } catch(SQLException e) { e.printStackTrace(); } - } - + + public void queryData(String tablename) { + + String sql = "SELECT * FROM " + tablename; + + try (Connection conn = DriverManager.getConnection(url); + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + + // loop through the result set + while (rs.next()) { + levelname.add(rs.getString("levelname")); + levelID.add(rs.getInt("levelID") + ""); + author.add(rs.getString("author")); + creators.add(rs.getString("creators")); + verifier.add(rs.getString("verifier")); + verificationLink.add(rs.getString("verificationLink")); + percenttoqualify.add(rs.getInt("percentToQualify") + ""); + completed.add(rs.getBoolean("completed") + ""); + records.add(rs.getString("records")); + rawLevelNames.add(rs.getString("levelNameRaw")); + attempts.add(rs.getInt("attempts")); + locked.add(rs.getBoolean("locked")); // Get the value of the new column + pbarr.add(rs.getString("personalBest")); + + } + + } catch (SQLException e) { + e.printStackTrace(); + } + + } + public void sortData(String tablename) throws SQLException { - FetchData data = new FetchData(); + FetchData data = new FetchData(); ArrayList levelnamelocal = new ArrayList(); ArrayList levelIDlocal = new ArrayList(); @@ -208,6 +208,7 @@ public class Sqlite { ArrayList rawLevelNameslocal = new ArrayList(); ArrayList attemptsLocal = new ArrayList(); ArrayList lockedLocal = new ArrayList(); + ArrayList pblocal = new ArrayList(); try (Connection conn = DriverManager.getConnection(url); Statement stmt = conn.createStatement()) { @@ -241,6 +242,7 @@ public class Sqlite { rawLevelNameslocal.add(rs.getString("levelNameRaw")); attemptsLocal.add(rs.getInt("attempts")); lockedLocal.add(rs.getBoolean("locked")); + pblocal.add(rs.getString("personalBest")); } } @@ -251,7 +253,7 @@ public class Sqlite { createNewTable(tablename); // Füge Daten in die neue Tabelle ein - String insert = "INSERT INTO " + tablename + " (placement, levelname, levelnameRaw, levelID, author, creators, verifier, verificationLink, percentToQualify, records, attempts, completed, locked) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + String insert = "INSERT INTO " + tablename + " (placement, levelname, levelnameRaw, levelID, author, creators, verifier, verificationLink, percentToQualify, records, attempts, completed, locked, personalBest) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; try (PreparedStatement pstmt = conn.prepareStatement(insert)) { for (int i = 0; i < levelnamelocal.size(); i++) { pstmt.setInt(1, i + 1); @@ -267,6 +269,7 @@ public class Sqlite { pstmt.setInt(11, attemptsLocal.get(i)); pstmt.setBoolean(12, false); pstmt.setBoolean(13, lockedLocal.get(i)); // Insert value of locked column + pstmt.setString(14, pblocal.get(i)); pstmt.executeUpdate(); } } @@ -275,16 +278,19 @@ public class Sqlite { } } - public void modifyData(String levelname, boolean completedStatus, int attempts, boolean lock) { - String sql = "UPDATE levels SET completed = ?, attempts = ?, locked = ? WHERE levelname = ?"; - + public void modifyData(String levelname, boolean completedStatus, int attempts, boolean lock, String percent) { + String sql = "UPDATE levels SET completed = ?, attempts = ?, locked = ?, personalBest = ? WHERE levelname = ?"; + try (Connection conn = DriverManager.getConnection(url); PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setBoolean(1, completedStatus); pstmt.setInt(2, attempts); pstmt.setBoolean(3, lock); // Korrigierte Reihenfolge - pstmt.setString(4, levelname); // Korrigierte Reihenfolge + pstmt.setString(4, percent); + pstmt.setString(5, levelname); // Korrigierte Reihenfolge + + int rowsUpdated = pstmt.executeUpdate(); if (rowsUpdated > 0) { System.out.println("Data updated successfully."); @@ -296,4 +302,72 @@ public class Sqlite { } } + public void checkColumns(String tablename) { + String[] spalten = {"placement", "levelname", "levelnameRaw", "levelID", "author", "creators", "verifier", "verificationLink", "percentToQualify", "records", "attempts", "completed", "locked", "personalBest"}; + + // Datenbankverbindung + try (Connection connection = DriverManager.getConnection(url)) { + DatabaseMetaData metaData = connection.getMetaData(); + ResultSet resultSet; + + int missing = 0; + + // Schleife über die Spalten + for (String spalte : spalten) { + // Abfrage der Spalteninformationen + resultSet = metaData.getColumns(null, null, tablename, spalte); + + if (!resultSet.next()) { + System.out.println("Spalte " + spalte + " existiert nicht. Eine neue Spalte wird erstellt."); + // Eine neue Spalte erstellen + createNewColumn(tablename, spalte); + missing++; + } + } + + if (missing > 0) { + moveDataToNewDatabase(tablename); + } + + } catch (SQLException e) { + e.printStackTrace(); + } + } + + private void createNewColumn(String tablename, String columnName) { + String sql = "ALTER TABLE " + tablename + " ADD COLUMN " + columnName + " TEXT"; + try (Connection conn = DriverManager.getConnection(url); + Statement stmt = conn.createStatement()) { + stmt.executeUpdate(sql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void moveDataToNewDatabase(String tablename) { + // Neuen Tabellennamen für die Kopie + String newTableName = tablename + "_new"; + + // Erstelle die neue Tabelle + createNewTable(newTableName); + + try (Connection conn = DriverManager.getConnection(url); + Statement stmt = conn.createStatement()) { + + // SQL-Abfrage, um Daten von der alten Tabelle in die neue Tabelle zu kopieren + String copyDataQuery = "INSERT INTO " + newTableName + " SELECT * FROM " + tablename; + + // Führe die SQL-Abfrage aus + stmt.executeUpdate(copyDataQuery); + + // Lösche die alte Tabelle + String dropOldTableQuery = "DROP TABLE IF EXISTS " + tablename; + stmt.executeUpdate(dropOldTableQuery); + + System.out.println("Daten wurden erfolgreich von der alten Tabelle in die neue Tabelle kopiert."); + + } catch (SQLException e) { + e.printStackTrace(); + } + } } diff --git a/src/gui/AttemptsProgress.java b/src/gui/AttemptsProgress.java index f61b118..fd2cdb5 100644 --- a/src/gui/AttemptsProgress.java +++ b/src/gui/AttemptsProgress.java @@ -9,6 +9,7 @@ import javax.swing.JTextArea; import data.FetchData; import data.ManageFiles; +import database.Sqlite; public class AttemptsProgress { @@ -16,18 +17,25 @@ public class AttemptsProgress { JTextArea area = new JTextArea(); JScrollPane scroll = new JScrollPane(area); JFrame main = new JFrame("Updater"); + JLabel zeit = new JLabel("Verstrichene Zeit: "); + + private float timer; + private float finishedtime; + private boolean running = false; public void build() { + running = true; + main.setSize(400, 300); main.setLayout(null); main.setResizable(false); main.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); - JLabel info = new JLabel("Speicherstand wird gelesen..."); - info.setBounds(120, 1, 500, 30); + + zeit.setBounds(90, 1, 500, 30); area.setEditable(false); @@ -47,20 +55,24 @@ public class AttemptsProgress { bar.setMaximum(data.allLevels().size() - 1); bar.setStringPainted(true); - main.add(info); + main.add(zeit); main.add(scroll); main.add(bar); main.setVisible(true); + + area.append("Speicherstand wird eingelesen..."); } - public void update(String level, int attempts, int selection, int index) { + public void update(String level, int attempts, int percent, int index) { bar.setValue(index); - area.append(level + " >>> " + attempts + " Attempts\n"); + area.append(index + "| " + level + " >>> " + attempts + " Attempts, Progress: " + percent + "%\n"); area.setCaretPosition(area.getDocument().getLength()); + timer = 0; } public void close() { + running = false; JOptionPane.showMessageDialog(null, "Attempts wurden erfolgreich übertragen.", "Fertig", JOptionPane.INFORMATION_MESSAGE); main.dispose(); } diff --git a/src/gui/MainGUI.java b/src/gui/MainGUI.java index 2d5e735..e1d1e5e 100644 --- a/src/gui/MainGUI.java +++ b/src/gui/MainGUI.java @@ -75,6 +75,7 @@ public class MainGUI { data.queryData("levels"); gridLayout.setRows(data.getLevelname().size()); + main.setSize(900, 700); main.setLayout(null); @@ -93,8 +94,7 @@ public class MainGUI { info.setBounds(380, 270, 300, 30); currentLevel.setBounds(200, 330, 200, 30); - - levelpanel.setBackground(Color.LIGHT_GRAY); + levelpanel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); levelpanel.setLayout(gridLayout); @@ -172,6 +172,9 @@ public class MainGUI { uncompleted.setMargin(new Insets(0,0,0,0)); uncompleted.setVisible(false); + JLabel percent = new JLabel("0%"); + percent.setBounds(130, 10, 100, 30); + JTextField attempts = new JTextField("0"); attempts.setBounds(500, 17, 70, 18); attempts.setVisible(false); @@ -261,7 +264,7 @@ public class MainGUI { public void actionPerformed(ActionEvent e) { if(!(comp[index] == Boolean.parseBoolean(data.getCompleted().get(index))) || !(attempts.getText().equals(data.getAttempts().get(index) + "")) || !(data.getLocked().get(index) == lockbool[index])) { - data.modifyData(data.getLevelname().get(index), comp[index], Integer.parseInt(attempts.getText()), lockbool[index]); + data.modifyData(data.getLevelname().get(index), comp[index], Integer.parseInt(attempts.getText()), lockbool[index], data.getPbarr().get(index)); } @@ -338,6 +341,17 @@ public class MainGUI { rank.setBounds(10, 10, 40, 30); rank.setName(i + ""); + if(data.getPbarr().get(i) == null) { + percent.setText("0%"); + } else { + percent.setText(data.getPbarr().get(i) + "%"); + } + + if(Boolean.parseBoolean(data.getCompleted().get(i))) { + percent.setText("100%"); + percent.setForeground(Color.decode("#008000")); + } + filtercompleted.setText("nach Geschafft filtern (" + completedcount + ")"); show.addActionListener(new ActionListener() { @@ -417,20 +431,20 @@ public class MainGUI { filtercompleted.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - if (!contents.getBackground().equals(Color.decode("#cbffbf"))) { - levelpanel.remove(contents); - gridLayout.setRows(data.getLevelname().size()); - scroll.repaint(); - scroll.revalidate(); - } - } else if (e.getStateChange() == ItemEvent.DESELECTED) { + boolean isSelected = e.getStateChange() == ItemEvent.SELECTED; + if (isSelected && !contents.getBackground().equals(Color.decode("#cbffbf"))) { + levelpanel.remove(contents); + gridLayout.setRows(data.getLevelname().size()); + scroll.repaint(); + scroll.revalidate(); + } else if (!isSelected) { levelpanel.add(contents, 0); } levelpanel.repaint(); levelpanel.revalidate(); } - }); + }); + contents.add(levelname); contents.add(rank); @@ -441,6 +455,7 @@ public class MainGUI { contents.add(attempts); contents.add(sperren); contents.add(lockind); + contents.add(percent); levelpanel.add(contents); } diff --git a/src/main/Main.java b/src/main/Main.java index 7528468..f831459 100644 --- a/src/main/Main.java +++ b/src/main/Main.java @@ -6,6 +6,7 @@ import java.util.zip.DataFormatException; import data.FetchData; import data.ManageFiles; import database.DatabaseManager; +import database.Sqlite; import filestructure.CreateFileStructure; import gui.LoadMenu; import preload.PreChecks; @@ -38,6 +39,9 @@ public class Main { load.updateBar("Daten werden überprüft..."); + Sqlite sql = new Sqlite("levels"); + sql.checkColumns("levels"); + PreChecks check = new PreChecks(); check.check(); @@ -47,8 +51,7 @@ public class Main { manager.compareArrays(settings.isOldsystem()); load.updateBar("Datenbank wird gestartet..."); - - DatabaseManager data = new DatabaseManager(); + DatabaseManager data = new DatabaseManager(); data.manage(); load.updateBar("Ladevorgang abgeschlossen"); diff --git a/src/readsafefile/ReadAttemptsFromXML.java b/src/readsafefile/ReadAttemptsFromXML.java index ad6c3e7..708cac1 100644 --- a/src/readsafefile/ReadAttemptsFromXML.java +++ b/src/readsafefile/ReadAttemptsFromXML.java @@ -1,6 +1,8 @@ package readsafefile; import java.io.File; +import java.util.HashMap; +import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -10,64 +12,66 @@ import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class ReadAttemptsFromXML { - - public String getAttempts(String levelID) { - String atts = "0"; - try { - // Pfad zur XML-Datei - File xmlFile = new File("C:\\ExtremeDemonList\\userdata\\CCGameManager.dat.xml"); + + public Map attempts = new HashMap(); + public Map newbestMap = new HashMap<>(); + + public void readAttempts() { + try { + File xmlFile = new File("C:\\ExtremeDemonList\\userdata\\CCGameManager.dat.xml"); - // Erstellen des Dokument-Builders - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); - // Parsen der XML-Datei, um ein Document-Objekt zu erhalten - Document doc = dBuilder.parse(xmlFile); + Document doc = dBuilder.parse(xmlFile); - // Normalisieren des Documents - doc.getDocumentElement().normalize(); + doc.getDocumentElement().normalize(); - // Die NodeList der Elemente erhalten - NodeList kList = doc.getElementsByTagName("k"); + NodeList kList = doc.getElementsByTagName("k"); - // Durchlaufen der NodeList - for (int i = 0; i < kList.getLength(); i++) { - // Aktuelles Node - Element kElement = (Element) kList.item(i); + Map tempAttempts = new HashMap<>(); + - // Prüfen, ob der Wert des Elements eine Level-ID ist - String currentLevelID = kElement.getTextContent(); - - if (currentLevelID.equals(levelID)) { - // Das übergeordnete Element finden - Element dElement = (Element) kElement.getNextSibling(); - - // Überprüfen, ob das nächste Element ein Element ist - while (dElement != null && !dElement.getNodeName().equals("d")) { - dElement = (Element) dElement.getNextSibling(); - } - - // Überprüfen, ob das Element gefunden wurde - if (dElement != null) { - // Den Key "k1" im Element finden - NodeList dChildren = dElement.getChildNodes(); - for (int j = 0; j < dChildren.getLength(); j++) { - if (dChildren.item(j).getNodeName().equals("k")) { - Element kChild = (Element) dChildren.item(j); - if (kChild.getTextContent().equals("k18")) { - // Den Wert der Attempts erhalten - atts = dChildren.item(j + 1).getTextContent(); - System.out.println("Attempts des Levels " + levelID + ": " + atts); - return atts; - } - } - } - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - return atts; - } + for (int i = 0; i < kList.getLength(); i++) { + Element kElement = (Element) kList.item(i); + String currentLevelID = kElement.getTextContent(); + + Element dElement = (Element) kElement.getNextSibling(); + + while (dElement != null && !dElement.getNodeName().equals("d")) { + dElement = (Element) dElement.getNextSibling(); + } + + if (dElement != null) { + NodeList dChildren = dElement.getChildNodes(); + String attemptsValue = null; + String percentValue = null; + + for (int j = 0; j < dChildren.getLength(); j++) { + if (dChildren.item(j).getNodeName().equals("k")) { + Element kChild = (Element) dChildren.item(j); + + if (kChild.getTextContent().equals("k18")) { + attemptsValue = dChildren.item(j + 1).getTextContent(); + } + + if (kChild.getTextContent().equals("k19")) { + percentValue = dChildren.item(j + 1).getTextContent(); + } + } + } + + if (attemptsValue != null && percentValue != null) { + tempAttempts.put(currentLevelID, attemptsValue ); // + "," + percentValue + newbestMap.put(currentLevelID, percentValue); + } + } + } + + // Füge die Daten aus der temporären Map in die attempts-Map ein + attempts.putAll(tempAttempts); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/readsafefile/SafeFileManager.java b/src/readsafefile/SafeFileManager.java index 0d72707..e7bd56f 100644 --- a/src/readsafefile/SafeFileManager.java +++ b/src/readsafefile/SafeFileManager.java @@ -9,8 +9,7 @@ import gui.AttemptsProgress; public class SafeFileManager { public void DecryptSafeFile() throws IOException { - DecryptXOR dec = new DecryptXOR(); - dec.decryptAndWriteFiles(); + DecryptXOR.decryptAndWriteFiles(); } public void ReadIndexAttempts() throws IOException { @@ -22,37 +21,38 @@ public class SafeFileManager { @Override public void run() { - // TODO Auto-generated method stub - - - Sqlite database = new Sqlite("levels"); database.queryData("levels"); FetchData fetch = new FetchData(); try { fetch.getGithubString(); } catch (IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } - ReadAttemptsFromXML read = new ReadAttemptsFromXML(); + read.readAttempts(); + + String attempts; - - for(int i = 0; i < fetch.allLevels().size(); i++) { - - attempts = read.getAttempts(database.getLevelID().get(i)); - - prog.update(database.getLevelname().get(i), Integer.parseInt(attempts), 1, i); - if(!database.getLocked().get(i)) { - database.modifyData(database.getLevelname().get(i), Boolean.parseBoolean(database.getCompleted().get(i)), Integer.parseInt(attempts), database.getLocked().get(i)); + String percent; + for(int i = 0; i < database.getLevelID().size(); i++) { + attempts = read.attempts.get(database.getLevelID().get(i)); + percent = read.newbestMap.get(database.getLevelID().get(i)); + if(attempts == null) { + attempts = 0 + ""; } - } - } - - }); + if(percent == null) { + percent = 0 + ""; + } + prog.update(database.getLevelname().get(i), Integer.parseInt(attempts), Integer.parseInt(percent), i); + if(!database.getLocked().get(i)) { + database.modifyData(database.getLevelname().get(i), Boolean.parseBoolean(database.getCompleted().get(i)), Integer.parseInt(attempts), database.getLocked().get(i), percent); + } + } + } + }); thread.start(); } }