gFeed/gCat-Feeder/src/main/java/org/gcube/data/publishing/gCatFeeder/service/engine/impl/FeederEngineImpl.java

63 lines
2.3 KiB
Java

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<ExecutionDescriptor> 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
}
}