1 package org.openecomp.sdc.asdctool.migration.core.execution;
3 import org.openecomp.sdc.asdctool.migration.core.MigrationException;
4 import org.openecomp.sdc.asdctool.migration.core.task.Migration;
5 import org.openecomp.sdc.asdctool.migration.core.task.MigrationResult;
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
8 import org.springframework.util.StopWatch;
11 public class MigrationExecutorImpl implements MigrationExecutor {
13 private static final Logger LOGGER = LoggerFactory.getLogger(MigrationExecutorImpl.class);
16 public MigrationExecutionResult execute(Migration migration) throws MigrationException {
18 LOGGER.info("starting migration {}. description: {}. version {}", migration.getClass().getName(), migration.description(), migration.getVersion().toString());
19 StopWatch stopWatch = new StopWatch();
21 MigrationResult migrationResult = migration.migrate();
23 double executionTime = stopWatch.getTotalTimeSeconds();
24 return logAndCreateExecutionResult(migration, migrationResult, executionTime);
25 } catch (RuntimeException e) {
26 LOGGER.error("migration {} has failed!", migration.description(), e);
27 throw new MigrationException("migration %s failed!!!", e);
32 private MigrationExecutionResult logAndCreateExecutionResult(Migration migration, MigrationResult migrationResult, double executionTime) {
33 LOGGER.info("finished migration {}. with version {}. migration status: {}, migration message: {}, execution time: {}", migration.getClass().getName(), migration.getVersion().toString(), migrationResult.getMigrationStatus().name(), migrationResult.getMsg(), executionTime);
34 return createMigrationTask(migration, migrationResult, executionTime);
37 private MigrationExecutionResult createMigrationTask(Migration migration, MigrationResult migrationResult, double totalTimeSeconds) {
38 MigrationExecutionResult migrationExecutionResult = new MigrationExecutionResult();
39 migrationExecutionResult.setExecutionTime(totalTimeSeconds);
40 migrationExecutionResult.setMigrationStatus(migrationResult.getMigrationStatus());
41 migrationExecutionResult.setMsg(migrationResult.getMsg());
42 migrationExecutionResult.setTaskName(migration.getClass().getName());
43 migrationExecutionResult.setVersion(migration.getVersion());
44 return migrationExecutionResult;