package org.gcube.data.publishing.gCatFeeder.service.engine.impl; import java.util.Collection; import javax.inject.Inject; import org.gcube.data.publishing.gCatFeeder.service.engine.CatalogueControllersManager; import org.gcube.data.publishing.gCatFeeder.service.engine.CollectorsManager; import org.gcube.data.publishing.gCatFeeder.service.engine.ExecutionManager; import org.gcube.data.publishing.gCatFeeder.service.engine.FeederEngine; import org.gcube.data.publishing.gCatFeeder.service.engine.PersistenceManager; import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionDescriptor; import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionDescriptorFilter; import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionRequest; import org.gcube.data.publishing.gCatFeeder.service.model.fault.CollectorNotFound; import org.gcube.data.publishing.gCatFeeder.service.model.fault.DescriptorNotFound; import org.gcube.data.publishing.gCatFeeder.service.model.fault.ElementNotFound; import org.gcube.data.publishing.gCatFeeder.service.model.fault.InvalidRequest; import org.gcube.data.publishing.gCatFeeder.service.model.fault.PersistenceError; public class FeederEngineImpl implements FeederEngine { @Inject private ExecutionManager executions; @Inject private CollectorsManager crawlers; @Inject private CatalogueControllersManager catalogues; @Inject private PersistenceManager persistence; @Override public ExecutionDescriptor submit(ExecutionRequest req) throws InternalError, PersistenceError, InvalidRequest { try{ verifyRequest(req); ExecutionDescriptor related=persistence.create(req); executions.submit(related); return related; }catch(CollectorNotFound | DescriptorNotFound e) { throw new InvalidRequest(e); } } @Override public Collection get(ExecutionDescriptorFilter filter) throws PersistenceError, InvalidRequest { return persistence.get(filter); } @Override public ExecutionDescriptor getById(String id) throws PersistenceError, ElementNotFound, InvalidRequest { return persistence.getById(id); } private void verifyRequest(ExecutionRequest request) throws InternalError,CollectorNotFound,DescriptorNotFound{ // for each requested source check if available // for each requested target check if available } }