package io.vivarium.persistence; import java.sql.Timestamp; import java.util.Collection; import java.util.Map; import com.google.common.base.Preconditions; import io.vivarium.util.UUID; import lombok.EqualsAndHashCode; import lombok.ToString; @EqualsAndHashCode(callSuper = true) @ToString public class RunSimulationJobModel extends JobModel { // Column names protected static final String END_TICK_PROPERTY = "end_tick"; private final Long endTick; public RunSimulationJobModel(UUID jobID, JobStatus status, int priority, UUID checkoutOutByWorkerID, Timestamp checkoutOutTime, Timestamp completedTime, long endTick, Collection<UUID> inputResources, Collection<UUID> outputResources, Collection<UUID> jobDependencies) { super(jobID, JobType.RUN_SIMULATION, status, priority, checkoutOutByWorkerID, checkoutOutTime, completedTime, inputResources, outputResources, jobDependencies); this.endTick = endTick; } public RunSimulationJobModel(Map<String, Object> relation, Map<String, String> properties, Collection<UUID> inputResources, Collection<UUID> outputResources, Collection<UUID> jobDependencies) { super(relation, properties, inputResources, outputResources, jobDependencies); Preconditions.checkNotNull(properties.get(END_TICK_PROPERTY)); this.endTick = Long.parseLong(properties.get(END_TICK_PROPERTY)); } @Override protected Map<String, String> buildProperties() { Map<String, String> properties = super.buildProperties(); properties.put(END_TICK_PROPERTY, endTick.toString()); return properties; } }