package com.datascience.datastoring.jobs; import com.datascience.core.base.Project; import com.datascience.datastoring.IBackendAdapter; import com.datascience.serialization.ISerializer; import com.google.gson.JsonObject; /** * Could use <T extends backendAdapter> but using name backendAdapter would be missleading * It would be even better to turn it into wrapper but than we couldn't implement more (interface etc.) * @Author: konrad */ public abstract class BaseJobStorage implements IJobStorage { protected IBackendAdapter backendAdapter; protected JobFactory jobFactory; public BaseJobStorage(IBackendAdapter backendAdapter, ISerializer serializer){ this(backendAdapter); jobFactory = new JobFactory(serializer, this); } protected <T extends Project> Job<T> createJob(String type, String id, JsonObject settings){ return jobFactory.create(type, settings, id); } @Override public void setJobFactory(JobFactory jobFactory){ this.jobFactory = jobFactory; } public BaseJobStorage(IBackendAdapter backendAdapter){ this.backendAdapter = backendAdapter; } @Override public void test() throws Exception{ backendAdapter.getBackend().test(); backendAdapter.test(); } @Override public void stop() throws Exception{ backendAdapter.getBackend().stop(); } @Override public void clear() throws Exception{ backendAdapter.clear(); } @Override public void initialize() throws Exception{ backendAdapter.rebuild(); } }