diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/BatchConfiguration.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/BatchConfiguration.java index ef31818f470b918ebeafd3f777b963bf4c02cd72..a141b493a3e7f2ef6acbe2f728cd24e6c01f2631 100644 --- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/BatchConfiguration.java +++ b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/BatchConfiguration.java @@ -49,7 +49,7 @@ public class BatchConfiguration this.destinationCategoryRepository = destinationCategoryRepository; } - @Bean + @Bean(name="migrateJob") public Job createJob() { return jobBuilderFactory.get("Migrate from h2 to postgresql") @@ -71,6 +71,7 @@ public class BatchConfiguration .writer(new GenericWriter<>(destinationImageRepository)) .listener(new GenericChunkListener("image")) .listener(new GenericStepListener("images")) + .allowStartIfComplete(true) .build(); } @@ -84,6 +85,7 @@ public class BatchConfiguration .writer(new GenericWriter<>(destinationIconRepository)) .listener(new GenericChunkListener("icon")) .listener(new GenericStepListener("icons")) + .allowStartIfComplete(true) .build(); } @@ -97,6 +99,7 @@ public class BatchConfiguration .writer(new GenericWriter<>(destinationCategoryRepository)) .listener(new GenericChunkListener("category")) .listener(new GenericStepListener("categories")) + .allowStartIfComplete(true) .build(); } } 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 f176618cadc6ec9dafc448bea1d7598f0aa4755d..c043489cb1c0f10c700da366085722dd313e582e 100644 --- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java +++ b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java @@ -1,13 +1,35 @@ package de.deadlocker8.budgetmaster.databasemigrator; +import org.springframework.batch.core.Job; +import org.springframework.batch.core.JobParametersBuilder; +import org.springframework.batch.core.launch.JobLauncher; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class DatabaseMigratorMain +public class DatabaseMigratorMain implements CommandLineRunner { + private final JobLauncher jobLauncher; + + @Qualifier("migrateJob") + private final Job migrateJob; + + public DatabaseMigratorMain(JobLauncher jobLauncher, Job migrateJob) + { + this.jobLauncher = jobLauncher; + this.migrateJob = migrateJob; + } + public static void main(String[] args) { SpringApplication.run(DatabaseMigratorMain.class, args); } + + @Override + public void run(String... args) throws Exception + { + jobLauncher.run(migrateJob, new JobParametersBuilder().toJobParameters()); + } } diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/SchedulerConfig.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/SchedulerConfig.java deleted file mode 100644 index 7b6f6cd83d64a10d4f5a6726f8fc5e4eb80336d4..0000000000000000000000000000000000000000 --- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/SchedulerConfig.java +++ /dev/null @@ -1,50 +0,0 @@ -package de.deadlocker8.budgetmaster.databasemigrator; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.batch.core.*; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.batch.core.launch.JobOperator; -import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException; -import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException; -import org.springframework.batch.core.repository.JobRestartException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@Configuration -@EnableScheduling -public class SchedulerConfig -{ - private static final Logger LOGGER = LoggerFactory.getLogger(SchedulerConfig.class); - - final JobLauncher jobLauncher; - final JobOperator jobOperator; - final Job job; - - @Autowired - public SchedulerConfig(JobLauncher jobLauncher, JobOperator jobOperator, Job job) - { - this.jobLauncher = jobLauncher; - this.jobOperator = jobOperator; - this.job = job; - } - - @Scheduled(fixedDelay = Long.MAX_VALUE, initialDelay = 1000) - public void scheduleByFixedRate() throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, JobParametersInvalidException, JobRestartException - { - LOGGER.info("Starting migration..."); - final JobParameters jobParameters = new JobParametersBuilder() - .addString("time", LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)) - .toJobParameters(); - final JobExecution execution = jobLauncher.run(job, jobParameters); - - LOGGER.info("Migration DONE"); - - System.exit(0); - } -}