From 825c7d3c9b62b48e202a07415a581b395c67cbfb Mon Sep 17 00:00:00 2001 From: tobias <tobias.ullerich@icloud.com> Date: Tue, 12 Jul 2016 21:48:00 +0200 Subject: [PATCH] Clean code in UpdateTabViewController --- .../src/de/tobias/playpad/PlayPadMain.java | 2 +- .../src/de/tobias/playpad/update/Updates.java | 2 +- .../option/UpdateTabViewController.java | 193 +----------------- 3 files changed, 6 insertions(+), 191 deletions(-) diff --git a/PlayWall/src/de/tobias/playpad/PlayPadMain.java b/PlayWall/src/de/tobias/playpad/PlayPadMain.java index 9c8844d9..e55ab372 100644 --- a/PlayWall/src/de/tobias/playpad/PlayPadMain.java +++ b/PlayWall/src/de/tobias/playpad/PlayPadMain.java @@ -351,7 +351,7 @@ public class PlayPadMain extends Application implements LocalizationDelegate, Pl alert.showAndWait().filter(item -> item == ButtonType.OK).ifPresent(result -> { try { - Updates.update(); + Updates.startUpdate(); } catch (IOException e) { e.printStackTrace(); } diff --git a/PlayWall/src/de/tobias/playpad/update/Updates.java b/PlayWall/src/de/tobias/playpad/update/Updates.java index f1090fc7..40192bf8 100644 --- a/PlayWall/src/de/tobias/playpad/update/Updates.java +++ b/PlayWall/src/de/tobias/playpad/update/Updates.java @@ -31,7 +31,7 @@ public class Updates { * * @throws IOException */ - public static void update() throws IOException { + public static void startUpdate() throws IOException { App app = ApplicationUtils.getApplication(); String downloadPath = app.getPath(PathType.DOWNLOAD, CACHE_FOLER).toString(); String updateParameter = UpdateRegistery.buildParamaterString(downloadPath); diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/UpdateTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/UpdateTabViewController.java index 72cc19c2..0363dcfc 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/UpdateTabViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/UpdateTabViewController.java @@ -1,20 +1,9 @@ package de.tobias.playpad.viewcontroller.option; import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.MalformedURLException; import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLConnection; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Optional; -import de.tobias.playpad.AppUserInfoStrings; import de.tobias.playpad.PlayPadMain; -import de.tobias.playpad.PlayPadPlugin; import de.tobias.playpad.Strings; import de.tobias.playpad.settings.Profile; import de.tobias.playpad.settings.ProfileSettings; @@ -26,38 +15,23 @@ import de.tobias.playpad.viewcontroller.SettingsTabViewController; import de.tobias.playpad.viewcontroller.cell.EnumCell; import de.tobias.playpad.viewcontroller.cell.UpdateCell; import de.tobias.playpad.viewcontroller.dialog.UpdaterDialog; -import de.tobias.utils.application.App; import de.tobias.utils.application.ApplicationInfo; import de.tobias.utils.application.ApplicationUtils; -import de.tobias.utils.application.NativeLauncher; -import de.tobias.utils.application.container.PathType; import de.tobias.utils.util.Localization; -import de.tobias.utils.util.OS; -import de.tobias.utils.util.OS.OSType; import de.tobias.utils.util.Worker; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.fxml.FXML; -import javafx.scene.control.Alert; -import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; import javafx.scene.control.ListView; import javafx.scene.control.ProgressIndicator; -import javafx.scene.image.Image; import javafx.scene.image.ImageView; -import javafx.stage.Modality; -import javafx.stage.Stage; -import javafx.stage.Window; public class UpdateTabViewController extends SettingsTabViewController { - @Deprecated private static final String DOWNLOAD_FOLDER = "Updates"; - private static final String UPDATER_JAR = "Updater.jar"; - private static final String UPDATER_EXE = "Updater.exe"; - @FXML private Label currentVersionLabel; @FXML private CheckBox automaticSearchCheckBox; @@ -84,8 +58,8 @@ public class UpdateTabViewController extends SettingsTabViewController { updateButton.setDisable(openUpdateList.getItems().isEmpty()); ApplicationInfo info = ApplicationUtils.getApplication().getInfo(); - String currentVersionString = Localization.getString(Strings.UI_Window_Settings_Updates_CurrentVersion, - info.getVersion(), info.getBuild()); + String currentVersionString = Localization.getString(Strings.UI_Window_Settings_Updates_CurrentVersion, info.getVersion(), + info.getBuild()); currentVersionLabel.setText(currentVersionString); } @@ -151,156 +125,14 @@ public class UpdateTabViewController extends SettingsTabViewController { Worker.runLater(() -> { try { - Updates.update(); + Updates.startUpdate(); } catch (IOException e) { e.printStackTrace(); } }); } - /** - * Startet den Update Prozess, lädt bei Bedarf den Updater herunter und führt ihn aus. Die Methode für Mac und - * Windows beenden dann auch PlayWall. - * - * @param dialogOwner - * Window owner für Dialoge - */ - @Deprecated - public static void update(Window dialogOwner) { - // Parameter für Updater und Pfad für Downloads - App app = ApplicationUtils.getApplication(); - String downloadFolder = app.getPath(PathType.DOWNLOAD, DOWNLOAD_FOLDER).toString(); - String parameter = UpdateRegistery.buildParamaterString(downloadFolder); - - // Update Aufrufen - if (OS.getType() == OSType.Windows) { - windowsUpdate(dialogOwner, parameter, UpdateRegistery.needsAdminPermission()); - } else { - macUpdate(dialogOwner, parameter); - } - } - - /** - * Perform Mac Update and if needed download the jar updater. - * - * @param dialogOwner - * Owner window - * @param parameter - */ - @Deprecated - private static void macUpdate(Window dialogOwner, String parameter) { - try { - Path fileJar = Paths.get(UPDATER_JAR); - Path fileJarFolder = ApplicationUtils.getApplication().getPath(PathType.DOWNLOAD, UPDATER_JAR); - - if (Files.exists(fileJar)) { - startJarFile(parameter, fileJar); - } else if (Files.exists(fileJarFolder)) { - startJarFile(parameter, fileJarFolder); - } else { - UpdaterDialog dialog = new UpdaterDialog(dialogOwner); - dialog.show(); - - Worker.runLater(() -> - { - String updaterURL = ApplicationUtils.getApplication().getInfo().getUserInfo() - .get(AppUserInfoStrings.UPDATER_PROGRAM) + UPDATER_JAR; - Path path = ApplicationUtils.getApplication().getPath(PathType.DOWNLOAD, UPDATER_JAR); - try { - downloadUpdater(updaterURL, path); - startJarFile(parameter, path); - } catch (Exception e) { - e.printStackTrace(); - - // Error Message - String errorMessage = Localization.getString(Strings.Error_Update_Download, e.getMessage()); - Optional<Image> icon = PlayPadPlugin.getImplementation().getIcon(); - showErrorMessage(errorMessage, icon, dialogOwner); - } - }); - } - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - @Deprecated - private static void windowsUpdate(Window dialogOwner, String parameter, boolean admin) { - try { - Path fileExe = Paths.get(UPDATER_EXE); - Path fileExeFolder = ApplicationUtils.getApplication().getPath(PathType.DOWNLOAD, UPDATER_EXE); - - if (Files.exists(fileExe)) { - startExeFile(parameter, fileExe, admin); - } else if (Files.exists(fileExeFolder)) { - startExeFile(parameter, fileExeFolder, admin); - } else { - UpdaterDialog dialog = new UpdaterDialog(dialogOwner); - dialog.show(); - - Worker.runLater(() -> - { - App app = ApplicationUtils.getApplication(); - - String updaterURL = app.getInfo().getUserInfo().get(AppUserInfoStrings.UPDATER_PROGRAM) - + UPDATER_EXE; - Path path = app.getPath(PathType.DOWNLOAD, UPDATER_EXE); - try { - downloadUpdater(updaterURL, path); - startExeFile(parameter, path, admin); - } catch (Exception e) { - e.printStackTrace(); - - // Error Message - String errorMessage = Localization.getString(Strings.Error_Update_Download, e.getMessage()); - Optional<Image> icon = PlayPadPlugin.getImplementation().getIcon(); - showErrorMessage(errorMessage, icon, dialogOwner); - } - }); - } - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - private static void downloadUpdater(String updaterURL, Path path) throws IOException, MalformedURLException { - if (Files.notExists(path)) { - Files.createDirectories(path.getParent()); - Files.createFile(path); - } - - URLConnection conn = new URL(updaterURL).openConnection(); - - InputStream iStr = conn.getInputStream(); - OutputStream oStr = Files.newOutputStream(path); - - byte[] data = new byte[1024]; - int dataLength = 0; - while ((dataLength = iStr.read(data, 0, data.length)) > 0) { - oStr.write(data, 0, dataLength); - } - oStr.close(); - } - - @Deprecated - private static void startExeFile(String parameter, Path fileExe, boolean admin) throws IOException { - if (admin) { - NativeLauncher.executeAsAdministrator(fileExe.toAbsolutePath().toString(), parameter); - } else { - ProcessBuilder builder = new ProcessBuilder(fileExe.toAbsolutePath().toString(), parameter); - builder.start(); - } - - System.exit(0); - } - - @Deprecated - private static void startJarFile(String parameter, Path fileJar) throws IOException { - ProcessBuilder builder = new ProcessBuilder("java", "-jar", fileJar.toAbsolutePath().toString(), parameter); - builder.start(); - System.exit(0); - } - + // Settings Tab Methods @Override public void loadSettings(Profile profile) { automaticSearchCheckBox.setSelected(profile.getProfileSettings().isAutoUpdate()); @@ -325,21 +157,4 @@ public class UpdateTabViewController extends SettingsTabViewController { public String name() { return Localization.getString(Strings.UI_Window_Settings_Updates_Title); } - - private static void showErrorMessage(String message, Optional<Image> icon, Window owner) { - if (!Platform.isFxApplicationThread()) { - Platform.runLater(() -> showErrorMessage(message, icon, owner)); - return; - } - - Alert alert = new Alert(AlertType.ERROR); - alert.initOwner(owner); - alert.initModality(Modality.WINDOW_MODAL); - alert.setContentText(message); - if (icon.isPresent()) { - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(icon.get()); - } - alert.showAndWait(); - } } -- GitLab