diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..57bca72 --- /dev/null +++ b/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..8c9809a --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + ExtremeDemonList + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8c9943d --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/bin/data/DownloadLevels.class b/bin/data/DownloadLevels.class new file mode 100644 index 0000000..6d09a47 Binary files /dev/null and b/bin/data/DownloadLevels.class differ diff --git a/bin/data/FetchData.class b/bin/data/FetchData.class new file mode 100644 index 0000000..88c292d Binary files /dev/null and b/bin/data/FetchData.class differ diff --git a/bin/data/ManageFiles.class b/bin/data/ManageFiles.class new file mode 100644 index 0000000..fcc7ce5 Binary files /dev/null and b/bin/data/ManageFiles.class differ diff --git a/bin/filestructure/CreateFileStructure.class b/bin/filestructure/CreateFileStructure.class new file mode 100644 index 0000000..d45e39d Binary files /dev/null and b/bin/filestructure/CreateFileStructure.class differ diff --git a/bin/main/Main.class b/bin/main/Main.class new file mode 100644 index 0000000..bfc1924 Binary files /dev/null and b/bin/main/Main.class differ diff --git a/bin/module-info.class b/bin/module-info.class new file mode 100644 index 0000000..3ec61ff Binary files /dev/null and b/bin/module-info.class differ diff --git a/src/data/DownloadLevels.java b/src/data/DownloadLevels.java new file mode 100644 index 0000000..63b9759 --- /dev/null +++ b/src/data/DownloadLevels.java @@ -0,0 +1,41 @@ +package data; + +import java.io.BufferedInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; + +public class DownloadLevels { + + private ManageFiles data = new ManageFiles(); + + + public void download() throws IOException { + + String fileURL; + + for(int i = 0; i < data.missingLevels().size(); i++) { + + System.out.println("downloading " + data.missingLevels().get(i)); + fileURL = "https://raw.githubusercontent.com/All-Rated-Extreme-Demon-List/AREDL/main/data/" + data.missingLevels().get(i) + ".json"; + + try (BufferedInputStream in = new BufferedInputStream(new URL(fileURL).openStream()); + + FileOutputStream fileOutputStream = new FileOutputStream("C:\\ExtremeDemonList\\levels\\" + data.missingLevels().get(i) + ".json")) { + + byte dataBuffer[] = new byte[1024]; + int bytesRead; + + while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) { + + fileOutputStream.write(dataBuffer, 0, bytesRead); + + } + } catch (IOException e) { + // Handle exceptions + e.printStackTrace(); + } + } + } + +} diff --git a/src/data/FetchData.java b/src/data/FetchData.java new file mode 100644 index 0000000..0be79dc --- /dev/null +++ b/src/data/FetchData.java @@ -0,0 +1,42 @@ +package data; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.ArrayList; + +public class FetchData { + + private ArrayList levels = new ArrayList(); + + public void getGithubString() throws IOException { + String link = "https://raw.githubusercontent.com/All-Rated-Extreme-Demon-List/AREDL/main/data/_list.json"; + + + URL url = new URL(link); + + try (BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()))) { + + String line; + StringBuilder sb = new StringBuilder(); + + while ((line = in.readLine()) != null) { + + String trimmedLine = line.trim().replace(",", "").replace("\"", ""); + + if (!trimmedLine.equals("[") && !trimmedLine.equals("]")) { + levels.add(trimmedLine); + } + } + } + } + + public ArrayList allLevels() { + return levels; + } + +} + + + diff --git a/src/data/ManageFiles.java b/src/data/ManageFiles.java new file mode 100644 index 0000000..3e430fe --- /dev/null +++ b/src/data/ManageFiles.java @@ -0,0 +1,38 @@ +package data; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; + +public class ManageFiles { + + private FetchData fetch = new FetchData(); + private static ArrayList missinglevels = new ArrayList(); // fehlende noch zu herunterladende level + + + private void feedMissingLevelsArray(String levelname) { // fehlende level werden missinglevels hinzugefügt + missinglevels.add(levelname); + } + + + public void compareArrays() throws IOException { // downloadedlevels und onlinelevels werden verglichen und die fehlenden level in missinglevels gepackt + + fetch.getGithubString(); + + for(int i = 0; i < fetch.allLevels().size(); i++) { + + File file = new File("C:\\ExtremeDemonList\\levels\\" + fetch.allLevels().get(i) + ".json"); + + if(!file.exists()) { // wenn der level lokal nicht vorhanden ist, wird er als fehlend gemeldet. + System.out.println(fetch.allLevels().get(i) + " fehlt"); + feedMissingLevelsArray(fetch.allLevels().get(i)); + } + } + + } + + public ArrayList missingLevels() { // missinglevels wird zurückgegeben + return missinglevels; + } + +} diff --git a/src/filestructure/CreateFileStructure.java b/src/filestructure/CreateFileStructure.java new file mode 100644 index 0000000..32554dd --- /dev/null +++ b/src/filestructure/CreateFileStructure.java @@ -0,0 +1,17 @@ +package filestructure; + +import java.io.File; + +public class CreateFileStructure { + + public void create() { + + File file = new File("C:\\ExtremeDemonList\\levels"); + + if(!file.isDirectory()) { + file.mkdir(); + } + + } + +} diff --git a/src/main/Main.java b/src/main/Main.java new file mode 100644 index 0000000..48b327c --- /dev/null +++ b/src/main/Main.java @@ -0,0 +1,29 @@ +package main; + +import java.io.IOException; + +import data.DownloadLevels; +import data.FetchData; +import data.ManageFiles; +import filestructure.CreateFileStructure; + +public class Main { + + public static void main(String[] args) throws IOException { + + CreateFileStructure struct = new CreateFileStructure(); + struct.create(); + + FetchData fetch = new FetchData(); + fetch.getGithubString(); + + ManageFiles manager = new ManageFiles(); + manager.compareArrays(); + + DownloadLevels download = new DownloadLevels(); + download.download(); + + + } + +} diff --git a/src/module-info.java b/src/module-info.java new file mode 100644 index 0000000..8b64736 --- /dev/null +++ b/src/module-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * + */ +module ExtremeDemonList { +} \ No newline at end of file