From bafd05e6e38fd837167abb4545fed9a331c2670d Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Tue, 4 Jun 2019 20:24:24 +0200
Subject: [PATCH] #430 - updated versionizer

---
 pom.xml                                       |  4 +++-
 .../settings/SettingsController.java          |  2 +-
 .../update/BudgetMasterUpdateService.java     | 15 +++++++++++--
 .../budgetmaster/update/IsExeFileHook.java    | 22 +++++++++++++++++++
 .../budgetmaster/update/IsJarFileHook.java    | 22 +++++++++++++++++++
 5 files changed, 61 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/de/deadlocker8/budgetmaster/update/IsExeFileHook.java
 create mode 100644 src/main/java/de/deadlocker8/budgetmaster/update/IsJarFileHook.java

diff --git a/pom.xml b/pom.xml
index 028d4e0b3..f80fb950e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,7 +57,7 @@
         <java.version>1.8</java.version>
 
         <jlibs.version>2.0.4</jlibs.version>
-        <versionizer.version>1.0.3</versionizer.version>
+        <versionizer.version>1.1.0</versionizer.version>
         <webjars-locator.version>0.36</webjars-locator.version>
         <jquery.version>3.3.1</jquery.version>
         <materializecss.version>1.0.0</materializecss.version>
@@ -183,6 +183,8 @@
             <artifactId>sortablejs</artifactId>
             <version>${sortablejs.version}</version>
         </dependency>
+
+        <!-- selenium -->
         <dependency>
             <groupId>org.seleniumhq.selenium</groupId>
             <artifactId>selenium-api</artifactId>
diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
index 4343b8771..1ba5be5d5 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
@@ -283,7 +283,7 @@ public class SettingsController extends BaseController
 			return "redirect:/settings";
 		}
 
-		UpdateItem.Entry entry = new UpdateItem.Entry(budgetMasterUpdateService.getAvailableVersion(), budgetMasterUpdateService.getExecutablePath(), budgetMasterUpdateService.getFileType());
+		UpdateItem.Entry entry = new UpdateItem.Entry(budgetMasterUpdateService.getAvailableVersion());
 		try
 		{
 			budgetMasterUpdateService.getUpdateService().runVersionizerInstance(entry);
diff --git a/src/main/java/de/deadlocker8/budgetmaster/update/BudgetMasterUpdateService.java b/src/main/java/de/deadlocker8/budgetmaster/update/BudgetMasterUpdateService.java
index bbbc67a8b..246210ba7 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/update/BudgetMasterUpdateService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/update/BudgetMasterUpdateService.java
@@ -5,6 +5,7 @@ import de.deadlocker8.budgetmaster.Main;
 import de.deadlocker8.budgetmaster.settings.SettingsService;
 import de.thecodelabs.storage.settings.Storage;
 import de.thecodelabs.storage.settings.StorageTypes;
+import de.thecodelabs.utils.util.SystemUtils;
 import de.thecodelabs.versionizer.VersionizerItem;
 import de.thecodelabs.versionizer.config.Artifact;
 import de.thecodelabs.versionizer.config.Repository;
@@ -21,6 +22,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
+import java.nio.file.Paths;
 
 @Service
 public class BudgetMasterUpdateService
@@ -51,6 +53,9 @@ public class BudgetMasterUpdateService
 		updateStrategy = UpdateService.Strategy.JAR;
 		fileType = RemoteFile.FileType.JAR;
 
+		SystemUtils.setIsJarHook(new IsJarFileHook());
+		SystemUtils.setIsExeHook(new IsExeFileHook());
+
 		if(source != null)
 		{
 			isRunningFromSource = false;
@@ -86,6 +91,7 @@ public class BudgetMasterUpdateService
 		artifact.setVersion(Build.getInstance().getVersionName());
 		artifact.setGroupId("de.deadlocker8");
 		artifact.setArtifactId("BudgetMaster");
+		artifact.setArtifactType(Artifact.ArtifactType.RUNTIME);
 		return artifact;
 	}
 
@@ -95,8 +101,13 @@ public class BudgetMasterUpdateService
 		ClassLoader classLoader = Main.class.getClassLoader();
 		Repository repository = Storage.load(classLoader.getResourceAsStream("repositories.json"), StorageTypes.JSON, Repository.class);
 
-		VersionizerItem versionizerItem = new VersionizerItem(repository, artifact, executablePath);
-		return UpdateService.startVersionizer(versionizerItem, updateStrategy, UpdateService.InteractionType.HEADLESS, UpdateService.RepositoryType.RELEASE);
+		VersionizerItem versionizerItem = new VersionizerItem(repository, executablePath);
+		UpdateService updateService = UpdateService.startVersionizer(versionizerItem, updateStrategy, UpdateService.InteractionType.HEADLESS, UpdateService.RepositoryType.RELEASE);
+		if(executablePath != null)
+		{
+			updateService.addArtifact(artifact, Paths.get(executablePath));
+		}
+		return updateService;
 	}
 
 	public UpdateService getUpdateService()
diff --git a/src/main/java/de/deadlocker8/budgetmaster/update/IsExeFileHook.java b/src/main/java/de/deadlocker8/budgetmaster/update/IsExeFileHook.java
new file mode 100644
index 000000000..b094cca60
--- /dev/null
+++ b/src/main/java/de/deadlocker8/budgetmaster/update/IsExeFileHook.java
@@ -0,0 +1,22 @@
+package de.deadlocker8.budgetmaster.update;
+
+import de.thecodelabs.utils.util.SystemUtils;
+import org.springframework.boot.ApplicationHome;
+
+import java.io.File;
+
+public class IsExeFileHook implements SystemUtils.SystemFileHook
+{
+	@Override
+	public boolean isFileType()
+	{
+		File source = new ApplicationHome().getSource();
+		if(source == null)
+		{
+			return false;
+		}
+
+		String sourcePath = source.getAbsolutePath();
+		return sourcePath.endsWith(".exe") || sourcePath.endsWith(".EXE");
+	}
+}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/update/IsJarFileHook.java b/src/main/java/de/deadlocker8/budgetmaster/update/IsJarFileHook.java
new file mode 100644
index 000000000..6391736b4
--- /dev/null
+++ b/src/main/java/de/deadlocker8/budgetmaster/update/IsJarFileHook.java
@@ -0,0 +1,22 @@
+package de.deadlocker8.budgetmaster.update;
+
+import de.thecodelabs.utils.util.SystemUtils;
+import org.springframework.boot.ApplicationHome;
+
+import java.io.File;
+
+public class IsJarFileHook implements SystemUtils.SystemFileHook
+{
+	@Override
+	public boolean isFileType()
+	{
+		File source = new ApplicationHome().getSource();
+		if(source == null)
+		{
+			return false;
+		}
+
+		String sourcePath = source.getAbsolutePath();
+		return sourcePath.endsWith(".jar") || sourcePath.endsWith(".JAR");
+	}
+}
-- 
GitLab