package io.vivarium.net.jobs;
import java.util.Collection;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.google.common.base.Preconditions;
import io.vivarium.net.UUIDSerializer;
import io.vivarium.util.UUID;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@EqualsAndHashCode(callSuper = true)
@ToString
public class SimulationJob extends Job
{
private final long _endTick;
@JsonCreator
public SimulationJob(@JsonProperty("type") JobType jobType,
@JsonProperty("jobID") @JsonSerialize(using = UUIDSerializer.class) UUID jobID,
@JsonProperty("inputResources") Collection<UUID> inputResources,
@JsonProperty("outputResources") Collection<UUID> outputResources,
@JsonProperty("dependencies") Collection<UUID> dependencies, @JsonProperty("endTick") long endTick)
{
super(jobType, jobID, inputResources, outputResources, dependencies);
Preconditions.checkArgument(jobType == JobType.RUN_SIMULATION);
this._endTick = endTick;
}
public SimulationJob(Collection<UUID> inputResources, Collection<UUID> outputResources,
Collection<UUID> dependencies, long endTick)
{
this(JobType.RUN_SIMULATION, UUID.randomUUID(), inputResources, outputResources, dependencies, endTick);
}
public long getEndTick()
{
return _endTick;
}
}