From 6af382d275aedc5329d8430f8827fd98aa5cb503 Mon Sep 17 00:00:00 2001 From: Emmastone Date: Sat, 24 Sep 2016 17:54:30 +0100 Subject: [PATCH 01/41] [FEATURE] Added a download class --- .gitignore | 2 +- src/main/java/org/parabot/launcher/Core.java | 2 +- .../org/parabot/launcher/data/Constants.java | 12 +++++ .../org/parabot/launcher/file/Download.java | 52 +++++++++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/parabot/launcher/data/Constants.java create mode 100644 src/main/java/org/parabot/launcher/file/Download.java diff --git a/.gitignore b/.gitignore index 72287a1..e61c3e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .idea *.class *.jar -Parabot Launcher.iml +*.iml .DS_Store \ No newline at end of file diff --git a/src/main/java/org/parabot/launcher/Core.java b/src/main/java/org/parabot/launcher/Core.java index 2a6664f..e3c1384 100644 --- a/src/main/java/org/parabot/launcher/Core.java +++ b/src/main/java/org/parabot/launcher/Core.java @@ -1,7 +1,7 @@ package org.parabot.launcher; /** - * @author JKetelaar + * @author JKetelaar, EmmaStone, Fryslan */ public class Core { diff --git a/src/main/java/org/parabot/launcher/data/Constants.java b/src/main/java/org/parabot/launcher/data/Constants.java new file mode 100644 index 0000000..fcbd8b4 --- /dev/null +++ b/src/main/java/org/parabot/launcher/data/Constants.java @@ -0,0 +1,12 @@ +package org.parabot.launcher.data; + +/** + * @author EmmaStone + */ +public class Constants { + + public static final String FILE_NAME = "Parabot.jar"; + public static final String DIRETORY_LOCATION = System.getProperty("user.home") + "/Parabot/"; + public static final String CURRENT_VERSION = "http://bdn.parabot.org/api/v2/bot/version"; + public static final String CLIENT_URL = "http://bdn.parabot.org/versions/"; +} diff --git a/src/main/java/org/parabot/launcher/file/Download.java b/src/main/java/org/parabot/launcher/file/Download.java new file mode 100644 index 0000000..9e63aea --- /dev/null +++ b/src/main/java/org/parabot/launcher/file/Download.java @@ -0,0 +1,52 @@ +package org.parabot.launcher.file; + +import org.parabot.launcher.data.Constants; + +import java.io.*; +import java.net.URL; +import java.net.URLConnection; + +/** + * @author EmmaStone + */ +public class Download { + private final File file = new File(Constants.DIRETORY_LOCATION + Constants.FILE_NAME); + + private boolean doesFileExist() { + return file.exists(); + } + + private String getVersion() { + return null; //TODO + } + + public void downloadFile() { + if (!doesFileExist()) { + OutputStream out = null; + URLConnection conn; + InputStream in = null; + try { + URL url = new URL(Constants.CLIENT_URL); + out = new BufferedOutputStream(new FileOutputStream(file)); + conn = url.openConnection(); + in = conn.getInputStream(); + } catch (Exception exception) { + exception.printStackTrace(); + } finally { + try { + if (in != null) { + in.close(); + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + System.out.println("Download complete"); + } else { + //TODO + } + } +} From e649a76e8d9121bd571a051b3e1bac70cb8c7abb Mon Sep 17 00:00:00 2001 From: Emmastone Date: Sat, 24 Sep 2016 18:01:04 +0100 Subject: [PATCH 02/41] [CLEANUP] Fixed some names --- .../java/org/parabot/launcher/data/Constants.java | 4 ++-- .../java/org/parabot/launcher/file/Download.java | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/parabot/launcher/data/Constants.java b/src/main/java/org/parabot/launcher/data/Constants.java index fcbd8b4..08cfb0f 100644 --- a/src/main/java/org/parabot/launcher/data/Constants.java +++ b/src/main/java/org/parabot/launcher/data/Constants.java @@ -5,8 +5,8 @@ */ public class Constants { - public static final String FILE_NAME = "Parabot.jar"; - public static final String DIRETORY_LOCATION = System.getProperty("user.home") + "/Parabot/"; + public static final String CLIENT_NAME = "Parabot"; + public static final String DIRECTORY_LOCATION = System.getProperty("user.home") + "/Parabot/"; public static final String CURRENT_VERSION = "http://bdn.parabot.org/api/v2/bot/version"; public static final String CLIENT_URL = "http://bdn.parabot.org/versions/"; } diff --git a/src/main/java/org/parabot/launcher/file/Download.java b/src/main/java/org/parabot/launcher/file/Download.java index 9e63aea..bc73def 100644 --- a/src/main/java/org/parabot/launcher/file/Download.java +++ b/src/main/java/org/parabot/launcher/file/Download.java @@ -10,24 +10,24 @@ * @author EmmaStone */ public class Download { - private final File file = new File(Constants.DIRETORY_LOCATION + Constants.FILE_NAME); + private final File client = new File(Constants.DIRECTORY_LOCATION + Constants.CLIENT_NAME + ".jar"); - private boolean doesFileExist() { - return file.exists(); + private boolean doesClientExist() { + return client.exists(); } private String getVersion() { return null; //TODO } - public void downloadFile() { - if (!doesFileExist()) { + public void downloadClient() { + if (!doesClientExist()) { OutputStream out = null; URLConnection conn; InputStream in = null; try { URL url = new URL(Constants.CLIENT_URL); - out = new BufferedOutputStream(new FileOutputStream(file)); + out = new BufferedOutputStream(new FileOutputStream(client)); conn = url.openConnection(); in = conn.getInputStream(); } catch (Exception exception) { From c9135a4edd3bf78a04b1d8f6c0aef4d2bfd0dbfa Mon Sep 17 00:00:00 2001 From: Emmastone Date: Sat, 24 Sep 2016 22:43:26 +0100 Subject: [PATCH 03/41] [FEATURE] Added version checking + WebUtil --- pom.xml | 19 ++++ .../org/parabot/launcher/file/Download.java | 52 --------- .../org/parabot/launcher/file/FileUtil.java | 100 ++++++++++++++++++ .../org/parabot/launcher/web/WebUtil.java | 79 ++++++++++++++ 4 files changed, 198 insertions(+), 52 deletions(-) delete mode 100644 src/main/java/org/parabot/launcher/file/Download.java create mode 100644 src/main/java/org/parabot/launcher/file/FileUtil.java create mode 100644 src/main/java/org/parabot/launcher/web/WebUtil.java diff --git a/pom.xml b/pom.xml index 8a89d84..2cdc4a5 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,25 @@ org.parabot launcher 0.1 + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.7 + 1.7 + + + + + + + com.googlecode.json-simple + json-simple + 1.1 + + \ No newline at end of file diff --git a/src/main/java/org/parabot/launcher/file/Download.java b/src/main/java/org/parabot/launcher/file/Download.java deleted file mode 100644 index bc73def..0000000 --- a/src/main/java/org/parabot/launcher/file/Download.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.parabot.launcher.file; - -import org.parabot.launcher.data.Constants; - -import java.io.*; -import java.net.URL; -import java.net.URLConnection; - -/** - * @author EmmaStone - */ -public class Download { - private final File client = new File(Constants.DIRECTORY_LOCATION + Constants.CLIENT_NAME + ".jar"); - - private boolean doesClientExist() { - return client.exists(); - } - - private String getVersion() { - return null; //TODO - } - - public void downloadClient() { - if (!doesClientExist()) { - OutputStream out = null; - URLConnection conn; - InputStream in = null; - try { - URL url = new URL(Constants.CLIENT_URL); - out = new BufferedOutputStream(new FileOutputStream(client)); - conn = url.openConnection(); - in = conn.getInputStream(); - } catch (Exception exception) { - exception.printStackTrace(); - } finally { - try { - if (in != null) { - in.close(); - } - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - System.out.println("Download complete"); - } else { - //TODO - } - } -} diff --git a/src/main/java/org/parabot/launcher/file/FileUtil.java b/src/main/java/org/parabot/launcher/file/FileUtil.java new file mode 100644 index 0000000..a0ba29b --- /dev/null +++ b/src/main/java/org/parabot/launcher/file/FileUtil.java @@ -0,0 +1,100 @@ +package org.parabot.launcher.file; + +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; +import org.parabot.launcher.data.Configuration; +import org.parabot.launcher.web.WebUtil; + +import java.io.*; +import java.net.URL; +import java.net.URLConnection; + +/** + * @author EmmaStone + */ +public class FileUtil { + private final File client = new File(Configuration.DIRECTORY_LOCATION + Configuration.CLIENT_NAME + ".jar"); + private final File settings = new File(Configuration.DIRECTORY_LOCATION + Configuration.GET_SETTINGS_FOLDER + "settings.json"); + + private String getCurrentVersion() { + String version = null; + + BufferedReader br = WebUtil.getReader(Configuration.GET_BOT_VERSION); + try { + if (br != null) { + JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(br); + version = (String) object.get("result"); + } + } catch (NumberFormatException | IOException | ParseException e) { + e.printStackTrace(); + } finally { + try { + if (br != null) { + br.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + return version; + } + + private void downloadClient() throws IOException { + OutputStream out = null; + URLConnection conn; + InputStream in = null; + try { + URL url = new URL(Configuration.GET_CLIENT_URL); + out = new BufferedOutputStream(new FileOutputStream(client)); + conn = url.openConnection(); + in = conn.getInputStream(); + } catch (Exception exception) { + exception.printStackTrace(); + } finally { + try { + if (in != null) { + in.close(); + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + System.out.println("FileUtil complete"); + } + + public void compareVersions() throws IOException, ParseException { + System.out.println(settings); + if (settings.exists()) { + JSONParser parser = new JSONParser(); + Object obj = parser.parse(new FileReader(settings)); + + JSONObject jsonObject = (JSONObject) obj; + + String version = (String) jsonObject.get("version"); + + if (getCurrentVersion().equals(version)) + System.out.println("Parabot is on the latest version!"); + else + downloadClient(); + } else { + createSettingsFile(); + } + } + + private void createSettingsFile() throws IOException { + settings.createNewFile(); + + JSONObject object = new JSONObject(); + object.put("version", getCurrentVersion()); + FileWriter file = new FileWriter(settings); + file.write(object.toJSONString()); + file.flush(); + file.close(); + } +} diff --git a/src/main/java/org/parabot/launcher/web/WebUtil.java b/src/main/java/org/parabot/launcher/web/WebUtil.java new file mode 100644 index 0000000..60a4955 --- /dev/null +++ b/src/main/java/org/parabot/launcher/web/WebUtil.java @@ -0,0 +1,79 @@ +package org.parabot.launcher.web; + +import org.json.simple.parser.JSONParser; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; + +/** + * A WebUtil class fetches data from an URL + * + * @author Everel + */ +public class WebUtil { + + private static JSONParser jsonParser; + + /** + * Gets buffered reader from string url + * + * @param url + * @return bufferedreader + */ + public static BufferedReader getReader(final String url) { + try { + return getReader(new URL(url)); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + return null; + } + + /** + * Gets BufferedReader from URL + * + * @param url + * @return BufferedReader from URL + */ + public static BufferedReader getReader(final URL url) { + return getReader(getConnection(url)); + } + + public static BufferedReader getReader(final URLConnection urlConnection) { + try { + return new BufferedReader(new InputStreamReader( + urlConnection.getInputStream())); + } catch (Throwable t) { + t.printStackTrace(); + } + return null; + } + + /** + * Opens a connection + * + * @param url + * @return URLConnection to URL + */ + public static URLConnection getConnection(final URL url) { + try { + final URLConnection con = url.openConnection(); + String agent = "Mozilla/5.0 (Wind0ws NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"; + con.setRequestProperty("User-Agent", agent); + return con; + } catch (Throwable t) { + t.printStackTrace(); + } + return null; + } + + public static JSONParser getJsonParser() { + if (jsonParser == null) { + jsonParser = new JSONParser(); + } + return jsonParser; + } +} \ No newline at end of file From eaea3fe6531b06943d193fe3dc9d13caa30a55bb Mon Sep 17 00:00:00 2001 From: Emmastone Date: Sat, 24 Sep 2016 22:43:44 +0100 Subject: [PATCH 04/41] [CLEANUP] Renamed Constants to Configuration --- .../org/parabot/launcher/data/Configuration.java | 13 +++++++++++++ .../java/org/parabot/launcher/data/Constants.java | 12 ------------ 2 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 src/main/java/org/parabot/launcher/data/Configuration.java delete mode 100644 src/main/java/org/parabot/launcher/data/Constants.java diff --git a/src/main/java/org/parabot/launcher/data/Configuration.java b/src/main/java/org/parabot/launcher/data/Configuration.java new file mode 100644 index 0000000..6841356 --- /dev/null +++ b/src/main/java/org/parabot/launcher/data/Configuration.java @@ -0,0 +1,13 @@ +package org.parabot.launcher.data; + +/** + * @author EmmaStone + */ +public class Configuration { + + public static final String CLIENT_NAME = "Parabot"; + public static final String DIRECTORY_LOCATION = System.getProperty("user.home") + "/Parabot/"; + public static final String GET_SETTINGS_FOLDER = DIRECTORY_LOCATION + "/settings/"; + public static final String GET_BOT_VERSION = "http://bdn.parabot.org/api/v2/bot/version"; + public static final String GET_CLIENT_URL = "http://bdn.parabot.org/versions/"; +} diff --git a/src/main/java/org/parabot/launcher/data/Constants.java b/src/main/java/org/parabot/launcher/data/Constants.java deleted file mode 100644 index 08cfb0f..0000000 --- a/src/main/java/org/parabot/launcher/data/Constants.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.parabot.launcher.data; - -/** - * @author EmmaStone - */ -public class Constants { - - public static final String CLIENT_NAME = "Parabot"; - public static final String DIRECTORY_LOCATION = System.getProperty("user.home") + "/Parabot/"; - public static final String CURRENT_VERSION = "http://bdn.parabot.org/api/v2/bot/version"; - public static final String CLIENT_URL = "http://bdn.parabot.org/versions/"; -} From b3fcbd43d28b31b82aec41073af76c0457acfe66 Mon Sep 17 00:00:00 2001 From: Emmastone Date: Sun, 25 Sep 2016 19:49:18 +0100 Subject: [PATCH 05/41] [FEATURE] Added launching of Parabot --- src/main/java/org/parabot/launcher/Core.java | 2 +- .../java/org/parabot/launcher/Terminal.java | 52 +++++++++ .../org/parabot/launcher/data/Variables.java | 46 ++++++++ .../org/parabot/launcher/file/FileUtil.java | 100 ------------------ .../launcher/updater/UpdateManager.java | 39 +++++++ 5 files changed, 138 insertions(+), 101 deletions(-) create mode 100644 src/main/java/org/parabot/launcher/Terminal.java create mode 100644 src/main/java/org/parabot/launcher/data/Variables.java delete mode 100644 src/main/java/org/parabot/launcher/file/FileUtil.java create mode 100644 src/main/java/org/parabot/launcher/updater/UpdateManager.java diff --git a/src/main/java/org/parabot/launcher/Core.java b/src/main/java/org/parabot/launcher/Core.java index e3c1384..877a3b9 100644 --- a/src/main/java/org/parabot/launcher/Core.java +++ b/src/main/java/org/parabot/launcher/Core.java @@ -1,7 +1,7 @@ package org.parabot.launcher; /** - * @author JKetelaar, EmmaStone, Fryslan + * @author JKetelaar, EmmaStone, Fryslan, Everel */ public class Core { diff --git a/src/main/java/org/parabot/launcher/Terminal.java b/src/main/java/org/parabot/launcher/Terminal.java new file mode 100644 index 0000000..c62fea6 --- /dev/null +++ b/src/main/java/org/parabot/launcher/Terminal.java @@ -0,0 +1,52 @@ +package org.parabot.launcher; + +import org.parabot.launcher.data.Configuration; +import org.parabot.launcher.data.Variables; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; + +/** + * @author EmmaStone, JKetelaar + */ +public class Terminal { + + public void execute() throws IOException, InterruptedException { + ArrayList executions = new ArrayList<>(); + + executions.add("java"); + executions.add("-jar"); + if (Variables.isNoVerifySelected()) + executions.add("-noverify"); + executions.add(Configuration.DIRECTORY_LOCATION + Configuration.CLIENT_NAME + ".jar"); + if (Variables.isLoadLocalSelected()) { + executions.add("-loadlocal"); + } + if (Variables.isVerboseSelected()) { + executions.add("-verbose"); + } + if (Variables.isDebugSelected()) { + executions.add("-debug"); + } + if (Variables.isLoginSelected()) { + executions.add("-login " + Variables.getUsername() + " " + Variables.getPassword()); + } + if (Variables.isServerSelected()) { + executions.add("-server "); // TODO: 25/09/16 + } + + Process process = Runtime.getRuntime().exec(executions.toArray(new String[0])); + + process.waitFor(); + + InputStream inputStream = process.getInputStream(); + InputStream processErrorStream = process.getErrorStream(); + + byte b[] = new byte[inputStream.available()]; + inputStream.read(b, 0, b.length); + + byte c[] = new byte[processErrorStream.available()]; + processErrorStream.read(c, 0, c.length); + } +} diff --git a/src/main/java/org/parabot/launcher/data/Variables.java b/src/main/java/org/parabot/launcher/data/Variables.java new file mode 100644 index 0000000..a800bb8 --- /dev/null +++ b/src/main/java/org/parabot/launcher/data/Variables.java @@ -0,0 +1,46 @@ +package org.parabot.launcher.data; + +/** + * @author EmmaStone + */ +public class Variables { + + private static boolean noVerify, loadLocal, verbose, debug, login, server, clearCache; + private static String username, password; + + public static boolean isNoVerifySelected() { + return noVerify; + } + + public static boolean isLoadLocalSelected() { + return loadLocal; + } + + public static boolean isVerboseSelected() { + return verbose; + } + + public static boolean isDebugSelected() { + return debug; + } + + public static boolean isLoginSelected() { + return login; + } + + public static boolean isServerSelected() { + return server; + } + + public static String getUsername() { + return username; + } + + public static String getPassword() { + return password; + } + + public static boolean isClearCache() { + return clearCache; + } +} diff --git a/src/main/java/org/parabot/launcher/file/FileUtil.java b/src/main/java/org/parabot/launcher/file/FileUtil.java deleted file mode 100644 index a0ba29b..0000000 --- a/src/main/java/org/parabot/launcher/file/FileUtil.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.parabot.launcher.file; - -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; -import org.json.simple.parser.ParseException; -import org.parabot.launcher.data.Configuration; -import org.parabot.launcher.web.WebUtil; - -import java.io.*; -import java.net.URL; -import java.net.URLConnection; - -/** - * @author EmmaStone - */ -public class FileUtil { - private final File client = new File(Configuration.DIRECTORY_LOCATION + Configuration.CLIENT_NAME + ".jar"); - private final File settings = new File(Configuration.DIRECTORY_LOCATION + Configuration.GET_SETTINGS_FOLDER + "settings.json"); - - private String getCurrentVersion() { - String version = null; - - BufferedReader br = WebUtil.getReader(Configuration.GET_BOT_VERSION); - try { - if (br != null) { - JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(br); - version = (String) object.get("result"); - } - } catch (NumberFormatException | IOException | ParseException e) { - e.printStackTrace(); - } finally { - try { - if (br != null) { - br.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - return version; - } - - private void downloadClient() throws IOException { - OutputStream out = null; - URLConnection conn; - InputStream in = null; - try { - URL url = new URL(Configuration.GET_CLIENT_URL); - out = new BufferedOutputStream(new FileOutputStream(client)); - conn = url.openConnection(); - in = conn.getInputStream(); - } catch (Exception exception) { - exception.printStackTrace(); - } finally { - try { - if (in != null) { - in.close(); - } - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - System.out.println("FileUtil complete"); - } - - public void compareVersions() throws IOException, ParseException { - System.out.println(settings); - if (settings.exists()) { - JSONParser parser = new JSONParser(); - Object obj = parser.parse(new FileReader(settings)); - - JSONObject jsonObject = (JSONObject) obj; - - String version = (String) jsonObject.get("version"); - - if (getCurrentVersion().equals(version)) - System.out.println("Parabot is on the latest version!"); - else - downloadClient(); - } else { - createSettingsFile(); - } - } - - private void createSettingsFile() throws IOException { - settings.createNewFile(); - - JSONObject object = new JSONObject(); - object.put("version", getCurrentVersion()); - FileWriter file = new FileWriter(settings); - file.write(object.toJSONString()); - file.flush(); - file.close(); - } -} diff --git a/src/main/java/org/parabot/launcher/updater/UpdateManager.java b/src/main/java/org/parabot/launcher/updater/UpdateManager.java new file mode 100644 index 0000000..7569406 --- /dev/null +++ b/src/main/java/org/parabot/launcher/updater/UpdateManager.java @@ -0,0 +1,39 @@ +package org.parabot.launcher.updater; + +import org.parabot.launcher.data.Configuration; + +import java.io.BufferedInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; + +/** + * @author EmmaStone + */ +public class UpdateManager { + + public void downloadClient() throws IOException { + BufferedInputStream bufferedInputStream = null; + FileOutputStream fileOutputStream = null; + + try { + bufferedInputStream = new BufferedInputStream(new URL(Configuration.GET_CLIENT_URL).openStream()); + fileOutputStream = new FileOutputStream(Configuration.DIRECTORY_LOCATION + Configuration.CLIENT_NAME + ".jar"); + + final byte data[] = new byte[1024]; + int count; + while ((count = bufferedInputStream.read(data, 0, 1024)) != -1) { + fileOutputStream.write(data, 0, count); + } + } finally { + if (bufferedInputStream != null) { + bufferedInputStream.close(); + } + if (fileOutputStream != null) { + fileOutputStream.close(); + } + } + + System.out.println("UpdateManager complete"); + } +} From b0f2b1199721550f80642edb9a9bed15013a0460 Mon Sep 17 00:00:00 2001 From: Emmastone Date: Sun, 25 Sep 2016 19:49:51 +0100 Subject: [PATCH 06/41] [FEATURE] Added Version checking & Settings file creation --- .../launcher/updater/SettingsManager.java | 44 +++++++++ .../launcher/updater/VersionManager.java | 93 +++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 src/main/java/org/parabot/launcher/updater/SettingsManager.java create mode 100644 src/main/java/org/parabot/launcher/updater/VersionManager.java diff --git a/src/main/java/org/parabot/launcher/updater/SettingsManager.java b/src/main/java/org/parabot/launcher/updater/SettingsManager.java new file mode 100644 index 0000000..16d567e --- /dev/null +++ b/src/main/java/org/parabot/launcher/updater/SettingsManager.java @@ -0,0 +1,44 @@ +package org.parabot.launcher.updater; + +import org.json.simple.JSONObject; +import org.parabot.launcher.data.Configuration; + +import java.io.FileWriter; +import java.io.IOException; + +/** + * @author EmmaStone + */ +public class SettingsManager { + private VersionManager version; + + public SettingsManager(VersionManager version) { + this.version = version; + } + + public void createSettingsFile() throws IOException { + Configuration.SETTINGS_LOCATION.createNewFile(); + FileWriter file = new FileWriter(Configuration.SETTINGS_LOCATION); + + writeSettings(); + + file.flush(); + file.close(); + + System.out.println("SettingsManager created!"); + } + + public void writeSettings() throws IOException { + JSONObject versionObj = new JSONObject(); + versionObj.put("version", version.getCurrentVersion()); + + //todo Add list for UI settings + + FileWriter file = new FileWriter(Configuration.SETTINGS_LOCATION); + file.write(versionObj.toJSONString()); + file.flush(); + file.close(); + + System.out.println("SettingsManager written!"); + } +} diff --git a/src/main/java/org/parabot/launcher/updater/VersionManager.java b/src/main/java/org/parabot/launcher/updater/VersionManager.java new file mode 100644 index 0000000..6d29b90 --- /dev/null +++ b/src/main/java/org/parabot/launcher/updater/VersionManager.java @@ -0,0 +1,93 @@ +package org.parabot.launcher.updater; + +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; +import org.parabot.launcher.utils.CacheUtil; +import org.parabot.launcher.Terminal; +import org.parabot.launcher.data.Configuration; +import org.parabot.launcher.data.Variables; +import org.parabot.launcher.utils.WebUtil; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; + +/** + * @author EmmaStone + */ +public class VersionManager { + private UpdateManager download; + private SettingsManager settingsManager; + private CacheUtil cacheUtil; + + public String getCurrentVersion() { + String version = null; + BufferedReader br = WebUtil.getReader(Configuration.GET_BOT_VERSION); + + try { + if (br != null) { + JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(br); + version = (String) object.get("result"); + } + } catch (NumberFormatException | IOException | ParseException e) { + e.printStackTrace(); + } finally { + try { + if (br != null) { + br.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + return version; + } + + public void compareVersions() throws IOException, ParseException, InterruptedException { + if (Configuration.SETTINGS_LOCATION.exists()) { + JSONParser parser = new JSONParser(); + Object obj = parser.parse(new FileReader(Configuration.SETTINGS_LOCATION)); + + JSONObject jsonObject = (JSONObject) obj; + String version = (String) jsonObject.get("version"); + + if (getCurrentVersion().equals(version)) { + System.out.println("Parabot is on the latest version!"); + if (Variables.isClearCache()) { + if (cacheUtil == null) { + System.out.println("Clearing cacheUtil."); + cacheUtil = new CacheUtil(); + cacheUtil.clearCache(); + } + } + + System.out.println("Launching Parabot."); + Terminal terminal = new Terminal(); + terminal.execute(); + } else { + if (download == null) { + download = new UpdateManager(); + if (!Configuration.CLIENT_LOCATION.exists()) { + System.out.println("Downloading Parabot."); + download.downloadClient(); + } else { + System.out.println("Deleting the old version."); + Configuration.CLIENT_LOCATION.delete(); + + System.out.println("UpdateManager Parabot."); + download.downloadClient(); + } + } + } + } else { + System.out.println("Creating settingsManager updater."); + + if (settingsManager == null) { + settingsManager = new SettingsManager(this); + settingsManager.createSettingsFile(); + } + } + } +} From 28afaf39bb91b5f4b36344b17596677b13794f62 Mon Sep 17 00:00:00 2001 From: Emmastone Date: Sun, 25 Sep 2016 19:50:18 +0100 Subject: [PATCH 07/41] [FEATURE] Added clearcache and Windows support --- .../parabot/launcher/data/Configuration.java | 10 ++++- .../org/parabot/launcher/utils/CacheUtil.java | 42 +++++++++++++++++++ .../launcher/utils/OperatingSystem.java | 27 ++++++++++++ .../launcher/{web => utils}/WebUtil.java | 4 +- 4 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/parabot/launcher/utils/CacheUtil.java create mode 100644 src/main/java/org/parabot/launcher/utils/OperatingSystem.java rename src/main/java/org/parabot/launcher/{web => utils}/WebUtil.java (98%) diff --git a/src/main/java/org/parabot/launcher/data/Configuration.java b/src/main/java/org/parabot/launcher/data/Configuration.java index 6841356..3aa8689 100644 --- a/src/main/java/org/parabot/launcher/data/Configuration.java +++ b/src/main/java/org/parabot/launcher/data/Configuration.java @@ -1,13 +1,19 @@ package org.parabot.launcher.data; +import org.parabot.launcher.utils.CacheUtil; +import org.parabot.launcher.utils.OperatingSystem; + +import java.io.File; + /** * @author EmmaStone */ public class Configuration { public static final String CLIENT_NAME = "Parabot"; - public static final String DIRECTORY_LOCATION = System.getProperty("user.home") + "/Parabot/"; - public static final String GET_SETTINGS_FOLDER = DIRECTORY_LOCATION + "/settings/"; + public static final String DIRECTORY_LOCATION = System.getProperty("user.home") + (OperatingSystem.getOS() == OperatingSystem.WINDOWS ? "/Documents/" : "") + "/Parabot/"; public static final String GET_BOT_VERSION = "http://bdn.parabot.org/api/v2/bot/version"; public static final String GET_CLIENT_URL = "http://bdn.parabot.org/versions/"; + public static final File SETTINGS_LOCATION = new File(CacheUtil.getSettingsPath() + "/settings.json"); + public static final File CLIENT_LOCATION = new File(DIRECTORY_LOCATION + CLIENT_NAME + ".jar"); } diff --git a/src/main/java/org/parabot/launcher/utils/CacheUtil.java b/src/main/java/org/parabot/launcher/utils/CacheUtil.java new file mode 100644 index 0000000..0ef1b9e --- /dev/null +++ b/src/main/java/org/parabot/launcher/utils/CacheUtil.java @@ -0,0 +1,42 @@ +package org.parabot.launcher.utils; + +import org.parabot.launcher.data.Configuration; + +import java.io.File; + +/** + * @author Everel, JKetelaar + */ +public class CacheUtil { + + /** + * Returns the Parabot cache folder. + * + * @return + */ + public static File getCachePath() { + return new File(Configuration.DIRECTORY_LOCATION + "/cache/"); + } + + /** + * Returns the Parabot settings folder. + * + * @return + */ + public static File getSettingsPath() { + return new File(Configuration.DIRECTORY_LOCATION + "/settings/"); + } + + public void clearCache() { + File[] cache = getCachePath().listFiles(); + + if (cache != null) { + for (File f : cache) { + long remove = 0; + if (f != null && System.currentTimeMillis() / 1000 - f.lastModified() / 1000 > remove) { + f.delete(); + } + } + } + } +} diff --git a/src/main/java/org/parabot/launcher/utils/OperatingSystem.java b/src/main/java/org/parabot/launcher/utils/OperatingSystem.java new file mode 100644 index 0000000..a971994 --- /dev/null +++ b/src/main/java/org/parabot/launcher/utils/OperatingSystem.java @@ -0,0 +1,27 @@ +package org.parabot.launcher.utils; + +/** + * This class is used for detecting the user's operating system + * + * @author Everel + */ +public enum OperatingSystem { + + WINDOWS, LINUX, MAC, OTHER; + + public static OperatingSystem getOS() { + String str = System.getProperty("os.name").toLowerCase(); + + if (str.contains("win")) { + return OperatingSystem.WINDOWS; + } + if (str.contains("mac")) { + return OperatingSystem.MAC; + } + if (str.contains("nix") || str.contains("nux")) { + return OperatingSystem.LINUX; + } + + return OperatingSystem.OTHER; + } +} diff --git a/src/main/java/org/parabot/launcher/web/WebUtil.java b/src/main/java/org/parabot/launcher/utils/WebUtil.java similarity index 98% rename from src/main/java/org/parabot/launcher/web/WebUtil.java rename to src/main/java/org/parabot/launcher/utils/WebUtil.java index 60a4955..fb4474a 100644 --- a/src/main/java/org/parabot/launcher/web/WebUtil.java +++ b/src/main/java/org/parabot/launcher/utils/WebUtil.java @@ -1,4 +1,4 @@ -package org.parabot.launcher.web; +package org.parabot.launcher.utils; import org.json.simple.parser.JSONParser; @@ -76,4 +76,4 @@ public static JSONParser getJsonParser() { } return jsonParser; } -} \ No newline at end of file +} From dcbd964904d5595cb8334c5f826bed3150fe8d48 Mon Sep 17 00:00:00 2001 From: Emmastone Date: Sun, 25 Sep 2016 20:03:50 +0100 Subject: [PATCH 08/41] [CLEANUP] Fixed naming and brackets --- .../java/org/parabot/launcher/Terminal.java | 17 +++++++++-------- .../data/{Variables.java => Settings.java} | 2 +- .../launcher/updater/VersionManager.java | 4 ++-- 3 files changed, 12 insertions(+), 11 deletions(-) rename src/main/java/org/parabot/launcher/data/{Variables.java => Settings.java} (97%) diff --git a/src/main/java/org/parabot/launcher/Terminal.java b/src/main/java/org/parabot/launcher/Terminal.java index c62fea6..bf5369c 100644 --- a/src/main/java/org/parabot/launcher/Terminal.java +++ b/src/main/java/org/parabot/launcher/Terminal.java @@ -1,7 +1,7 @@ package org.parabot.launcher; import org.parabot.launcher.data.Configuration; -import org.parabot.launcher.data.Variables; +import org.parabot.launcher.data.Settings; import java.io.IOException; import java.io.InputStream; @@ -17,22 +17,23 @@ public void execute() throws IOException, InterruptedException { executions.add("java"); executions.add("-jar"); - if (Variables.isNoVerifySelected()) + if (Settings.isNoVerifySelected()) { executions.add("-noverify"); + } executions.add(Configuration.DIRECTORY_LOCATION + Configuration.CLIENT_NAME + ".jar"); - if (Variables.isLoadLocalSelected()) { + if (Settings.isLoadLocalSelected()) { executions.add("-loadlocal"); } - if (Variables.isVerboseSelected()) { + if (Settings.isVerboseSelected()) { executions.add("-verbose"); } - if (Variables.isDebugSelected()) { + if (Settings.isDebugSelected()) { executions.add("-debug"); } - if (Variables.isLoginSelected()) { - executions.add("-login " + Variables.getUsername() + " " + Variables.getPassword()); + if (Settings.isLoginSelected()) { + executions.add("-login " + Settings.getUsername() + " " + Settings.getPassword()); } - if (Variables.isServerSelected()) { + if (Settings.isServerSelected()) { executions.add("-server "); // TODO: 25/09/16 } diff --git a/src/main/java/org/parabot/launcher/data/Variables.java b/src/main/java/org/parabot/launcher/data/Settings.java similarity index 97% rename from src/main/java/org/parabot/launcher/data/Variables.java rename to src/main/java/org/parabot/launcher/data/Settings.java index a800bb8..5e462c3 100644 --- a/src/main/java/org/parabot/launcher/data/Variables.java +++ b/src/main/java/org/parabot/launcher/data/Settings.java @@ -3,7 +3,7 @@ /** * @author EmmaStone */ -public class Variables { +public class Settings { private static boolean noVerify, loadLocal, verbose, debug, login, server, clearCache; private static String username, password; diff --git a/src/main/java/org/parabot/launcher/updater/VersionManager.java b/src/main/java/org/parabot/launcher/updater/VersionManager.java index 6d29b90..b80964a 100644 --- a/src/main/java/org/parabot/launcher/updater/VersionManager.java +++ b/src/main/java/org/parabot/launcher/updater/VersionManager.java @@ -6,7 +6,7 @@ import org.parabot.launcher.utils.CacheUtil; import org.parabot.launcher.Terminal; import org.parabot.launcher.data.Configuration; -import org.parabot.launcher.data.Variables; +import org.parabot.launcher.data.Settings; import org.parabot.launcher.utils.WebUtil; import java.io.BufferedReader; @@ -55,7 +55,7 @@ public void compareVersions() throws IOException, ParseException, InterruptedExc if (getCurrentVersion().equals(version)) { System.out.println("Parabot is on the latest version!"); - if (Variables.isClearCache()) { + if (Settings.isClearCache()) { if (cacheUtil == null) { System.out.println("Clearing cacheUtil."); cacheUtil = new CacheUtil(); From 931d77c09bff626c60d505909c8936f63b5e0da8 Mon Sep 17 00:00:00 2001 From: JKetelaar Date: Tue, 27 Sep 2016 01:27:12 +0200 Subject: [PATCH 09/41] [FEATURE] Rebased version from @emmastone --- .gitignore | 4 +- pom.xml | 16 +++- src/main/java/org/parabot/launcher/Core.java | 9 ++ .../java/org/parabot/launcher/Terminal.java | 27 ++---- .../parabot/launcher/data/Configuration.java | 15 +-- .../org/parabot/launcher/data/Settings.java | 46 --------- .../launcher/helpers/SettingHelper.java | 76 +++++++++++++++ .../java/org/parabot/launcher/io/Reader.java | 39 ++++++++ .../java/org/parabot/launcher/io/Writer.java | 29 ++++++ .../launcher/models/ServerSetting.java | 42 +++++++++ .../org/parabot/launcher/models/Setting.java | 69 ++++++++++++++ .../launcher/updater/SettingsManager.java | 44 --------- .../launcher/updater/UpdateManager.java | 39 -------- .../launcher/updater/VersionManager.java | 93 ------------------- .../org/parabot/launcher/utils/CacheUtil.java | 42 --------- .../launcher/utils/OperatingSystem.java | 27 ------ .../org/parabot/launcher/utils/WebUtil.java | 79 ---------------- 17 files changed, 293 insertions(+), 403 deletions(-) delete mode 100644 src/main/java/org/parabot/launcher/data/Settings.java create mode 100644 src/main/java/org/parabot/launcher/helpers/SettingHelper.java create mode 100644 src/main/java/org/parabot/launcher/io/Reader.java create mode 100644 src/main/java/org/parabot/launcher/io/Writer.java create mode 100644 src/main/java/org/parabot/launcher/models/ServerSetting.java create mode 100644 src/main/java/org/parabot/launcher/models/Setting.java delete mode 100644 src/main/java/org/parabot/launcher/updater/SettingsManager.java delete mode 100644 src/main/java/org/parabot/launcher/updater/UpdateManager.java delete mode 100644 src/main/java/org/parabot/launcher/updater/VersionManager.java delete mode 100644 src/main/java/org/parabot/launcher/utils/CacheUtil.java delete mode 100644 src/main/java/org/parabot/launcher/utils/OperatingSystem.java delete mode 100644 src/main/java/org/parabot/launcher/utils/WebUtil.java diff --git a/.gitignore b/.gitignore index e61c3e8..4f5d0e9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ *.class *.jar *.iml -.DS_Store \ No newline at end of file +.DS_Store +out/ +target/ \ No newline at end of file diff --git a/pom.xml b/pom.xml index 2cdc4a5..198aff1 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,15 @@ org.parabot launcher 0.1 + + + + parabot-maven + Parabot its Maven Repository + http://maven.parabot.org/ + + + @@ -20,12 +29,11 @@ - - com.googlecode.json-simple - json-simple - 1.1 + org.parabot + internal-api + 1.0 \ No newline at end of file diff --git a/src/main/java/org/parabot/launcher/Core.java b/src/main/java/org/parabot/launcher/Core.java index 877a3b9..f8edf66 100644 --- a/src/main/java/org/parabot/launcher/Core.java +++ b/src/main/java/org/parabot/launcher/Core.java @@ -1,8 +1,17 @@ package org.parabot.launcher; +import org.parabot.launcher.io.Reader; +import org.parabot.launcher.io.Writer; + +import java.io.IOException; + /** * @author JKetelaar, EmmaStone, Fryslan, Everel */ public class Core { + public static void main(String[] args) { + Writer.writeConfiguration(); + } + } diff --git a/src/main/java/org/parabot/launcher/Terminal.java b/src/main/java/org/parabot/launcher/Terminal.java index bf5369c..dfc84b9 100644 --- a/src/main/java/org/parabot/launcher/Terminal.java +++ b/src/main/java/org/parabot/launcher/Terminal.java @@ -1,7 +1,7 @@ package org.parabot.launcher; import org.parabot.launcher.data.Configuration; -import org.parabot.launcher.data.Settings; +import org.parabot.launcher.helpers.SettingHelper; import java.io.IOException; import java.io.InputStream; @@ -17,24 +17,15 @@ public void execute() throws IOException, InterruptedException { executions.add("java"); executions.add("-jar"); - if (Settings.isNoVerifySelected()) { - executions.add("-noverify"); - } - executions.add(Configuration.DIRECTORY_LOCATION + Configuration.CLIENT_NAME + ".jar"); - if (Settings.isLoadLocalSelected()) { - executions.add("-loadlocal"); - } - if (Settings.isVerboseSelected()) { - executions.add("-verbose"); - } - if (Settings.isDebugSelected()) { - executions.add("-debug"); - } - if (Settings.isLoginSelected()) { - executions.add("-login " + Settings.getUsername() + " " + Settings.getPassword()); + + for (String s : SettingHelper.createJavaCommandLine()) { + executions.add(s); } - if (Settings.isServerSelected()) { - executions.add("-server "); // TODO: 25/09/16 + + executions.add(Configuration.CLIENT_LOCATION); + + for (String s : SettingHelper.createApplicationCommandLine()) { + executions.add(s); } Process process = Runtime.getRuntime().exec(executions.toArray(new String[0])); diff --git a/src/main/java/org/parabot/launcher/data/Configuration.java b/src/main/java/org/parabot/launcher/data/Configuration.java index 3aa8689..d687a4c 100644 --- a/src/main/java/org/parabot/launcher/data/Configuration.java +++ b/src/main/java/org/parabot/launcher/data/Configuration.java @@ -1,19 +1,14 @@ package org.parabot.launcher.data; -import org.parabot.launcher.utils.CacheUtil; -import org.parabot.launcher.utils.OperatingSystem; +import org.parabot.api.io.Directories; import java.io.File; /** * @author EmmaStone */ -public class Configuration { - - public static final String CLIENT_NAME = "Parabot"; - public static final String DIRECTORY_LOCATION = System.getProperty("user.home") + (OperatingSystem.getOS() == OperatingSystem.WINDOWS ? "/Documents/" : "") + "/Parabot/"; - public static final String GET_BOT_VERSION = "http://bdn.parabot.org/api/v2/bot/version"; - public static final String GET_CLIENT_URL = "http://bdn.parabot.org/versions/"; - public static final File SETTINGS_LOCATION = new File(CacheUtil.getSettingsPath() + "/settings.json"); - public static final File CLIENT_LOCATION = new File(DIRECTORY_LOCATION + CLIENT_NAME + ".jar"); +public class Configuration extends org.parabot.api.Configuration { + public static final String CONFIG_NAME = "launcher"; + public static final String LAUNCHER_CONFIG_LOCATION = Directories.getSettingsPath() + File.separator + Configuration.CONFIG_NAME + ".json"; + public static final String CLIENT_LOCATION = Directories.getCachePath() + BOT_TITLE + ".jar"; } diff --git a/src/main/java/org/parabot/launcher/data/Settings.java b/src/main/java/org/parabot/launcher/data/Settings.java deleted file mode 100644 index 5e462c3..0000000 --- a/src/main/java/org/parabot/launcher/data/Settings.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.parabot.launcher.data; - -/** - * @author EmmaStone - */ -public class Settings { - - private static boolean noVerify, loadLocal, verbose, debug, login, server, clearCache; - private static String username, password; - - public static boolean isNoVerifySelected() { - return noVerify; - } - - public static boolean isLoadLocalSelected() { - return loadLocal; - } - - public static boolean isVerboseSelected() { - return verbose; - } - - public static boolean isDebugSelected() { - return debug; - } - - public static boolean isLoginSelected() { - return login; - } - - public static boolean isServerSelected() { - return server; - } - - public static String getUsername() { - return username; - } - - public static String getPassword() { - return password; - } - - public static boolean isClearCache() { - return clearCache; - } -} diff --git a/src/main/java/org/parabot/launcher/helpers/SettingHelper.java b/src/main/java/org/parabot/launcher/helpers/SettingHelper.java new file mode 100644 index 0000000..146a43f --- /dev/null +++ b/src/main/java/org/parabot/launcher/helpers/SettingHelper.java @@ -0,0 +1,76 @@ +package org.parabot.launcher.helpers; + +import org.json.simple.JSONObject; +import org.parabot.launcher.models.ServerSetting; +import org.parabot.launcher.models.Setting; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author JKetelaar + */ +public class SettingHelper { + + private static final List settings; + + static { + settings = new ArrayList<>(); + createSettings(); + } + + private static void createSettings() { + settings.add(new Setting("noverify", false)); + settings.add(new Setting("loadlocal")); + settings.add(new Setting("verbose")); + settings.add(new Setting("debug")); + settings.add(new ServerSetting()); + } + + public static List getSettings() { + return settings; + } + + public static Setting getSettingByCommand(String command) { + for (Setting setting : settings) { + if (setting.getCommand().equals(command)) { + return setting; + } + } + + return null; + } + + public static JSONObject createJSONObjects() { + JSONObject object = new JSONObject(); + for (Setting setting : settings) { + if (setting.isEnabled()) { + object.put(setting.getCommand(), setting.toJSON()); + } + } + + return object; + } + + public static String[] createApplicationCommandLine() { + ArrayList total = new ArrayList<>(); + for (Setting setting : settings) { + if (setting.isEnabled() && setting.isApplicationArgument()) { + total.add(setting.getCommand()); + } + } + + return total.toArray(new String[0]); + } + + public static String[] createJavaCommandLine() { + ArrayList total = new ArrayList<>(); + for (Setting setting : settings) { + if (setting.isEnabled() && !setting.isApplicationArgument()) { + total.add(setting.getCommand()); + } + } + + return total.toArray(new String[0]); + } +} diff --git a/src/main/java/org/parabot/launcher/io/Reader.java b/src/main/java/org/parabot/launcher/io/Reader.java new file mode 100644 index 0000000..f7c7c9d --- /dev/null +++ b/src/main/java/org/parabot/launcher/io/Reader.java @@ -0,0 +1,39 @@ +package org.parabot.launcher.io; + +import org.json.simple.JSONObject; +import org.json.simple.parser.ParseException; +import org.parabot.api.io.WebUtil; +import org.parabot.launcher.data.Configuration; +import org.parabot.launcher.helpers.SettingHelper; +import org.parabot.launcher.models.Setting; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +/** + * @author JKetelaar + */ +public class Reader { + + public static void parseConfiguration() { + if (new File(Configuration.LAUNCHER_CONFIG_LOCATION).exists()) { + try { + Object object = WebUtil.getJsonParser().parse(new FileReader(Configuration.LAUNCHER_CONFIG_LOCATION)); + JSONObject jsonObject = (JSONObject) object; + + for (Object keyObject : ((JSONObject) jsonObject.get("commands")).keySet()) { + String key = (String) keyObject; + JSONObject value = (JSONObject) jsonObject.get(key); + + Setting setting; + if ((setting = SettingHelper.getSettingByCommand(key)) != null) { + setting.setFromJSONObject(value); + } + } + } catch (IOException | ParseException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/main/java/org/parabot/launcher/io/Writer.java b/src/main/java/org/parabot/launcher/io/Writer.java new file mode 100644 index 0000000..9f6439e --- /dev/null +++ b/src/main/java/org/parabot/launcher/io/Writer.java @@ -0,0 +1,29 @@ +package org.parabot.launcher.io; + +import org.json.simple.JSONObject; +import org.parabot.launcher.data.Configuration; +import org.parabot.launcher.helpers.SettingHelper; + +import java.io.FileWriter; +import java.io.IOException; + +/** + * @author JKetelaar + */ +public class Writer { + + public static void writeConfiguration() { + try { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("commands", SettingHelper.createJSONObjects()); + + FileWriter fileWriter = new FileWriter(Configuration.LAUNCHER_CONFIG_LOCATION); + + fileWriter.write(jsonObject.toJSONString()); + fileWriter.flush(); + fileWriter.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/org/parabot/launcher/models/ServerSetting.java b/src/main/java/org/parabot/launcher/models/ServerSetting.java new file mode 100644 index 0000000..fe0e63d --- /dev/null +++ b/src/main/java/org/parabot/launcher/models/ServerSetting.java @@ -0,0 +1,42 @@ +package org.parabot.launcher.models; + +import org.json.simple.JSONObject; + +/** + * @author JKetelaar + */ +public class ServerSetting extends Setting { + + private String server; + + public ServerSetting() { + super("server"); + } + + public String getServer() { + return server; + } + + public void setServer(String server) { + this.server = server; + } + + @Override + public JSONObject toJSON() { + JSONObject object = super.toJSON(); + object.put("server", server); + + return object; + } + + @Override + public void setFromJSONObject(JSONObject object) { + super.setFromJSONObject(object); + this.server = (String) object.get("server"); + } + + @Override + public String toCommand() { + return super.toCommand() + " " + server; + } +} diff --git a/src/main/java/org/parabot/launcher/models/Setting.java b/src/main/java/org/parabot/launcher/models/Setting.java new file mode 100644 index 0000000..91cc2b9 --- /dev/null +++ b/src/main/java/org/parabot/launcher/models/Setting.java @@ -0,0 +1,69 @@ +package org.parabot.launcher.models; + +import org.json.simple.JSONObject; + +/** + * @author JKetelaar + */ +public class Setting { + + private final String command; + protected boolean enabled; + /** + * Defines if the command should be put before or after the application + * if true: java -jar application.jar -command + * if false: java -jar -command application.jar + */ + protected boolean applicationArgument = true; + + public Setting(String command) { + this.command = command; + } + + public Setting(String command, boolean applicationArgument) { + this.command = command; + this.applicationArgument = applicationArgument; + } + + public Setting(String command, boolean applicationArgument, boolean enabled) { + this.command = command; + this.applicationArgument = applicationArgument; + this.enabled = enabled; + } + + public Setting(boolean enabled, String command) { + this.enabled = enabled; + this.command = command; + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public String getCommand() { + return command; + } + + public JSONObject toJSON() { + JSONObject object = new JSONObject(); + object.put("enabled", enabled); + + return object; + } + + public void setFromJSONObject(JSONObject object) { + this.enabled = (boolean) object.get("enabled"); + } + + public String toCommand() { + return "-" + command; + } + + public boolean isApplicationArgument() { + return applicationArgument; + } +} diff --git a/src/main/java/org/parabot/launcher/updater/SettingsManager.java b/src/main/java/org/parabot/launcher/updater/SettingsManager.java deleted file mode 100644 index 16d567e..0000000 --- a/src/main/java/org/parabot/launcher/updater/SettingsManager.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.parabot.launcher.updater; - -import org.json.simple.JSONObject; -import org.parabot.launcher.data.Configuration; - -import java.io.FileWriter; -import java.io.IOException; - -/** - * @author EmmaStone - */ -public class SettingsManager { - private VersionManager version; - - public SettingsManager(VersionManager version) { - this.version = version; - } - - public void createSettingsFile() throws IOException { - Configuration.SETTINGS_LOCATION.createNewFile(); - FileWriter file = new FileWriter(Configuration.SETTINGS_LOCATION); - - writeSettings(); - - file.flush(); - file.close(); - - System.out.println("SettingsManager created!"); - } - - public void writeSettings() throws IOException { - JSONObject versionObj = new JSONObject(); - versionObj.put("version", version.getCurrentVersion()); - - //todo Add list for UI settings - - FileWriter file = new FileWriter(Configuration.SETTINGS_LOCATION); - file.write(versionObj.toJSONString()); - file.flush(); - file.close(); - - System.out.println("SettingsManager written!"); - } -} diff --git a/src/main/java/org/parabot/launcher/updater/UpdateManager.java b/src/main/java/org/parabot/launcher/updater/UpdateManager.java deleted file mode 100644 index 7569406..0000000 --- a/src/main/java/org/parabot/launcher/updater/UpdateManager.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.parabot.launcher.updater; - -import org.parabot.launcher.data.Configuration; - -import java.io.BufferedInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.net.URL; - -/** - * @author EmmaStone - */ -public class UpdateManager { - - public void downloadClient() throws IOException { - BufferedInputStream bufferedInputStream = null; - FileOutputStream fileOutputStream = null; - - try { - bufferedInputStream = new BufferedInputStream(new URL(Configuration.GET_CLIENT_URL).openStream()); - fileOutputStream = new FileOutputStream(Configuration.DIRECTORY_LOCATION + Configuration.CLIENT_NAME + ".jar"); - - final byte data[] = new byte[1024]; - int count; - while ((count = bufferedInputStream.read(data, 0, 1024)) != -1) { - fileOutputStream.write(data, 0, count); - } - } finally { - if (bufferedInputStream != null) { - bufferedInputStream.close(); - } - if (fileOutputStream != null) { - fileOutputStream.close(); - } - } - - System.out.println("UpdateManager complete"); - } -} diff --git a/src/main/java/org/parabot/launcher/updater/VersionManager.java b/src/main/java/org/parabot/launcher/updater/VersionManager.java deleted file mode 100644 index b80964a..0000000 --- a/src/main/java/org/parabot/launcher/updater/VersionManager.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.parabot.launcher.updater; - -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; -import org.json.simple.parser.ParseException; -import org.parabot.launcher.utils.CacheUtil; -import org.parabot.launcher.Terminal; -import org.parabot.launcher.data.Configuration; -import org.parabot.launcher.data.Settings; -import org.parabot.launcher.utils.WebUtil; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; - -/** - * @author EmmaStone - */ -public class VersionManager { - private UpdateManager download; - private SettingsManager settingsManager; - private CacheUtil cacheUtil; - - public String getCurrentVersion() { - String version = null; - BufferedReader br = WebUtil.getReader(Configuration.GET_BOT_VERSION); - - try { - if (br != null) { - JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(br); - version = (String) object.get("result"); - } - } catch (NumberFormatException | IOException | ParseException e) { - e.printStackTrace(); - } finally { - try { - if (br != null) { - br.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - return version; - } - - public void compareVersions() throws IOException, ParseException, InterruptedException { - if (Configuration.SETTINGS_LOCATION.exists()) { - JSONParser parser = new JSONParser(); - Object obj = parser.parse(new FileReader(Configuration.SETTINGS_LOCATION)); - - JSONObject jsonObject = (JSONObject) obj; - String version = (String) jsonObject.get("version"); - - if (getCurrentVersion().equals(version)) { - System.out.println("Parabot is on the latest version!"); - if (Settings.isClearCache()) { - if (cacheUtil == null) { - System.out.println("Clearing cacheUtil."); - cacheUtil = new CacheUtil(); - cacheUtil.clearCache(); - } - } - - System.out.println("Launching Parabot."); - Terminal terminal = new Terminal(); - terminal.execute(); - } else { - if (download == null) { - download = new UpdateManager(); - if (!Configuration.CLIENT_LOCATION.exists()) { - System.out.println("Downloading Parabot."); - download.downloadClient(); - } else { - System.out.println("Deleting the old version."); - Configuration.CLIENT_LOCATION.delete(); - - System.out.println("UpdateManager Parabot."); - download.downloadClient(); - } - } - } - } else { - System.out.println("Creating settingsManager updater."); - - if (settingsManager == null) { - settingsManager = new SettingsManager(this); - settingsManager.createSettingsFile(); - } - } - } -} diff --git a/src/main/java/org/parabot/launcher/utils/CacheUtil.java b/src/main/java/org/parabot/launcher/utils/CacheUtil.java deleted file mode 100644 index 0ef1b9e..0000000 --- a/src/main/java/org/parabot/launcher/utils/CacheUtil.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.parabot.launcher.utils; - -import org.parabot.launcher.data.Configuration; - -import java.io.File; - -/** - * @author Everel, JKetelaar - */ -public class CacheUtil { - - /** - * Returns the Parabot cache folder. - * - * @return - */ - public static File getCachePath() { - return new File(Configuration.DIRECTORY_LOCATION + "/cache/"); - } - - /** - * Returns the Parabot settings folder. - * - * @return - */ - public static File getSettingsPath() { - return new File(Configuration.DIRECTORY_LOCATION + "/settings/"); - } - - public void clearCache() { - File[] cache = getCachePath().listFiles(); - - if (cache != null) { - for (File f : cache) { - long remove = 0; - if (f != null && System.currentTimeMillis() / 1000 - f.lastModified() / 1000 > remove) { - f.delete(); - } - } - } - } -} diff --git a/src/main/java/org/parabot/launcher/utils/OperatingSystem.java b/src/main/java/org/parabot/launcher/utils/OperatingSystem.java deleted file mode 100644 index a971994..0000000 --- a/src/main/java/org/parabot/launcher/utils/OperatingSystem.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.parabot.launcher.utils; - -/** - * This class is used for detecting the user's operating system - * - * @author Everel - */ -public enum OperatingSystem { - - WINDOWS, LINUX, MAC, OTHER; - - public static OperatingSystem getOS() { - String str = System.getProperty("os.name").toLowerCase(); - - if (str.contains("win")) { - return OperatingSystem.WINDOWS; - } - if (str.contains("mac")) { - return OperatingSystem.MAC; - } - if (str.contains("nix") || str.contains("nux")) { - return OperatingSystem.LINUX; - } - - return OperatingSystem.OTHER; - } -} diff --git a/src/main/java/org/parabot/launcher/utils/WebUtil.java b/src/main/java/org/parabot/launcher/utils/WebUtil.java deleted file mode 100644 index fb4474a..0000000 --- a/src/main/java/org/parabot/launcher/utils/WebUtil.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.parabot.launcher.utils; - -import org.json.simple.parser.JSONParser; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; - -/** - * A WebUtil class fetches data from an URL - * - * @author Everel - */ -public class WebUtil { - - private static JSONParser jsonParser; - - /** - * Gets buffered reader from string url - * - * @param url - * @return bufferedreader - */ - public static BufferedReader getReader(final String url) { - try { - return getReader(new URL(url)); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Gets BufferedReader from URL - * - * @param url - * @return BufferedReader from URL - */ - public static BufferedReader getReader(final URL url) { - return getReader(getConnection(url)); - } - - public static BufferedReader getReader(final URLConnection urlConnection) { - try { - return new BufferedReader(new InputStreamReader( - urlConnection.getInputStream())); - } catch (Throwable t) { - t.printStackTrace(); - } - return null; - } - - /** - * Opens a connection - * - * @param url - * @return URLConnection to URL - */ - public static URLConnection getConnection(final URL url) { - try { - final URLConnection con = url.openConnection(); - String agent = "Mozilla/5.0 (Wind0ws NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"; - con.setRequestProperty("User-Agent", agent); - return con; - } catch (Throwable t) { - t.printStackTrace(); - } - return null; - } - - public static JSONParser getJsonParser() { - if (jsonParser == null) { - jsonParser = new JSONParser(); - } - return jsonParser; - } -} From 87f7ecce95f1bae9f15662956a9d51907c90f602 Mon Sep 17 00:00:00 2001 From: Fryslan Date: Fri, 30 Sep 2016 18:09:25 +0200 Subject: [PATCH 10/41] [UPDATE] Set controller to right location in fxml file --- src/main/java/org/parabot/launcher/Core.java | 2 +- src/main/java/org/parabot/launcher/view.fxml | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/parabot/launcher/Core.java b/src/main/java/org/parabot/launcher/Core.java index 481ac37..ea90ac7 100644 --- a/src/main/java/org/parabot/launcher/Core.java +++ b/src/main/java/org/parabot/launcher/Core.java @@ -9,7 +9,7 @@ import java.net.URL; /** - * @author JKetelaar + * @author JKetelaar, Fryslan */ public class Core extends Application { diff --git a/src/main/java/org/parabot/launcher/view.fxml b/src/main/java/org/parabot/launcher/view.fxml index 7ad5c70..f9d3386 100644 --- a/src/main/java/org/parabot/launcher/view.fxml +++ b/src/main/java/org/parabot/launcher/view.fxml @@ -2,14 +2,8 @@ - - - - - - - + From 82710760f1bddc64b66f4777c88003fcec29ffca Mon Sep 17 00:00:00 2001 From: Emmastone Date: Wed, 5 Oct 2016 01:31:52 +0100 Subject: [PATCH 11/41] [FEATURE] Version Checking & Client Downloading --- src/main/java/org/parabot/launcher/Core.java | 21 +++++-- .../java/org/parabot/launcher/Terminal.java | 5 +- .../parabot/launcher/data/Configuration.java | 4 +- .../launcher/helpers/SettingHelper.java | 9 +-- .../launcher/helpers/VersionHelper.java | 55 +++++++++++++++++++ .../org/parabot/launcher/io/Downloader.java | 21 +++++++ .../java/org/parabot/launcher/io/Reader.java | 7 ++- .../java/org/parabot/launcher/io/Writer.java | 1 + .../org/parabot/launcher/models/Setting.java | 30 +++++----- 9 files changed, 126 insertions(+), 27 deletions(-) create mode 100644 src/main/java/org/parabot/launcher/helpers/VersionHelper.java create mode 100644 src/main/java/org/parabot/launcher/io/Downloader.java diff --git a/src/main/java/org/parabot/launcher/Core.java b/src/main/java/org/parabot/launcher/Core.java index f8edf66..e238260 100644 --- a/src/main/java/org/parabot/launcher/Core.java +++ b/src/main/java/org/parabot/launcher/Core.java @@ -1,8 +1,9 @@ package org.parabot.launcher; -import org.parabot.launcher.io.Reader; -import org.parabot.launcher.io.Writer; +import org.parabot.launcher.data.Configuration; +import org.parabot.launcher.io.Downloader; +import java.io.File; import java.io.IOException; /** @@ -11,7 +12,17 @@ public class Core { public static void main(String[] args) { - Writer.writeConfiguration(); - } + Terminal terminal = new Terminal(); + + System.out.println(System.getProperty("java.home")); -} + try { + if (!new File(Configuration.CLIENT_LOCATION).exists()) { + Downloader.downloadFile(Configuration.DOWNLOAD_BOT, Configuration.CLIENT_LOCATION); + } + terminal.execute(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/org/parabot/launcher/Terminal.java b/src/main/java/org/parabot/launcher/Terminal.java index dfc84b9..92409e9 100644 --- a/src/main/java/org/parabot/launcher/Terminal.java +++ b/src/main/java/org/parabot/launcher/Terminal.java @@ -3,6 +3,7 @@ import org.parabot.launcher.data.Configuration; import org.parabot.launcher.helpers.SettingHelper; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -15,13 +16,15 @@ public class Terminal { public void execute() throws IOException, InterruptedException { ArrayList executions = new ArrayList<>(); - executions.add("java"); + executions.add(System.getProperty("java.home") + File.separator + "bin/java"); executions.add("-jar"); for (String s : SettingHelper.createJavaCommandLine()) { executions.add(s); } + + System.out.println(Configuration.CLIENT_LOCATION); executions.add(Configuration.CLIENT_LOCATION); for (String s : SettingHelper.createApplicationCommandLine()) { diff --git a/src/main/java/org/parabot/launcher/data/Configuration.java b/src/main/java/org/parabot/launcher/data/Configuration.java index d687a4c..d9a048a 100644 --- a/src/main/java/org/parabot/launcher/data/Configuration.java +++ b/src/main/java/org/parabot/launcher/data/Configuration.java @@ -8,7 +8,9 @@ * @author EmmaStone */ public class Configuration extends org.parabot.api.Configuration { + public static final String CONFIG_NAME = "launcher"; public static final String LAUNCHER_CONFIG_LOCATION = Directories.getSettingsPath() + File.separator + Configuration.CONFIG_NAME + ".json"; - public static final String CLIENT_LOCATION = Directories.getCachePath() + BOT_TITLE + ".jar"; + public static final String CLIENT_LOCATION = Directories.getCachePath() + File.separator + BOT_TITLE + ".jar"; + public static final String GET_BOT_VERSION = "http://bdn.parabot.org/api/v2/bot/version"; } diff --git a/src/main/java/org/parabot/launcher/helpers/SettingHelper.java b/src/main/java/org/parabot/launcher/helpers/SettingHelper.java index 146a43f..2575760 100644 --- a/src/main/java/org/parabot/launcher/helpers/SettingHelper.java +++ b/src/main/java/org/parabot/launcher/helpers/SettingHelper.java @@ -24,6 +24,7 @@ private static void createSettings() { settings.add(new Setting("loadlocal")); settings.add(new Setting("verbose")); settings.add(new Setting("debug")); + settings.add(new Setting("version")); settings.add(new ServerSetting()); } @@ -33,7 +34,7 @@ public static List getSettings() { public static Setting getSettingByCommand(String command) { for (Setting setting : settings) { - if (setting.getCommand().equals(command)) { + if (setting.getSetting().equals(command)) { return setting; } } @@ -45,7 +46,7 @@ public static JSONObject createJSONObjects() { JSONObject object = new JSONObject(); for (Setting setting : settings) { if (setting.isEnabled()) { - object.put(setting.getCommand(), setting.toJSON()); + object.put(setting.getSetting(), setting.toJSON()); } } @@ -56,7 +57,7 @@ public static String[] createApplicationCommandLine() { ArrayList total = new ArrayList<>(); for (Setting setting : settings) { if (setting.isEnabled() && setting.isApplicationArgument()) { - total.add(setting.getCommand()); + total.add(setting.getSetting()); } } @@ -67,7 +68,7 @@ public static String[] createJavaCommandLine() { ArrayList total = new ArrayList<>(); for (Setting setting : settings) { if (setting.isEnabled() && !setting.isApplicationArgument()) { - total.add(setting.getCommand()); + total.add(setting.getSetting()); } } diff --git a/src/main/java/org/parabot/launcher/helpers/VersionHelper.java b/src/main/java/org/parabot/launcher/helpers/VersionHelper.java new file mode 100644 index 0000000..a739e39 --- /dev/null +++ b/src/main/java/org/parabot/launcher/helpers/VersionHelper.java @@ -0,0 +1,55 @@ +package org.parabot.launcher.helpers; + +import org.json.simple.JSONObject; +import org.json.simple.parser.ParseException; +import org.parabot.api.Configuration; +import org.parabot.api.io.Directories; +import org.parabot.api.io.WebUtil; +import org.parabot.api.misc.Version; + +import java.io.BufferedReader; +import java.io.IOException; + +/** + * @author EmmaStone + */ +public class VersionHelper { + + private static Version currentVersion; + + public static String getCurrentVersion() { + return currentVersion.get(); + } + + public static void setCurrentVersion(Version currentVersion) { + VersionHelper.currentVersion = currentVersion; + } + + public static boolean validVersion() { + String url = String.format(Configuration.COMPARE_VERSION_URL, "client", getCurrentVersion()); + + BufferedReader br = WebUtil.getReader(url); + try { + if (br != null) { + JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(br); + boolean latest = Boolean.parseBoolean((String) object.get("result")); + if (!latest) { + Directories.clearCache(); + } + return latest; + } + } catch (IOException | ParseException e) { + e.printStackTrace(); + } finally { + try { + if (br != null) { + br.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + return true; + } +} diff --git a/src/main/java/org/parabot/launcher/io/Downloader.java b/src/main/java/org/parabot/launcher/io/Downloader.java new file mode 100644 index 0000000..6cf22af --- /dev/null +++ b/src/main/java/org/parabot/launcher/io/Downloader.java @@ -0,0 +1,21 @@ +package org.parabot.launcher.io; + +import org.parabot.api.io.WebUtil; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; + +/** + * @author EmmaStone + */ +public class Downloader { + + public static void downloadFile(String url, String location) { + try { + WebUtil.downloadFile(new URL(url), new File(location), null); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/org/parabot/launcher/io/Reader.java b/src/main/java/org/parabot/launcher/io/Reader.java index f7c7c9d..f9ae2c6 100644 --- a/src/main/java/org/parabot/launcher/io/Reader.java +++ b/src/main/java/org/parabot/launcher/io/Reader.java @@ -3,8 +3,10 @@ import org.json.simple.JSONObject; import org.json.simple.parser.ParseException; import org.parabot.api.io.WebUtil; +import org.parabot.api.misc.Version; import org.parabot.launcher.data.Configuration; import org.parabot.launcher.helpers.SettingHelper; +import org.parabot.launcher.helpers.VersionHelper; import org.parabot.launcher.models.Setting; import java.io.File; @@ -17,16 +19,19 @@ public class Reader { public static void parseConfiguration() { + Setting setting; if (new File(Configuration.LAUNCHER_CONFIG_LOCATION).exists()) { try { Object object = WebUtil.getJsonParser().parse(new FileReader(Configuration.LAUNCHER_CONFIG_LOCATION)); JSONObject jsonObject = (JSONObject) object; + String version = (String) jsonObject.get("version"); + VersionHelper.setCurrentVersion(new Version(version)); + for (Object keyObject : ((JSONObject) jsonObject.get("commands")).keySet()) { String key = (String) keyObject; JSONObject value = (JSONObject) jsonObject.get(key); - Setting setting; if ((setting = SettingHelper.getSettingByCommand(key)) != null) { setting.setFromJSONObject(value); } diff --git a/src/main/java/org/parabot/launcher/io/Writer.java b/src/main/java/org/parabot/launcher/io/Writer.java index 9f6439e..bb74217 100644 --- a/src/main/java/org/parabot/launcher/io/Writer.java +++ b/src/main/java/org/parabot/launcher/io/Writer.java @@ -16,6 +16,7 @@ public static void writeConfiguration() { try { JSONObject jsonObject = new JSONObject(); jsonObject.put("commands", SettingHelper.createJSONObjects()); + jsonObject.put("version", "2.5"); FileWriter fileWriter = new FileWriter(Configuration.LAUNCHER_CONFIG_LOCATION); diff --git a/src/main/java/org/parabot/launcher/models/Setting.java b/src/main/java/org/parabot/launcher/models/Setting.java index 91cc2b9..dd7e372 100644 --- a/src/main/java/org/parabot/launcher/models/Setting.java +++ b/src/main/java/org/parabot/launcher/models/Setting.java @@ -7,33 +7,33 @@ */ public class Setting { - private final String command; + private final String setting; protected boolean enabled; /** - * Defines if the command should be put before or after the application - * if true: java -jar application.jar -command - * if false: java -jar -command application.jar + * Defines if the setting should be put before or after the application + * if true: java -jar application.jar -setting + * if false: java -jar -setting application.jar */ protected boolean applicationArgument = true; - public Setting(String command) { - this.command = command; + public Setting(String setting) { + this.setting = setting; } - public Setting(String command, boolean applicationArgument) { - this.command = command; + public Setting(String setting, boolean applicationArgument) { + this.setting = setting; this.applicationArgument = applicationArgument; } - public Setting(String command, boolean applicationArgument, boolean enabled) { - this.command = command; + public Setting(String setting, boolean applicationArgument, boolean enabled) { + this.setting = setting; this.applicationArgument = applicationArgument; this.enabled = enabled; } - public Setting(boolean enabled, String command) { + public Setting(boolean enabled, String setting) { this.enabled = enabled; - this.command = command; + this.setting = setting; } public boolean isEnabled() { @@ -44,8 +44,8 @@ public void setEnabled(boolean enabled) { this.enabled = enabled; } - public String getCommand() { - return command; + public String getSetting() { + return setting; } public JSONObject toJSON() { @@ -60,7 +60,7 @@ public void setFromJSONObject(JSONObject object) { } public String toCommand() { - return "-" + command; + return "-" + setting; } public boolean isApplicationArgument() { From b8ddd8d5fa4f0597f23de9383f9052e915312b4f Mon Sep 17 00:00:00 2001 From: Emmastone Date: Wed, 5 Oct 2016 01:37:20 +0100 Subject: [PATCH 12/41] [FEATURE] Added clear cache --- pom.xml | 2 +- .../java/org/parabot/launcher/io/CacheManager.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/parabot/launcher/io/CacheManager.java diff --git a/pom.xml b/pom.xml index 198aff1..9ab57b0 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ org.parabot internal-api - 1.0 + 1.02.8 \ No newline at end of file diff --git a/src/main/java/org/parabot/launcher/io/CacheManager.java b/src/main/java/org/parabot/launcher/io/CacheManager.java new file mode 100644 index 0000000..5c6aa42 --- /dev/null +++ b/src/main/java/org/parabot/launcher/io/CacheManager.java @@ -0,0 +1,13 @@ +package org.parabot.launcher.io; + +import org.parabot.api.io.Directories; + +/** + * @author EmmaStone + */ +public class CacheManager { + + public static void clearCache() { + Directories.clearCache(); + } +} From 18c8caaf1f6f3f128e89f4ec82e11baade441956 Mon Sep 17 00:00:00 2001 From: Emmastone Date: Wed, 5 Oct 2016 01:38:44 +0100 Subject: [PATCH 13/41] [CLEANUP] Removed debugs at Core --- src/main/java/org/parabot/launcher/Core.java | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/main/java/org/parabot/launcher/Core.java b/src/main/java/org/parabot/launcher/Core.java index e238260..1216126 100644 --- a/src/main/java/org/parabot/launcher/Core.java +++ b/src/main/java/org/parabot/launcher/Core.java @@ -1,28 +1,12 @@ package org.parabot.launcher; -import org.parabot.launcher.data.Configuration; -import org.parabot.launcher.io.Downloader; - -import java.io.File; -import java.io.IOException; - /** * @author JKetelaar, EmmaStone, Fryslan, Everel */ public class Core { public static void main(String[] args) { - Terminal terminal = new Terminal(); - System.out.println(System.getProperty("java.home")); - try { - if (!new File(Configuration.CLIENT_LOCATION).exists()) { - Downloader.downloadFile(Configuration.DOWNLOAD_BOT, Configuration.CLIENT_LOCATION); - } - terminal.execute(); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } } } \ No newline at end of file From 7b539938a7c5d57852b4c7e341301c4b376e6c5a Mon Sep 17 00:00:00 2001 From: Fryslan Date: Wed, 5 Oct 2016 22:54:21 +0200 Subject: [PATCH 14/41] [UPDATE] Revamped the UI totally --- pom.xml | 12 +++ .../java/org/parabot/launcher/Controller.java | 91 ++++++++++++------- src/main/java/org/parabot/launcher/Core.java | 2 +- .../java/org/parabot/launcher/interface.fxml | 64 +++++++++++++ src/main/java/org/parabot/launcher/view.fxml | 68 -------------- 5 files changed, 137 insertions(+), 100 deletions(-) create mode 100644 src/main/java/org/parabot/launcher/interface.fxml delete mode 100644 src/main/java/org/parabot/launcher/view.fxml diff --git a/pom.xml b/pom.xml index 8a89d84..999f28f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,18 @@ org.parabot launcher 0.1 + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + \ No newline at end of file diff --git a/src/main/java/org/parabot/launcher/Controller.java b/src/main/java/org/parabot/launcher/Controller.java index a0d3f3b..dc0c218 100644 --- a/src/main/java/org/parabot/launcher/Controller.java +++ b/src/main/java/org/parabot/launcher/Controller.java @@ -1,63 +1,92 @@ package org.parabot.launcher; +import com.jfoenix.controls.JFXButton; +import com.jfoenix.controls.JFXTextField; +import com.jfoenix.controls.JFXToggleButton; import javafx.fxml.FXML; -import javafx.scene.control.ComboBox; import javafx.scene.control.Label; -import javafx.scene.control.PasswordField; -import javafx.scene.control.TextField; public class Controller { - public static boolean useServer; - public static boolean useLogin; + public static boolean loadLocal; + public static boolean noVerify; + public static boolean verbose; + public static boolean debug; + public static boolean server; + public static String serverName; - public static String server; - public static String username; - public static String password; + @FXML // fx:id="clearCacheButton" + public JFXButton clearCacheButton; - @FXML - ComboBox serverComboBox; + @FXML // fx:id="loadLocalToggleButton" + public JFXToggleButton loadLocalToggleButton; - @FXML - TextField usernameTextField; + @FXML // fx:id="versionLabel" + public Label versionLabel; - @FXML - PasswordField passwordPassField; + @FXML // fx:id="startButton" + public JFXButton startButton; - @FXML - Label versionLabel,statusLabel,javaVersionLabel; + @FXML // fx:id="noVerifyToggleButton" + public JFXToggleButton noVerifyToggleButton; + + @FXML // fx:id="verboseToggleButton" + public JFXToggleButton verboseToggleButton; + @FXML // fx:id="debugToggleButton" + public JFXToggleButton debugToggleButton; + @FXML // fx:id="serverTextField" + public JFXTextField serverTextField; - public void clearCache(){ + @FXML // fx:id="javaVersionLabel" + public Label javaVersionLabel; + + @FXML // fx:id="serverToggleButton" + public JFXToggleButton serverToggleButton; + + @FXML // fx:id="statusLabel" + public Label statusLabel; + + @FXML + void clearCache() { } - public void clearWorkingDir(){ + @FXML + void startClient() { } - public void startClient(){ + @FXML + void getLoadLocalSelected() { + loadLocal = loadLocalToggleButton.isSelected(); + } + @FXML + void getNoVerifySelected() { + noVerify = noVerifyToggleButton.isSelected(); } - public void setServer(){ - if(useServer) { - server = serverComboBox.getSelectionModel().getSelectedItem().toString(); - } + @FXML + void getVerboseSelected() { + verbose = verboseToggleButton.isSelected(); } - public void setUsername(){ - if(useLogin) { - username = usernameTextField.getText(); - } + @FXML + void getDebugSelected() { + debug = debugToggleButton.isSelected(); } - public void setPassword(){ - if(useLogin) { - password = passwordPassField.getText(); - } + @FXML + void getServerSelected() { + server = serverToggleButton.isSelected(); } + @FXML + void setServerName() { + serverName = serverTextField.getText(); + } } + diff --git a/src/main/java/org/parabot/launcher/Core.java b/src/main/java/org/parabot/launcher/Core.java index ea90ac7..6e3d823 100644 --- a/src/main/java/org/parabot/launcher/Core.java +++ b/src/main/java/org/parabot/launcher/Core.java @@ -16,7 +16,7 @@ public class Core extends Application { @Override public void start(Stage stage) throws Exception{ //todo set the right path for fxml file, file on webserver is preferred @JKetelaar. - URL fxmlLocation = this.getClass().getResource("view.fxml"); + URL fxmlLocation = this.getClass().getResource("interface.fxml"); Parent root = FXMLLoader.load(fxmlLocation); stage.setTitle("Parabot"); stage.setScene(new Scene(root)); diff --git a/src/main/java/org/parabot/launcher/interface.fxml b/src/main/java/org/parabot/launcher/interface.fxml new file mode 100644 index 0000000..d203338 --- /dev/null +++ b/src/main/java/org/parabot/launcher/interface.fxml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/org/parabot/launcher/view.fxml b/src/main/java/org/parabot/launcher/view.fxml deleted file mode 100644 index f9d3386..0000000 --- a/src/main/java/org/parabot/launcher/view.fxml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -