package com.sungardas.enhancedsnapshots.tasks.executors; import com.sungardas.enhancedsnapshots.aws.dynamodb.model.BackupEntry; import com.sungardas.enhancedsnapshots.aws.dynamodb.model.TaskEntry; import com.sungardas.enhancedsnapshots.aws.dynamodb.repository.BackupRepository; import com.sungardas.enhancedsnapshots.aws.dynamodb.repository.TaskRepository; import com.sungardas.enhancedsnapshots.exception.DataAccessException; import com.sungardas.enhancedsnapshots.exception.EnhancedSnapshotsException; import com.sungardas.enhancedsnapshots.service.MailService; import com.sungardas.enhancedsnapshots.service.NotificationService; import com.sungardas.enhancedsnapshots.service.TaskService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; import static com.sungardas.enhancedsnapshots.aws.dynamodb.model.TaskEntry.TaskEntryStatus.ERROR; import static com.sungardas.enhancedsnapshots.aws.dynamodb.model.TaskEntry.TaskEntryStatus.RUNNING; @Service("awsDeleteTaskExecutor") @Profile("dev") public class DeleteFakeTaskExecutor implements TaskExecutor { private static final Logger LOG = LogManager.getLogger(DeleteFakeTaskExecutor.class); @Autowired private TaskRepository taskRepository; @Autowired private BackupRepository backupRepository; @Autowired private NotificationService notificationService; @Autowired private TaskService taskService; @Autowired private MailService mailService; @Override public void execute(TaskEntry taskEntry) { LOG.info("Task " + taskEntry.getId() + ": Change task state to 'running'"); notificationService.notifyAboutRunningTaskProgress(taskEntry.getId(), "Delete task started", 0); taskEntry.setStatus(RUNNING.getStatus()); taskRepository.save(taskEntry); BackupEntry backupEntry = new BackupEntry(); backupEntry.setVolumeId(taskEntry.getVolume()); backupEntry.setFileName(taskEntry.getOptions()); try { notificationService.notifyAboutRunningTaskProgress(taskEntry.getId(), "Deleting", 50); backupRepository.delete(backupEntry); taskService.complete(taskEntry); notificationService.notifyAboutRunningTaskProgress(taskEntry.getId(), "Delete complete", 100); LOG.info("Task " + taskEntry.getId() + ": Change task state to 'complete'"); mailService.notifyAboutError(taskEntry, new EnhancedSnapshotsException("Test message")); } catch (DataAccessException e){ LOG.error(e); taskEntry.setStatus(ERROR.getStatus()); taskRepository.save(taskEntry); } } }