From 4265975d88c3aefd8a798d76074fadc4e3d89843 Mon Sep 17 00:00:00 2001 From: anushkasharma Date: Sat, 19 Nov 2022 23:56:38 -0500 Subject: [PATCH 1/7] Uninstall method in uninstaller class currently should only unload and uninstall one plugin as of now; removing plugin dependencies still needs to be implemented. --- .../uninstallUseCase/UninstallBoundary.java | 15 ++++++++ .../uninstallUseCase/UninstallInput.java | 10 ++++++ .../client/uninstallUseCase/Uninstaller.java | 35 +++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java create mode 100644 src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java create mode 100644 src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java new file mode 100644 index 00000000..973812f1 --- /dev/null +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java @@ -0,0 +1,15 @@ +package org.hydev.mcpm.client.uninstallUseCase; + +import org.hydev.mcpm.client.injector.PluginNotFoundException; + +/** + * Uninstalls a plugin + */ +public interface UninstallBoundary { + /** + * Uninstalls plugin based on given name + * @param name given name of plugin + */ + + public void uninstall(String name) throws PluginNotFoundException; +} diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java new file mode 100644 index 00000000..2b2f5853 --- /dev/null +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java @@ -0,0 +1,10 @@ +package org.hydev.mcpm.client.uninstallUseCase; + +/** + * Uninstall Plugin input + * + * @param name Plugin name + */ + +public record UninstallInput(String name) { +} diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java new file mode 100644 index 00000000..d3f99c27 --- /dev/null +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java @@ -0,0 +1,35 @@ +package org.hydev.mcpm.client.uninstallUseCase; +import java.io.File; +import java.util.Arrays; +import org.hydev.mcpm.client.injector.PluginLoader; +import org.hydev.mcpm.client.injector.PluginNotFoundException; + + +public class Uninstaller implements UninstallBoundary{ + private boolean remove_depen; + + public void uninstall(String name) throws PluginNotFoundException { + PluginLoader pil = new PluginLoader(); + pil.unloadPlugin(name); + + // Find plugin file + // could be useful for removing dependencies (?) + var plugins_folder = new File("plugins"); + var plugins = Arrays.stream((plugins_folder.listFiles())) + .filter(plugin -> plugin.getName().endsWith(name+".jar")); + + File file = new File(plugins.toArray()[0].toString()); + + if (file.delete()) { + System.out.println("File deleted successfully"); + } else { + System.out.println("Failed to delete the file"); + } + + + if (remove_depen){ + + } + + } +} From 831f5c4b3dce3c908a3543bfa5823cc9c4700a43 Mon Sep 17 00:00:00 2001 From: anushkasharma Date: Sun, 20 Nov 2022 08:49:22 -0500 Subject: [PATCH 2/7] Commit attempt 2 --- .../org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java index d3f99c27..067e0645 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java @@ -27,9 +27,9 @@ public void uninstall(String name) throws PluginNotFoundException { } - if (remove_depen){ - - } +// if (remove_depen){ +// +// } } } From dc6ca115bb4fa2b414d56d4ad618a6a89158a1ba Mon Sep 17 00:00:00 2001 From: anushkasharma Date: Sun, 20 Nov 2022 08:53:35 -0500 Subject: [PATCH 3/7] Commit attempt 3 --- .../hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java | 2 +- .../org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java index 973812f1..e764471c 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java @@ -8,7 +8,7 @@ public interface UninstallBoundary { /** * Uninstalls plugin based on given name - * @param name given name of plugin + * @param name given name of the plugin */ public void uninstall(String name) throws PluginNotFoundException; diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java index 2b2f5853..5c5a2417 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java @@ -7,4 +7,5 @@ */ public record UninstallInput(String name) { + // } From 11ccd69fa9e0c3a6d4c2cb43c24b7e9feefac4f3 Mon Sep 17 00:00:00 2001 From: anushkasharma Date: Sun, 20 Nov 2022 08:58:38 -0500 Subject: [PATCH 4/7] Commit attempt 4 --- .../hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java | 2 +- .../hydev/mcpm/client/uninstallUseCase/UninstallInput.java | 4 +--- .../org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java | 1 + 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java index e764471c..c17c7f96 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java @@ -7,7 +7,7 @@ */ public interface UninstallBoundary { /** - * Uninstalls plugin based on given name + * Uninstalls plugin based on its given name * @param name given name of the plugin */ diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java index 5c5a2417..07a0ad81 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java @@ -6,6 +6,4 @@ * @param name Plugin name */ -public record UninstallInput(String name) { - // -} + diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java index 067e0645..c5abaf93 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java @@ -8,6 +8,7 @@ public class Uninstaller implements UninstallBoundary{ private boolean remove_depen; + public void uninstall(String name) throws PluginNotFoundException { PluginLoader pil = new PluginLoader(); pil.unloadPlugin(name); From 1514bd5d41b86b68649fcf217d3faed1840ea53f Mon Sep 17 00:00:00 2001 From: anushkasharma Date: Sun, 20 Nov 2022 17:38:02 -0500 Subject: [PATCH 5/7] Commit attempt 5 --- .../org/hydev/mcpm/client/Downloader.java | 55 +++++++++++++++++-- .../java/org/hydev/mcpm/client/Launcher.java | 16 ++++++ .../mcpm/client/interaction/ProgressBar.java | 2 +- 3 files changed, 67 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/hydev/mcpm/client/Downloader.java b/src/main/java/org/hydev/mcpm/client/Downloader.java index a084d3e5..92dccfc9 100644 --- a/src/main/java/org/hydev/mcpm/client/Downloader.java +++ b/src/main/java/org/hydev/mcpm/client/Downloader.java @@ -42,19 +42,22 @@ public class Downloader */ public void downloadFile(String url, File to) { + // TODO: Implement this + //throw new UnsupportedOperationException("TODO"); try (FileOutputStream fileos = new FileOutputStream(to)) { URL link = new URL(url); HttpURLConnection http = (HttpURLConnection) link.openConnection(); - long fileSize = http.getContentLengthLong(); + long fileSize = (long) http.getContentLengthLong(); BufferedInputStream in = new BufferedInputStream(http.getInputStream()); BufferedOutputStream bout = new BufferedOutputStream(fileos, 1024); byte[] buffer = new byte[1024]; - int read; + int read = 0; var row = new ProgressRow(fileSize) - .desc(format("Download %s", allRows.size())) + .unit("Byte") + .desc(format("Downloaded", allRows.size())) .descLen(30); bar.appendBar(row); allRows.add(row); @@ -64,6 +67,7 @@ public void downloadFile(String url, File to) } bout.close(); in.close(); + System.out.println("\nDownload completed"); } catch (IOException ex) { ex.printStackTrace(); @@ -77,7 +81,7 @@ public void downloadFile(String url, File to) * * @param urls Mapping of remote urls to local file paths */ - public void downloadFiles(Map urls) + public void downloadFiles(Map urls, boolean progress, int threads) { try (ExecutorService executor = Executors.newFixedThreadPool(threads)) { @@ -125,6 +129,36 @@ public Downloader threads(int threads) return this; } + class Processor implements Runnable { + private List files; + private Map urls; + private int id; + + /** + * Download multiple files from the internet to local storage through HTTP requests + *

+ * The implementation must use multithreading + * + * @param files List of remote urls + * @param urls Mapping of remote urls to local file paths + * @param id id for each file + */ + public Processor(int id, Map urls, List files) { + this.id = id; + this.urls = urls; + this.files = files; + } + + // Process downloading each file from multithreading + @Override + public void run() { + String url = files.get(id); + File to = urls.get(url); + downloadFile(url, to); + } + } + + /** * Displays a demo for. * @@ -136,10 +170,21 @@ public static void main(String[] args) throws IOException { File out = new File("./Introduction_to_Algorithms_Third_Edition.pdf"); String link1 = "https://www.iusb.edu/students/academic-success-programs/academic-centers-for-excellence/docs/Basic%20Math%20Review%20Card.pdf"; File out1 = new File("./Math.pdf"); + String link2 = "https://ouopentextbooks.org/mathematics/files/2015/07/1503.pdf"; + File out2 = new File("./1503"); + String link3 = "https://faculty.math.illinois.edu/~aydin/math220/lecturenotes/m220_Sec1_4.pdf"; + File out3 = new File("./m220_Sec1_4"); + String link4 = "https://ocw.mit.edu/ans7870/9/9.00SC/MIT9_00SCF11_text.pdf"; + File out4 = new File("./MIT9_00SCF11_text"); + Downloader downloader = new Downloader(); Map urls = new HashMap<>(); urls.put(link, out); urls.put(link1, out1); - downloader.downloadFiles(urls); + urls.put(link2, out2); + urls.put(link3, out3); + urls.put(link4, out4); + downloader.downloadFiles(urls, true, 2); + } } diff --git a/src/main/java/org/hydev/mcpm/client/Launcher.java b/src/main/java/org/hydev/mcpm/client/Launcher.java index ba630b94..905963c0 100644 --- a/src/main/java/org/hydev/mcpm/client/Launcher.java +++ b/src/main/java/org/hydev/mcpm/client/Launcher.java @@ -1,5 +1,9 @@ package org.hydev.mcpm.client; +import java.io.File; +import java.util.HashMap; +import java.util.Map; + /** * TODO: Write a description for this class! * @@ -11,5 +15,17 @@ public class Launcher public static void main(String[] args) { System.out.println("Meow"); + String link1 = "https://sd.blackball.lv/library/Introduction_to_Algorithms_Third_Edition_(2009).pdf"; + File file1 = new File("/Users/anushkasharma/Documents/uni/Introduction_to_Algorithms_Third_Edition.pdf"); + String link2 = "https://www.iusb.edu/students/academic-success-programs/academic-centers-for-excellence/docs/Basic%20Math%20Review%20Card.pdf"; + File file2 = new File("/Users/anushkasharma/Documents/uni/Basic Math Review Card.pdf"); + + + Downloader downloader = new Downloader(); + Map urls = new HashMap<>(); + urls.put(link1, file1); + urls.put(link2, file2); + downloader.downloadFiles(urls, true, 2); + } } diff --git a/src/main/java/org/hydev/mcpm/client/interaction/ProgressBar.java b/src/main/java/org/hydev/mcpm/client/interaction/ProgressBar.java index 1f863043..e96a2dad 100644 --- a/src/main/java/org/hydev/mcpm/client/interaction/ProgressBar.java +++ b/src/main/java/org/hydev/mcpm/client/interaction/ProgressBar.java @@ -113,7 +113,7 @@ private void forceUpdate() if (istty) cu.curUp(activeBars.size()); activeBars.forEach(bar -> { cu.eraseLine(); - out.println(bar.toString(theme, cols)); + out.print(bar.toString(theme, cols)); }); } From 47db423f29a573778f170d9741b5e022b6f27567 Mon Sep 17 00:00:00 2001 From: anushkasharma Date: Sat, 26 Nov 2022 17:20:00 -0500 Subject: [PATCH 6/7] Commit attempt 6 --- .../mcpm/client/uninstallUseCase/UninstallBoundary.java | 2 +- .../hydev/mcpm/client/uninstallUseCase/UninstallInput.java | 7 ++++--- .../hydev/mcpm/client/uninstallUseCase/Uninstaller.java | 7 +++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java index 8daa4809..4a1ad538 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java @@ -11,7 +11,7 @@ public interface UninstallBoundary { /** * Uninstalls plugin based on its given name - * @param name given name of the plugin + * @param name given name of plugin */ public UninstallResult uninstallPlugin(UninstallInput input, LocalPluginTracker lpt, LocalDatabaseFetcher ldf, DatabaseManager dbManage, diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java index b968c34f..066c421e 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java @@ -7,11 +7,12 @@ * Uninstall Plugin input * * @param name Plugin name + * @param ulb PluginLoader object + * @param spType SearchPackagesType + * @param remove_depen remove dependencies or not */ public record UninstallInput(String name, - PluginLoader ulb, - SearchPackagesType spType, - boolean remove_depen){ + PluginLoader ulb, SearchPackagesType spType, boolean remove_depen){ } diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java index 346e46cc..2cf21db3 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java @@ -15,10 +15,9 @@ import org.hydev.mcpm.client.injector.PluginNotFoundException; import org.hydev.mcpm.client.injector.UnloadBoundary; import org.hydev.mcpm.client.models.PluginModel; -import org.hydev.mcpm.client.uninstallUseCase.*; -import org.hydev.mcpm.client.database.results.ExportPluginsResult; -import org.hydev.mcpm.client.models.PluginVersion; -import org.hydev.mcpm.client.database.inputs.SearchPackagesInput; + + + public class Uninstaller implements UninstallBoundary { From 0213c9714efd7d048427f1bf94a4ad0915131e0e Mon Sep 17 00:00:00 2001 From: anushkasharma Date: Sat, 26 Nov 2022 18:44:23 -0500 Subject: [PATCH 7/7] Commit attempt 7 --- .../hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java | 3 ++- .../hydev/mcpm/client/uninstallUseCase/UninstallInput.java | 4 +++- .../org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java index 4a1ad538..3d8beff2 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallBoundary.java @@ -14,6 +14,7 @@ public interface UninstallBoundary { * @param name given name of plugin */ - public UninstallResult uninstallPlugin(UninstallInput input, LocalPluginTracker lpt, LocalDatabaseFetcher ldf, DatabaseManager dbManage, + public UninstallResult uninstallPlugin(UninstallInput input, + LocalPluginTracker lpt, LocalDatabaseFetcher ldf, DatabaseManager dbManage, SearchPackagesResult spr) throws PluginNotFoundException; } diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java index 066c421e..b43aa5a9 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/UninstallInput.java @@ -12,7 +12,9 @@ * @param remove_depen remove dependencies or not */ public record UninstallInput(String name, - PluginLoader ulb, SearchPackagesType spType, boolean remove_depen){ + PluginLoader ulb, + SearchPackagesType spType, + boolean remove_depen){ } diff --git a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java index 2cf21db3..7126f41e 100644 --- a/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java +++ b/src/main/java/org/hydev/mcpm/client/uninstallUseCase/Uninstaller.java @@ -66,7 +66,7 @@ public UninstallResult main(UninstallInput input) throws PluginNotFoundException } else if (spr.plugins().isEmpty()) { return new UninstallResult(UninstallResult.State.LOCATING_PLUGIN_FAILURE); } - // 2. Uninstall plugin + // 2. Uninstall the plugin // a. unload plugin // PluginLoader pil = new PluginLoader(); // pil.unloadPlugin(name);