dnet-applications/libs/dnet-wf-service/src/main/java/eu/dnetlib/manager/wf/workflows/procs/Token.java

148 lines
3.1 KiB
Java

package eu.dnetlib.manager.wf.workflows.procs;
import java.time.LocalDateTime;
import java.util.UUID;
import com.google.common.base.Throwables;
import eu.dnetlib.manager.wf.workflows.graph.Arc;
import eu.dnetlib.manager.wf.workflows.util.NodeTokenCallback;
import eu.dnetlib.manager.wf.workflows.util.ProgressProvider;
/**
* Created by michele on 19/11/15.
*/
public class Token {
private final String id;
private final String nodeName;
private final Env env = new Env();
private final LocalDateTime startDate;
private final NodeTokenCallback callback;
private boolean failed = false;
private LocalDateTime endDate = LocalDateTime.MIN;
private String nextArc = Arc.DEFAULT_ARC;
private boolean active = true;
private String error = "";
private String errorStackTrace = "";
private ProgressProvider progressProvider;
public Token(final String nodeName, final NodeTokenCallback callback) {
this.id = "token-" + UUID.randomUUID();
this.nodeName = nodeName;
this.startDate = LocalDateTime.now();
this.callback = callback;
}
public String getId() {
return this.id;
}
public Env getEnv() {
return this.env;
}
public LocalDateTime getStartDate() {
return this.startDate;
}
public LocalDateTime getEndDate() {
return this.endDate;
}
public void setEndDate(final LocalDateTime endDate) {
this.endDate = endDate;
}
public String getNextArc() {
return this.nextArc;
}
public void setNextArc(final String nextArc) {
this.nextArc = nextArc;
}
public boolean isActive() {
return this.active;
}
public void setActive(final boolean active) {
this.active = active;
}
public boolean isFailed() {
return this.failed;
}
public void setFailed(final boolean failed) {
this.failed = failed;
}
public void release(final String arcName) {
setNextArc(arcName);
setEndDate(LocalDateTime.now());
setActive(false);
if (this.callback != null) {
this.callback.onSuccess(this);
}
}
public void release() {
setEndDate(LocalDateTime.now());
setActive(false);
if (this.callback != null) {
this.callback.onSuccess(this);
}
}
public void releaseAsFailed(final Throwable e) {
setEndDate(LocalDateTime.now());
setActive(false);
setFailed(true);
setError(e.getMessage());
setErrorStackTrace(Throwables.getStackTraceAsString(e));
if (this.callback != null) {
this.callback.onFail(this);
}
}
public void releaseAsFailed(final String error) {
setEndDate(LocalDateTime.now());
setActive(false);
setFailed(true);
setError(error);
if (this.callback != null) {
this.callback.onFail(this);
}
}
public String getNodeName() {
return this.nodeName;
}
public String getError() {
return this.error;
}
public void setError(final String error) {
this.error = error;
}
public String getErrorStackTrace() {
return this.errorStackTrace;
}
public void setErrorStackTrace(final String errorStackTrace) {
this.errorStackTrace = errorStackTrace;
}
public ProgressProvider getProgressProvider() {
return this.progressProvider;
}
public void setProgressProvider(final ProgressProvider progressProvider) {
this.progressProvider = progressProvider;
}
}