Skip to content
Snippets Groups Projects
Commit 6a86bd4c authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#663 - migrator: cleanup database before migration

parent 71f35213
No related branches found
No related tags found
No related merge requests found
...@@ -53,6 +53,8 @@ import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.report.ReportSe ...@@ -53,6 +53,8 @@ import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.report.ReportSe
import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag.TagReader; import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag.TagReader;
import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag.TemplateTagReader; import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag.TemplateTagReader;
import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag.TransactionTagReader; import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag.TransactionTagReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.batch.core.Job; import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step; import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
...@@ -68,6 +70,8 @@ import javax.sql.DataSource; ...@@ -68,6 +70,8 @@ import javax.sql.DataSource;
@EnableBatchProcessing @EnableBatchProcessing
public class BatchConfiguration public class BatchConfiguration
{ {
private static final Logger LOGGER = LoggerFactory.getLogger(BatchConfiguration.class);
final JobBuilderFactory jobBuilderFactory; final JobBuilderFactory jobBuilderFactory;
final StepBuilderFactory stepBuilderFactory; final StepBuilderFactory stepBuilderFactory;
...@@ -107,6 +111,7 @@ public class BatchConfiguration ...@@ -107,6 +111,7 @@ public class BatchConfiguration
final DestinationTemplateRepository destinationTemplateRepository; final DestinationTemplateRepository destinationTemplateRepository;
final DestinationTemplateGroupRepository destinationTemplateGroupRepository; final DestinationTemplateGroupRepository destinationTemplateGroupRepository;
@SuppressWarnings("squid:S107")
public BatchConfiguration(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory, DataSource primaryDataSource, DestinationImageRepository destinationImageRepository, DestinationIconRepository destinationIconRepository, DestinationCategoryRepository destinationCategoryRepository, DestinationAccountRepository destinationAccountRepository, DestinationChartRepository destinationChartRepository, DestinationHintRepository destinationHintRepository, DestinationRepeatingEndRepository destinationRepeatingEndRepository, DestinationRepeatingEndAfterXTimesRepository destinationRepeatingEndAfterXTimesRepository, DestinationRepeatingEndDateRepository destinationRepeatingEndDateRepository, DestinationRepeatingEndNeverRepository destinationRepeatingEndNeverRepository, DestinationRepeatingModifierRepository destinationRepeatingModifierRepository, DestinationRepeatingModifierDaysRepository destinationRepeatingModifierDaysRepository, DestinationRepeatingModifierMonthsRepository destinationRepeatingModifierMonthsRepository, DestinationRepeatingModifierYearsRepository destinationRepeatingModifierYearsRepository, DestinationRepeatingOptionRepository destinationRepeatingOptionRepository, DestinationReportColumnRepository destinationReportColumnRepository, DestinationReportSettingsRepository destinationReportSettingsRepository, DestinationSettingsRepository destinationSettingsRepository, DestinationTagRepository destinationTagRepository, DestinationTemplateTagRepository destinationTemplateTagRepository, DestinationTransactionTagRepository destinationTransactionTagRepository, DestinationUserRepository destinationUserRepository, DestinationTransactionRepository destinationTransactionRepository, DestinationTemplateRepository destinationTemplateRepository, DestinationTemplateGroupRepository destinationTemplateGroupRepository) public BatchConfiguration(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory, DataSource primaryDataSource, DestinationImageRepository destinationImageRepository, DestinationIconRepository destinationIconRepository, DestinationCategoryRepository destinationCategoryRepository, DestinationAccountRepository destinationAccountRepository, DestinationChartRepository destinationChartRepository, DestinationHintRepository destinationHintRepository, DestinationRepeatingEndRepository destinationRepeatingEndRepository, DestinationRepeatingEndAfterXTimesRepository destinationRepeatingEndAfterXTimesRepository, DestinationRepeatingEndDateRepository destinationRepeatingEndDateRepository, DestinationRepeatingEndNeverRepository destinationRepeatingEndNeverRepository, DestinationRepeatingModifierRepository destinationRepeatingModifierRepository, DestinationRepeatingModifierDaysRepository destinationRepeatingModifierDaysRepository, DestinationRepeatingModifierMonthsRepository destinationRepeatingModifierMonthsRepository, DestinationRepeatingModifierYearsRepository destinationRepeatingModifierYearsRepository, DestinationRepeatingOptionRepository destinationRepeatingOptionRepository, DestinationReportColumnRepository destinationReportColumnRepository, DestinationReportSettingsRepository destinationReportSettingsRepository, DestinationSettingsRepository destinationSettingsRepository, DestinationTagRepository destinationTagRepository, DestinationTemplateTagRepository destinationTemplateTagRepository, DestinationTransactionTagRepository destinationTransactionTagRepository, DestinationUserRepository destinationUserRepository, DestinationTransactionRepository destinationTransactionRepository, DestinationTemplateRepository destinationTemplateRepository, DestinationTemplateGroupRepository destinationTemplateGroupRepository)
{ {
this.jobBuilderFactory = jobBuilderFactory; this.jobBuilderFactory = jobBuilderFactory;
...@@ -148,6 +153,63 @@ public class BatchConfiguration ...@@ -148,6 +153,63 @@ public class BatchConfiguration
this.destinationTemplateGroupRepository = destinationTemplateGroupRepository; this.destinationTemplateGroupRepository = destinationTemplateGroupRepository;
} }
public void cleanDatabase()
{
LOGGER.debug(">>> Cleanup database...");
// deletion order is important!
LOGGER.debug("Cleaning tags...");
destinationTemplateTagRepository.deleteAll();
destinationTransactionTagRepository.deleteAll();
destinationTagRepository.deleteAll();
LOGGER.debug("Cleaning transactions...");
destinationTransactionRepository.deleteAll();
LOGGER.debug("Cleaning templates...");
destinationTemplateRepository.deleteAll();
LOGGER.debug("Cleaning template groups.");
destinationTemplateGroupRepository.deleteAll();
LOGGER.debug("Cleaning categories...");
destinationCategoryRepository.deleteAll();
LOGGER.debug("Cleaning users...");
destinationUserRepository.deleteAll();
LOGGER.debug("Cleaning accounts...");
destinationAccountRepository.deleteAll();
LOGGER.debug("Cleaning report settings...");
destinationReportColumnRepository.deleteAll();
destinationReportSettingsRepository.deleteAll();
LOGGER.debug("Cleaning charts...");
destinationChartRepository.deleteAll();
LOGGER.debug("Cleaning hints...");
destinationHintRepository.deleteAll();
LOGGER.debug("Cleaning icons...");
destinationIconRepository.deleteAll();
LOGGER.debug("Cleaning images...");
destinationImageRepository.deleteAll();
LOGGER.debug("Cleaning repeating options...");
destinationRepeatingOptionRepository.deleteAll();
destinationRepeatingEndAfterXTimesRepository.deleteAll();
destinationRepeatingEndDateRepository.deleteAll();
destinationRepeatingEndNeverRepository.deleteAll();
destinationRepeatingEndRepository.deleteAll();
destinationRepeatingModifierDaysRepository.deleteAll();
destinationRepeatingModifierMonthsRepository.deleteAll();
destinationRepeatingModifierYearsRepository.deleteAll();
destinationRepeatingModifierRepository.deleteAll();
LOGGER.debug("Cleaning settings...");
destinationSettingsRepository.deleteAll();
LOGGER.debug(">>> Cleanup database DONE");
}
@Bean(name = "migrateJob") @Bean(name = "migrateJob")
public Job createMigrateJob() public Job createMigrateJob()
{ {
......
...@@ -18,12 +18,15 @@ public class DatabaseMigratorMain implements CommandLineRunner ...@@ -18,12 +18,15 @@ public class DatabaseMigratorMain implements CommandLineRunner
private final JobLauncher jobLauncher; private final JobLauncher jobLauncher;
private final BatchConfiguration batchConfiguration;
@Qualifier("migrateJob") @Qualifier("migrateJob")
private final Job migrateJob; private final Job migrateJob;
public DatabaseMigratorMain(JobLauncher jobLauncher, Job migrateJob) public DatabaseMigratorMain(JobLauncher jobLauncher, BatchConfiguration batchConfiguration, Job migrateJob)
{ {
this.jobLauncher = jobLauncher; this.jobLauncher = jobLauncher;
this.batchConfiguration = batchConfiguration;
this.migrateJob = migrateJob; this.migrateJob = migrateJob;
} }
...@@ -68,6 +71,8 @@ public class DatabaseMigratorMain implements CommandLineRunner ...@@ -68,6 +71,8 @@ public class DatabaseMigratorMain implements CommandLineRunner
@Override @Override
public void run(String... args) throws Exception public void run(String... args) throws Exception
{ {
batchConfiguration.cleanDatabase();
jobLauncher.run(migrateJob, new JobParametersBuilder().toJobParameters()); jobLauncher.run(migrateJob, new JobParametersBuilder().toJobParameters());
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment