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.IMigrationStage;
5 import org.openecomp.sdc.asdctool.migration.core.task.MigrationResult;
6 import org.openecomp.sdc.common.log.wrappers.Logger;
7 import org.springframework.util.StopWatch;
10 public class MigrationExecutorImpl implements MigrationExecutor {
12 private static final Logger LOGGER = Logger.getLogger(MigrationExecutorImpl.class);
15 public MigrationExecutionResult execute(IMigrationStage migration) throws MigrationException {
17 LOGGER.info("starting migration {}. description: {}. version {}", migration.getClass().getName(), migration.description(), migration.getVersion().toString());
18 StopWatch stopWatch = new StopWatch();
20 MigrationResult migrationResult = migration.migrate();
22 double executionTime = stopWatch.getTotalTimeSeconds();
23 return logAndCreateExecutionResult(migration, migrationResult, executionTime);
24 } catch (RuntimeException e) {
25 LOGGER.error("migration {} has failed!", migration.description(), e);
26 throw new MigrationException("migration %s failed!!!", e);
31 private MigrationExecutionResult logAndCreateExecutionResult(IMigrationStage migration, MigrationResult migrationResult, double executionTime) {
32 LOGGER.info("finished migration {}. with version {}. migration status: {}, migration message: {}, execution time: {}", migration.getClass().getName(), migration.getVersion().toString(), migrationResult.getMigrationStatus().name(), migrationResult.getMsg(), executionTime);
33 return createMigrationTask(migration, migrationResult, executionTime);
36 private MigrationExecutionResult createMigrationTask(IMigrationStage migration, MigrationResult migrationResult, double totalTimeSeconds) {
37 MigrationExecutionResult migrationExecutionResult = new MigrationExecutionResult();
38 migrationExecutionResult.setExecutionTime(totalTimeSeconds);
39 migrationExecutionResult.setMigrationStatus(migrationResult.getMigrationStatus());
40 migrationExecutionResult.setMsg(migrationResult.getMsg());
41 migrationExecutionResult.setTaskName(migration.getClass().getName());
42 migrationExecutionResult.setVersion(migration.getVersion());
43 migrationExecutionResult.setDescription(migration.description());
44 return migrationExecutionResult;