From a80723c695c263587d4ce041781bfbd9bf4d2b5b Mon Sep 17 00:00:00 2001 From: potzplitz <127513690+potzplitz@users.noreply.github.com> Date: Sat, 11 May 2024 22:39:19 +0200 Subject: [PATCH] get level length --- pom.xml | 20 +++------ src/data/DownloadLevels.java | 4 +- src/data/RequestLevelLength.java | 51 ----------------------- src/database/Sqlite.java | 6 ++- src/gui/LoadingStatus.java | 4 +- src/gui/MainGUI.java | 37 ++++++++++++---- src/module-info.java | 1 - src/readsafefile/ReadAttemptsFromXML.java | 18 ++++---- src/readsafefile/SafeFileManager.java | 39 +++++++++-------- 9 files changed, 73 insertions(+), 107 deletions(-) delete mode 100644 src/data/RequestLevelLength.java diff --git a/pom.xml b/pom.xml index f4346ee..d05d97a 100644 --- a/pom.xml +++ b/pom.xml @@ -17,21 +17,11 @@ json 20231013 - - com.google.code.gson - gson - 2.8.9 - commons-io commons-io 2.7 - - com.formdev - flatlaf - 3.4 - com.alex1304.jdash jdash-client @@ -57,15 +47,15 @@ commons-codec 1.15 - - com.google.guava - guava - 31.0.1-jre - org.kohsuke github-api 1.127 + + + io.qtjambi + qtjambi + 6.7.0 diff --git a/src/data/DownloadLevels.java b/src/data/DownloadLevels.java index 307cab7..da55a73 100644 --- a/src/data/DownloadLevels.java +++ b/src/data/DownloadLevels.java @@ -14,6 +14,7 @@ import javax.swing.JTextArea; import api.GetApiData; import gui.MainGUI; +import readsafefile.SafeFileManager; import settingsfunctions.LoadSettings; import settingsfunctions.MigrateData; @@ -98,9 +99,6 @@ public class DownloadLevels { MigrateData migrate = new MigrateData(); migrate.migrateData(); - RequestLevelLength req = new RequestLevelLength(); - req.request(); - try { gui.build(); } catch (IOException e) { diff --git a/src/data/RequestLevelLength.java b/src/data/RequestLevelLength.java deleted file mode 100644 index 0a84a87..0000000 --- a/src/data/RequestLevelLength.java +++ /dev/null @@ -1,51 +0,0 @@ -package data; - -import api.GetApiData; -import database.Sqlite; -import gui.LoadingStatus; - -public class RequestLevelLength { - - GetApiData data = new GetApiData(); - FetchData fetch = new FetchData(); - Sqlite sql = new Sqlite("levels"); - LoadingStatus status = new LoadingStatus(); - - public void request() { - - sql.queryData("levels"); - - status.initialize(); - status.changeState("API wird auf Levellänge abgefragt..."); - - Thread thread = new Thread(new Runnable( ) { - - - @Override - public void run() { - - for(int i = 0; i < ManageFiles.getMissinglevels().size(); i++) { - status.update(sql.getLevelname().get(sql.getRawLevelNames().indexOf(sql.getRawLevelNames().get(i))), i); - - sql.modifyData(sql.getLevelname().get(sql.getRawLevelNames().indexOf(sql.getRawLevelNames().get(i))), - Boolean.parseBoolean(sql.getCompleted().get(i).toString()), - sql.getAttempts().get(i).intValue(), - sql.getLocked().get(i).booleanValue(), - sql.getPbarr().get(i), - "" + data.getLevelLength(Integer.parseInt(sql.getLevelID().get(sql.getRawLevelNames().indexOf(ManageFiles.getMissinglevels().get(i))))) - ); - try { - Thread.sleep(200); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - }); - - thread.start(); - - - } - -} diff --git a/src/database/Sqlite.java b/src/database/Sqlite.java index 2ee3beb..d2e8e83 100644 --- a/src/database/Sqlite.java +++ b/src/database/Sqlite.java @@ -214,7 +214,7 @@ public class Sqlite { status = LoadingStatus.getInstance(); // Holen der Singleton-Instanz status.initialize(); - status.changeState("Datenbank wird sortiert..."); + ArrayList levelnamelocal = new ArrayList(); ArrayList levelIDlocal = new ArrayList(); @@ -248,6 +248,8 @@ status = LoadingStatus.getInstance(); // Holen der Singleton-Instanz int index = 0; + status.changeState("Datenbank wird sortiert...", maxPlacement); + // Durchlaufen Sie die Platzierungen und holen Sie die Daten entsprechend for (int i = 1; i <= maxPlacement; i++) { String sql = "SELECT * FROM " + tablename + " WHERE placement = " + i; @@ -278,7 +280,7 @@ status = LoadingStatus.getInstance(); // Holen der Singleton-Instanz // Erstelle eine neue Tabelle mit dem ursprünglichen Namen createNewTable(tablename); - status.changeState("Daten werden in neue Tabelle migriert..."); + status.changeState("Daten werden in neue Tabelle migriert...", levelnamelocal.size()); // 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, personalBest, levelLength) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; diff --git a/src/gui/LoadingStatus.java b/src/gui/LoadingStatus.java index 32b2512..08259a3 100644 --- a/src/gui/LoadingStatus.java +++ b/src/gui/LoadingStatus.java @@ -70,8 +70,8 @@ public class LoadingStatus { main.dispose(); } - public void changeState(String state) { - bar.setMaximum(data.allLevels().size()); + public void changeState(String state, int arrsize) { + bar.setMaximum(arrsize); bar.setValue(0); info.setText(state); area.setText(""); diff --git a/src/gui/MainGUI.java b/src/gui/MainGUI.java index b6d2199..5ccfafd 100644 --- a/src/gui/MainGUI.java +++ b/src/gui/MainGUI.java @@ -36,6 +36,7 @@ import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.SwingConstants; +import api.GetApiData; import data.SortData; import database.Sqlite; @@ -59,6 +60,7 @@ public class MainGUI { public JLabel idshow = new JLabel("ID"); public JLabel qualify = new JLabel("Qualifikation"); public JLabel attemptslabel = new JLabel("Attempts"); + public JLabel lengthLabel = new JLabel("Länge"); public JCheckBox filtercompleted = new JCheckBox("Nach geschafft filtern"); public Button copyid = new Button("Level ID kopieren"); public Button showinfos = new Button("Mehr Infos anzeigen"); @@ -83,6 +85,8 @@ public class MainGUI { Sqlite data = new Sqlite("levels"); data.queryData("levels"); + GetApiData api = new GetApiData(); + //sort.sort(); gridLayout.setRows(data.getLevelname().size()); @@ -117,19 +121,21 @@ public class MainGUI { idshow.setBounds(10, 110, 164, 30); - copyid.setBounds(10, 190, 164, 30); + copyid.setBounds(10, 210, 164, 30); qualify.setBounds(10, 130, 164, 30); attemptslabel.setBounds(10, 150, 164, 30); + lengthLabel.setBounds(10, 170, 164, 30); + settings.setBounds(1, 1, 60, 60); settings.setFont(settings.getFont().deriveFont(30f)); settings.setBackground(Color.LIGHT_GRAY); - showinfos.setBounds(12, 237, 160, 30); + showinfos.setBounds(12, 257, 160, 30); - showcalc.setBounds(12, 283, 160, 30); + showcalc.setBounds(12, 303, 160, 30); startgame.setBounds(12, 560, 160, 30); @@ -143,7 +149,7 @@ public class MainGUI { elements.infopanel().setVisible(false); separator.setBounds(0, 30, 300, 30); - separator2.setBounds(0 ,160, 400, 30); + separator2.setBounds(0 ,180, 400, 30); creator.setBounds(10, 50, 164, 30); @@ -310,7 +316,7 @@ public class MainGUI { contents.addMouseListener(new MouseListener() { @Override - public void mouseClicked(MouseEvent e) { + public void mouseClicked(MouseEvent e) { showinfos.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -328,14 +334,30 @@ public class MainGUI { attemptslabel.setText("Attempts: " + data.getAttempts().get(index)); level.setVerticalAlignment(SwingConstants.CENTER); + String levellength = data.getLevelLength().get(index); + lengthLabel.setText("Länge: lädt..."); + + if(data.getLevelLength().get(index).equals("N/A")) { + if(req == 0) { + levellength = api.getLevelLength(Integer.parseInt(data.getLevelID().get(index))); + data.modifyData(data.getLevelname().get(index), comp[index], Integer.parseInt(attempts.getText()), lockbool[index], data.getPbarr().get(index), levellength); + System.out.println("request"); + } + } + + lengthLabel.setText("Länge: " + levellength); + copyid.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { StringSelection stringSelection = new StringSelection(data.getLevelID().get(index)); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); - clipboard.setContents(stringSelection, null); + clipboard.setContents(stringSelection, null); + } - }); + + }); + } @Override public void mousePressed(MouseEvent e) { @@ -556,6 +578,7 @@ public class MainGUI { elements.infopanel().add(showinfos); elements.infopanel().add(attemptslabel); elements.infopanel().add(showcalc); + elements.infopanel().add(lengthLabel); // elements.infopanel().add(startgame); main.add(search); diff --git a/src/module-info.java b/src/module-info.java index 698127d..b6e02a2 100644 --- a/src/module-info.java +++ b/src/module-info.java @@ -3,7 +3,6 @@ requires org.json; requires org.apache.commons.io; requires java.datatransfer; - requires com.formdev.flatlaf; requires jdash.client; requires jdash.common; requires jlayer; diff --git a/src/readsafefile/ReadAttemptsFromXML.java b/src/readsafefile/ReadAttemptsFromXML.java index 8e0592d..8986e3f 100644 --- a/src/readsafefile/ReadAttemptsFromXML.java +++ b/src/readsafefile/ReadAttemptsFromXML.java @@ -17,6 +17,11 @@ public class ReadAttemptsFromXML { public Map newbestMap = new HashMap<>(); public Map lengthMap = new HashMap<>(); + public Map getLengthMap() { + System.out.println("size getLengthMap in function: " + lengthMap.size()); + return lengthMap; + } + public void readAttempts() { try { File xmlFile = new File("C:\\ExtremeDemonList\\userdata\\CCGameManager.dat.xml"); @@ -66,20 +71,15 @@ public class ReadAttemptsFromXML { } } } - - - if(lengthValue != null) { - lengthMap.put(currentLevelID, lengthValue); - } - - if (attemptsValue != null && percentValue != null) { + + if (attemptsValue != null && percentValue != null && lengthValue != null) { tempAttempts.put(currentLevelID, attemptsValue ); // + "," + percentValue newbestMap.put(currentLevelID, percentValue); - + lengthMap.put(currentLevelID, lengthValue); } } } - + System.out.println("lengthmap size: " + lengthMap.size()); attempts.putAll(tempAttempts); } catch (Exception e) { e.printStackTrace(); diff --git a/src/readsafefile/SafeFileManager.java b/src/readsafefile/SafeFileManager.java index 7ab9b82..8116da6 100644 --- a/src/readsafefile/SafeFileManager.java +++ b/src/readsafefile/SafeFileManager.java @@ -1,14 +1,21 @@ package readsafefile; import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; import data.FetchData; +import data.ManageFiles; import database.Sqlite; import gui.AttemptsProgress; public class SafeFileManager { - private String[] lengthArr = {"Tiny", "Short", "Medium", "Long", "XL", "Platformer", "N/A"}; + private String[] lengthArr = {"TINY", "SHORT", "MEDIUM", "LONG", "XL", "PLATFORMER", "N/A"}; + public Map lengthComp = new HashMap<>(); + private Sqlite database = new Sqlite("levels"); + private ReadAttemptsFromXML read = new ReadAttemptsFromXML(); public void DecryptSafeFile() throws IOException { DecryptXOR.decryptAndWriteFiles(); @@ -16,14 +23,11 @@ public class SafeFileManager { public void ReadIndexAttempts() throws IOException { + read.readAttempts(); + AttemptsProgress prog = new AttemptsProgress(); prog.build(); - Thread thread = new Thread(new Runnable() { - - @Override - public void run() { - Sqlite database = new Sqlite("levels"); database.queryData("levels"); FetchData fetch = new FetchData(); try { @@ -32,20 +36,19 @@ public class SafeFileManager { e.printStackTrace(); } - ReadAttemptsFromXML read = new ReadAttemptsFromXML(); + System.out.println("size lengthMap: " + read.getLengthMap().size()); + + lengthComp.putAll(read.lengthMap); + - read.readAttempts(); String attempts; String percent; + String length; 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(read.lengthMap.get(database.getLevelID().get(i)) != null) { - System.out.println(lengthArr[Integer.parseInt(read.lengthMap.get(database.getLevelID().get(i)))]); - } - + length = read.lengthMap.get(database.getLevelID().get(i)); if(attempts == null) { attempts = 0 + ""; @@ -53,14 +56,16 @@ public class SafeFileManager { if(percent == null) { percent = 0 + ""; } + if(length == null) { + length = 6 + ""; + } + 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, database.getLevelLength().get(i)); + database.modifyData(database.getLevelname().get(i), Boolean.parseBoolean(database.getCompleted().get(i)), Integer.parseInt(attempts), database.getLocked().get(i), percent, lengthArr[Integer.parseInt(length)]); } } prog.close(); - } - }); - thread.start(); } + }