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