re base code
[sdc.git] / asdctool / src / main / java / org / openecomp / sdc / asdctool / migration / core / execution / MigrationExecutorImpl.java
1 package org.openecomp.sdc.asdctool.migration.core.execution;
2
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;
8
9
10 public class MigrationExecutorImpl implements MigrationExecutor {
11
12     private static final Logger LOGGER = Logger.getLogger(MigrationExecutorImpl.class);
13
14     @Override
15     public MigrationExecutionResult execute(IMigrationStage migration) throws MigrationException {
16         try {
17             LOGGER.info("starting migration {}. description: {}. version {}", migration.getClass().getName(), migration.description(),  migration.getVersion().toString());
18             StopWatch stopWatch = new StopWatch();
19             stopWatch.start();
20             MigrationResult migrationResult = migration.migrate();
21             stopWatch.stop();
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);
27
28         }
29     }
30
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);
34     }
35
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;
45     }
46
47 }