Skip to content
Snippets Groups Projects
Commit e0b37160 authored by Daniel Gerhardt's avatar Daniel Gerhardt
Browse files

Do not initialize V2ToV3Migration w/o migrate-from property

Startup failed before if no second database for migration was available.

Fixes #19.
parent 01aa6692
Branches
No related merge requests found
......@@ -34,6 +34,9 @@ public class PersistanceConfig {
@Bean
public MangoCouchDbConnector couchDbMigrationConnector() throws Exception {
if (couchDbMigrateFrom.isEmpty()) {
return null;
}
return new MangoCouchDbConnector(couchDbMigrateFrom, couchDbInstance(), couchDbObjectMapperFactory());
}
......
package de.thm.arsnova.persistance.couchdb.migrations;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.stereotype.Component;
@Component
public class MigrateFromLegacyCondition implements Condition {
@Override
public boolean matches(final ConditionContext context, final AnnotatedTypeMetadata metadata) {
final String migrateFrom = context.getEnvironment().getProperty("couchdb.migrate-from");
return migrateFrom != null && !migrateFrom.isEmpty();
}
}
......@@ -23,9 +23,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
......@@ -37,11 +39,12 @@ import java.util.stream.Collectors;
public class MigrationExecutor {
private static final Logger logger = LoggerFactory.getLogger(MigrationExecutor.class);
private List<Migration> migrations;
private List<Migration> migrations = Collections.EMPTY_LIST;
public MigrationExecutor(List<Migration> migrations) {
this.migrations = migrations.stream()
.sorted(Comparator.comparing(Migration::getId)).collect(Collectors.toList());
public MigrationExecutor(final Optional<List<Migration>> migrations) {
migrations.map(m -> this.migrations = m.stream()
.sorted(Comparator.comparing(Migration::getId)).collect(Collectors.toList()));
logger.debug("Initialized {} migration(s).", this.migrations.size());
}
public boolean runMigrations(@NonNull final MigrationState migrationState) {
......
......@@ -29,6 +29,7 @@ import de.thm.arsnova.persistance.UserRepository;
import de.thm.arsnova.persistance.couchdb.support.MangoCouchDbConnector;
import org.ektorp.DocumentNotFoundException;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
......@@ -44,6 +45,7 @@ import java.util.Set;
*
* @author Daniel Gerhardt
*/
@Conditional(MigrateFromLegacyCondition.class)
@Service
public class V2ToV3Migration implements Migration {
private static final String ID = "20170914131300";
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment