package com.datascience.datastoring.jobs; import com.datascience.core.commands.ProjectCommand; /** * T is result type * @author artur */ public abstract class JobCommand<T, U> extends ProjectCommand<T> { protected JobsManager jobsManager; protected String jobId; protected Job job; protected U project; public JobCommand(boolean modifies) { super(modifies); } protected Job getJob() throws Exception { assertState(jobId != null, "No job ID"); assertState(jobsManager != null, "No jobStorage set"); job = jobsManager.get(jobId); assertArgument(job != null, "Job with ID " + jobId + " does not exist or is of different kind"); // old: ^^^^ || !expectedClass.isAssignableFrom(tmp_job.getProject().getClass())) { return job; } public void setJobId(String jid){ jobId = jid; } public void setJobsManager(JobsManager jobsManager){ this.jobsManager = jobsManager; } @Override protected void prepareExecution() throws Exception{ project = (U) getJob().getProject(); } @Override protected void afterExecution() throws Exception { if (modifies()) jobsManager.flush(job); } protected void assertState(boolean condition, String message){ if (!condition) throw new IllegalStateException(message); } protected void assertArgument(boolean condition, String message){ if (!condition) throw new IllegalArgumentException(message); } }