package org.embulk.spi; import com.google.common.base.Optional; import org.embulk.config.TaskReport; import org.embulk.config.CommitReport; public class TaskState { private volatile boolean started = false; private volatile boolean finished = false; private volatile Optional<TaskReport> taskReport = Optional.absent(); private volatile Optional<Throwable> exception = Optional.absent(); public void start() { this.started = true; } public void finish() { this.started = true; this.finished = true; } public void setTaskReport(TaskReport taskReport) { this.started = true; this.taskReport = Optional.of(taskReport); } @Deprecated public void setCommitReport(CommitReport commitReport) { this.started = true; this.taskReport = Optional.<TaskReport>of(commitReport); } public void setException(Throwable exception) { this.started = true; this.exception = Optional.fromNullable(exception); } public void resetException() { this.started = true; this.exception = Optional.absent(); } public boolean isStarted() { return started; } public boolean isFinished() { return finished; } public boolean isCommitted() { return taskReport.isPresent(); } public Optional<TaskReport> getTaskReport() { return taskReport; } @Deprecated @SuppressWarnings("unchecked") public Optional<CommitReport> getCommitReport() { return (Optional) taskReport; // the only implementation of TaskReport is DataSourceImpl which implements CommitReport; } public Optional<Throwable> getException() { return exception; } }