package brainslug.flow.execution.async;
import brainslug.flow.definition.Identifier;
import brainslug.util.Option;
import static brainslug.util.IdUtil.id;
public class AsyncTrigger {
Identifier id;
Identifier nodeId;
Identifier instanceId;
Identifier definitionId;
long createdDate = 0;
long dueDate = 0;
long retries = 0;
long maxRetries = 5;
long version = 0;
AsyncTriggerErrorDetails errorDetails;
public AsyncTrigger() {
}
public AsyncTrigger(String id, String nodeId, String instanceId, String definitionId, Long createdDate, Long dueDate, Long retries, Long maxRetries, Long version) {
this.id = id(id);
this.nodeId = id(nodeId);
this.instanceId = id(instanceId);
this.definitionId = id(definitionId);
this.createdDate = createdDate;
this.dueDate = dueDate;
this.retries = retries;
this.maxRetries = maxRetries;
this.version = version;
}
public Identifier getNodeId() {
return nodeId;
}
public AsyncTrigger withNodeId(Identifier taskNodeId) {
this.nodeId = taskNodeId;
return this;
}
public Identifier getInstanceId() {
return instanceId;
}
public AsyncTrigger withInstanceId(Identifier instanceId) {
this.instanceId = instanceId;
return this;
}
public Identifier getDefinitionId() {
return definitionId;
}
public AsyncTrigger withDefinitionId(Identifier definitionId) {
this.definitionId = definitionId;
return this;
}
public long getDueDate() {
return dueDate;
}
public AsyncTrigger withDueDate(long dueDate) {
this.dueDate = dueDate;
return this;
}
public long getRetries() {
return retries;
}
public AsyncTrigger incrementRetries() {
this.retries++;
return this;
}
public long getMaxRetries() {
return maxRetries;
}
public AsyncTrigger withMaxRetries(long maxRetries) {
this.maxRetries = maxRetries;
return this;
}
public Long getVersion() {
return version;
}
public AsyncTrigger incrementVersion() {
this.version++;
return this;
}
public AsyncTrigger withVersion(long version) {
this.version = version;
return this;
}
public long getCreatedDate() {
return createdDate;
}
public AsyncTrigger withCreatedDate(long createdDate) {
this.createdDate = createdDate;
return this;
}
public Option<AsyncTriggerErrorDetails> getErrorDetails() {
return Option.of(errorDetails);
}
public AsyncTrigger withErrorDetails(AsyncTriggerErrorDetails errorDetails) {
this.errorDetails = errorDetails;
return this;
}
public Option<Identifier> getId() {
return Option.of(id);
}
public AsyncTrigger withId(Identifier id) {
this.id = id;
return this;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AsyncTrigger asyncTrigger = (AsyncTrigger) o;
if (id != asyncTrigger.id) return false;
if (dueDate != asyncTrigger.dueDate) return false;
if (maxRetries != asyncTrigger.maxRetries) return false;
if (retries != asyncTrigger.retries) return false;
if (version != asyncTrigger.version) return false;
if (definitionId != null ? !definitionId.equals(asyncTrigger.definitionId) : asyncTrigger.definitionId != null)
return false;
if (errorDetails != null ? !errorDetails.equals(asyncTrigger.errorDetails) : asyncTrigger.errorDetails != null)
return false;
if (instanceId != null ? !instanceId.equals(asyncTrigger.instanceId) : asyncTrigger.instanceId != null) return false;
if (nodeId != null ? !nodeId.equals(asyncTrigger.nodeId) : asyncTrigger.nodeId != null) return false;
return true;
}
@Override
public int hashCode() {
int result = nodeId != null ? nodeId.hashCode() : 0;
result = 31 * result + (id != null ? id.hashCode() : 0);
result = 31 * result + (instanceId != null ? instanceId.hashCode() : 0);
result = 31 * result + (definitionId != null ? definitionId.hashCode() : 0);
result = 31 * result + (int) (dueDate ^ (dueDate >>> 32));
result = 31 * result + (int) (retries ^ (retries >>> 32));
result = 31 * result + (int) (maxRetries ^ (maxRetries >>> 32));
result = 31 * result + (int) (version ^ (version >>> 32));
result = 31 * result + (errorDetails != null ? errorDetails.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "AsyncTrigger{" +
"id=" + id +
", nodeId=" + nodeId +
", instanceId=" + instanceId +
", definitionId=" + definitionId +
", dueDate=" + dueDate +
", retries=" + retries +
", maxRetries=" + maxRetries +
", version=" + version +
", errorDetails=" + errorDetails +
'}';
}
}