package com.datascience.datastoring.jobs; import com.datascience.core.base.Project; import com.google.gson.JsonObject; import static com.google.common.base.Preconditions.checkArgument; public class JobsManager { protected IJobStorage jobStorage; protected JobFactory jobFactory; public JobsManager(IJobStorage jobStorage, JobFactory jobFactory){ this.jobStorage = jobStorage; jobStorage.setJobFactory(jobFactory); this.jobFactory = jobFactory; } public synchronized <T extends Project> Job<T> get(String id) throws Exception { return jobStorage.get(id); } public synchronized <T extends Project> Job<T> createAndAdd(String type, String id, JsonObject settings) throws Exception { Job<T> job = jobStorage.get(id); checkArgument(job == null, "Job with id = " + id + " already exists!"); job = jobFactory.create(type, settings, id); jobStorage.add(job); return job; } public synchronized void remove(Job job) throws Exception { jobStorage.remove(job); } public synchronized void test() throws Exception { jobStorage.test(); } public synchronized void stop() throws Exception { jobStorage.stop(); } public synchronized void flush(Job job) throws Exception { jobStorage.flush(job); } public synchronized void rebuild() throws Exception { try { jobStorage.clear(); } catch (Exception ex){} jobStorage.initialize(); } @Override public String toString(){ return "JM:" + jobStorage; } }