From a165288ac6fb0c2ddb2658d49dd79272b0416485 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 21 May 2022 11:58:09 +0200
Subject: [PATCH] #663 - only reset sequences for postgresql

---
 .../DatabaseMigratorMain.java                 |  4 +++
 .../databasemigrator/DatabaseType.java        | 33 +++++++++++++++++++
 .../listener/GenericStepListener.java         |  6 ++--
 3 files changed, 41 insertions(+), 2 deletions(-)
 create mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseType.java

diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java
index d22b9b0ad..df58e3280 100644
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java
+++ b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java
@@ -14,6 +14,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 @SpringBootApplication
 public class DatabaseMigratorMain implements CommandLineRunner
 {
+	public static DatabaseType databaseType;
+
 	private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseMigratorMain.class);
 
 	private final JobLauncher jobLauncher;
@@ -48,6 +50,8 @@ public class DatabaseMigratorMain implements CommandLineRunner
 			LOGGER.debug("{}={}", option.getName(), cmd.getOptionValue(option.getName()));
 		}
 
+		databaseType = DatabaseType.fromDriverClassName(cmd.getOptionValue(CommandLineOptions.DESTINATION_DRIVER_CLASS_NAME.getName()));
+
 		SpringApplication.run(DatabaseMigratorMain.class, args);
 	}
 
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseType.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseType.java
new file mode 100644
index 000000000..0725be421
--- /dev/null
+++ b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseType.java
@@ -0,0 +1,33 @@
+package de.deadlocker8.budgetmaster.databasemigrator;
+
+public enum DatabaseType
+{
+	POSTGRESQL("org.postgresql.Driver"),
+	MARIADB( "org.mariadb.jdbc.Driver");
+
+	private final String driverClassName;
+
+	DatabaseType(String driverClassName)
+	{
+		this.driverClassName = driverClassName;
+	}
+
+
+	public String getDriverClassName()
+	{
+		return driverClassName;
+	}
+
+	public static DatabaseType fromDriverClassName(String driverClassName)
+	{
+		for(DatabaseType type : values())
+		{
+			if(type.getDriverClassName().equalsIgnoreCase(driverClassName))
+			{
+				return type;
+			}
+		}
+
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericStepListener.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericStepListener.java
index 075a6ffad..270a657a7 100644
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericStepListener.java
+++ b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericStepListener.java
@@ -1,5 +1,7 @@
 package de.deadlocker8.budgetmaster.databasemigrator.listener;
 
+import de.deadlocker8.budgetmaster.databasemigrator.DatabaseMigratorMain;
+import de.deadlocker8.budgetmaster.databasemigrator.DatabaseType;
 import de.deadlocker8.budgetmaster.databasemigrator.Utils;
 import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
 import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationRepository;
@@ -37,7 +39,7 @@ public class GenericStepListener<T extends ProvidesID, ID> implements StepExecut
 		LOGGER.info("\n");
 		LOGGER.info(">>> Migrate {}s...", tableName);
 
-		if(adjustSequence)
+		if(adjustSequence && DatabaseMigratorMain.databaseType.equals(DatabaseType.POSTGRESQL))
 		{
 			LOGGER.debug("Resetting sequence to 0");
 			jdbcTemplate.update(MessageFormat.format("ALTER SEQUENCE {0}_id_seq RESTART WITH 1", tableName));
@@ -50,7 +52,7 @@ public class GenericStepListener<T extends ProvidesID, ID> implements StepExecut
 		final int count = Utils.getCommitCount(stepExecution);
 		LOGGER.info(">>> Successfully migrated {} {}s\n", count, tableName);
 
-		if(adjustSequence)
+		if(adjustSequence && DatabaseMigratorMain.databaseType.equals(DatabaseType.POSTGRESQL))
 		{
 			final int highestUsedID = getHighestUsedID();
 			final int newSequence = highestUsedID + 1;
-- 
GitLab