This commit is contained in:
Fabio Sinibaldi 2019-03-12 18:01:29 +00:00
parent 24209aa014
commit 5dd63116b6
26 changed files with 711 additions and 40 deletions

View File

@ -1,11 +1,13 @@
package org.gcube.data.publishing.gCatFeeder.catalogues;
import java.io.Serializable;
import org.gcube.data.publishing.gCatFeeder.catalogues.model.PublishReport;
import org.gcube.data.publishing.gCatFeeder.catalogues.model.faults.WrongObjectFormatException;
public interface CatalogueController {
public PublishReport publishItem(String serializedItem) throws WrongObjectFormatException;
public PublishReport publishItem(Serializable toPublish) throws WrongObjectFormatException;
}

View File

@ -1,6 +1,7 @@
package org.gcube.data.publishing.gCatFeeder.catalogues.model;
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@ -8,9 +9,12 @@ import lombok.Setter;
@RequiredArgsConstructor
@Setter
public class PublishReport {
private boolean successful=false;
@NonNull
private Boolean successful;
@NonNull
private String publishedId;
}

View File

@ -1,9 +1,10 @@
package org.gcube.data.publishing.gCatfeeder.collectors;
import org.gcube.data.publishing.gCatFeeder.model.CatalogueInstanceDescriptor;
import org.gcube.data.publishing.gCatfeeder.collectors.model.faults.CatalogueInstanceNotFound;
public interface CatalogueRetriever {
public CatalogueInstanceDescriptor getInstance();
public CatalogueInstanceDescriptor getInstance() throws CatalogueInstanceNotFound;
}

View File

@ -1,20 +1,21 @@
package org.gcube.data.publishing.gCatfeeder.collectors;
import java.io.Serializable;
import java.util.Set;
import org.gcube.data.publishing.gCatFeeder.model.FormatData;
import org.gcube.data.publishing.gCatfeeder.collectors.model.CustomData;
import org.gcube.data.publishing.gCatfeeder.collectors.model.PluginDescriptor;
import org.gcube.data.publishing.gCatfeeder.collectors.model.PublisherFormatData;
import org.gcube.data.publishing.gCatfeeder.collectors.model.faults.CatalogueNotSupportedException;
public interface CollectorPlugin<E extends CustomData>{
public PluginDescriptor getDescriptor();
public CatalogueRetriever getRetrieverByCatalogueType(FormatData catalogueType) throws CatalogueNotSupportedException;
public CatalogueRetriever getRetrieverByCatalogueType(String catalogueType) throws CatalogueNotSupportedException;
public Set<DataTransformer<? extends PublisherFormatData,E>> getImplementedTransformers();
public Set<String> getSupportedCatalogueTypes();
public DataTransformer<Serializable,E> getTransformerByCatalogueType(String catalogueType);
public DataCollector<E> getCollector();
}

View File

@ -1,15 +1,13 @@
package org.gcube.data.publishing.gCatfeeder.collectors;
import java.io.Serializable;
import java.util.Collection;
import java.util.Set;
import org.gcube.data.publishing.gCatFeeder.model.FormatData;
import org.gcube.data.publishing.gCatfeeder.collectors.model.CustomData;
import org.gcube.data.publishing.gCatfeeder.collectors.model.PublisherFormatData;
public interface DataTransformer<T extends PublisherFormatData,E extends CustomData> {
public interface DataTransformer<T extends Serializable,E extends CustomData> {
public FormatData getTargetFormat();
public Set<T> transform(Collection<E> collectedData);
}

View File

@ -1,12 +0,0 @@
package org.gcube.data.publishing.gCatfeeder.collectors.model;
import org.gcube.data.publishing.gCatFeeder.model.FormatData;
public interface PublisherFormatData {
public FormatData getFormat();
public String serialize();
}

View File

@ -1,27 +1,27 @@
package org.gcube.data.publishing.gCatfeeder.collectors.model.faults;
public class CatalogueNotFound extends CrawlerException {
public class CatalogueInstanceNotFound extends CrawlerException {
public CatalogueNotFound() {
public CatalogueInstanceNotFound() {
// TODO Auto-generated constructor stub
}
public CatalogueNotFound(String message) {
public CatalogueInstanceNotFound(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public CatalogueNotFound(Throwable cause) {
public CatalogueInstanceNotFound(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
public CatalogueNotFound(String message, Throwable cause) {
public CatalogueInstanceNotFound(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public CatalogueNotFound(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
public CatalogueInstanceNotFound(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
// TODO Auto-generated constructor stub
}

View File

@ -28,6 +28,11 @@
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-encryption</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,5 +0,0 @@
package org.gcube.data.publishing.gCatFeeder.model;
public enum FormatData {
CKAN
}

View File

@ -0,0 +1,22 @@
package org.gcube.data.publishing.gCatFeeder.utils;
import org.gcube.common.encryption.encrypter.StringEncrypter;
public class CommonUtils {
public static String decryptString(String toDecrypt){
try{
return StringEncrypter.getEncrypter().decrypt(toDecrypt);
}catch(Exception e) {
throw new RuntimeException("Unable to decrypt : "+toDecrypt,e);
}
}
public static String encryptString(String toEncrypt){
try{
return StringEncrypter.getEncrypter().encrypt(toEncrypt);
}catch(Exception e) {
throw new RuntimeException("Unable to encrypt : "+toEncrypt,e);
}
}
}

View File

@ -39,6 +39,12 @@
</dependency>
<dependency>
<groupId>org.gcube.data-publishing.gCat-Feeder</groupId>
<artifactId>catalogue-plugin-framework</artifactId>
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>

View File

@ -1,19 +1,25 @@
package org.gcube.data.publishing.gCatFeeder.service;
import javax.inject.Inject;
import org.gcube.data.publishing.gCatFeeder.service.engine.ExecutionManager;
import org.gcube.smartgears.ApplicationManager;
public class GCatFeederManager implements ApplicationManager{
@Inject
ExecutionManager executions;
@Override
public void onInit() {
executions.load();
}
@Override
public void onShutdown() {
// TODO Auto-generated method stub
executions.stop();
}

View File

@ -1,5 +1,17 @@
package org.gcube.data.publishing.gCatFeeder.service.engine;
import java.util.Set;
import org.gcube.data.publishing.gCatFeeder.catalogues.CataloguePlugin;
import org.gcube.data.publishing.gCatFeeder.service.model.fault.CataloguePluginNotFound;
import org.gcube.data.publishing.gCatFeeder.service.model.fault.InternalError;
public interface CatalogueControllersManager {
public Set<String> getAvailableControllers();
public CataloguePlugin getPluginById(String collectorId) throws CataloguePluginNotFound;
public void init() throws InternalError;
}

View File

@ -9,7 +9,7 @@ import org.gcube.data.publishing.gCatfeeder.collectors.CollectorPlugin;
public interface CollectorsManager {
public Set<String> getAvailableCollectors();
public CollectorPlugin<?> getPluginById() throws CollectorNotFound;
public CollectorPlugin<?> getPluginById(String collectorId) throws CollectorNotFound;
public void init() throws InternalError;
}

View File

@ -1,5 +1,6 @@
package org.gcube.data.publishing.gCatFeeder.service.engine;
import org.gcube.data.publishing.gCatFeeder.service.engine.impl.ExecutionManagerConfiguration;
import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionDescriptor;
public interface ExecutionManager {
@ -7,4 +8,8 @@ public interface ExecutionManager {
public void submit(ExecutionDescriptor desc);
public void stop();
public void load();
public void init(ExecutionManagerConfiguration config);
}

View File

@ -15,5 +15,18 @@ public interface PersistenceManager {
public ExecutionDescriptor getById(String id)throws PersistenceError,ElementNotFound,InvalidRequest;
public Collection<ExecutionDescriptor> get(ExecutionDescriptorFilter filter)throws PersistenceError,InvalidRequest;
// DIRECT QUERIES
public boolean update(ExecutionDescriptor toUpdate)throws PersistenceError,ElementNotFound;
/**
* Updates status only if current status value is PENDING
*
* @param id
* @return
* @throws PersistenceError
* @throws ElementNotFound
*/
public boolean acquire(String id)throws PersistenceError,ElementNotFound;
}

View File

@ -0,0 +1,8 @@
package org.gcube.data.publishing.gCatFeeder.service.engine.impl;
public class ExecutionManagerConfiguration {
private int threadPoolSize;
}

View File

@ -0,0 +1,51 @@
package org.gcube.data.publishing.gCatFeeder.service.engine.impl;
import java.util.concurrent.ThreadPoolExecutor;
import javax.inject.Singleton;
import org.gcube.data.publishing.gCatFeeder.service.engine.ExecutionManager;
import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class ExecutionManagerImpl implements ExecutionManager {
private ThreadPoolExecutor executor=null;
private static final Logger log= LoggerFactory.getLogger(ExecutionManagerImpl.class);
@Override
public synchronized void submit(ExecutionDescriptor desc) {
log.debug("Checking if {} is already in queue");
ExecutionTask toSubmit=new ExecutionTask(desc);
if(!executor.getQueue().contains(toSubmit)) {
log.trace("Inserting execution in queue {} ");
executor.execute(toSubmit);
}
}
@Override
public void stop() {
// Clear queue
// Stop all
}
@Override
public void load() {
// connect to persistence
// load all pending
throw new RuntimeException("NOT YET IMPLEMENTED");
}
@Override
public synchronized void init(ExecutionManagerConfiguration config) {
// NEED TO BE IDEMPOTENT
if(executor==null) {
throw new RuntimeException("NOT YET IMPLEMENTED");
// executor=new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, new ConcurrentLinkedQueue<ExecutionTask>());
}
}
}

View File

@ -0,0 +1,265 @@
package org.gcube.data.publishing.gCatFeeder.service.engine.impl;
import java.io.File;
import java.io.Serializable;
import java.time.Instant;
import java.util.Set;
import javax.inject.Inject;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.data.publishing.gCatFeeder.catalogues.CatalogueController;
import org.gcube.data.publishing.gCatFeeder.catalogues.CataloguePlugin;
import org.gcube.data.publishing.gCatFeeder.catalogues.model.PublishReport;
import org.gcube.data.publishing.gCatFeeder.catalogues.model.faults.ControllerInstantiationFault;
import org.gcube.data.publishing.gCatFeeder.catalogues.model.faults.WrongObjectFormatException;
import org.gcube.data.publishing.gCatFeeder.model.CatalogueInstanceDescriptor;
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.PersistenceManager;
import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionDescriptor;
import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionStatus;
import org.gcube.data.publishing.gCatFeeder.service.model.fault.CataloguePluginNotFound;
import org.gcube.data.publishing.gCatFeeder.service.model.fault.CollectorNotFound;
import org.gcube.data.publishing.gCatFeeder.service.model.fault.InvalidRequest;
import org.gcube.data.publishing.gCatFeeder.service.model.fault.PersistenceError;
import org.gcube.data.publishing.gCatFeeder.service.model.reports.CatalogueReport;
import org.gcube.data.publishing.gCatFeeder.service.model.reports.CollectorReport;
import org.gcube.data.publishing.gCatFeeder.service.model.reports.ExecutionReport;
import org.gcube.data.publishing.gCatFeeder.utils.CommonUtils;
import org.gcube.data.publishing.gCatFeeder.utils.ContextUtils;
import org.gcube.data.publishing.gCatfeeder.collectors.CatalogueRetriever;
import org.gcube.data.publishing.gCatfeeder.collectors.CollectorPlugin;
import org.gcube.data.publishing.gCatfeeder.collectors.DataCollector;
import org.gcube.data.publishing.gCatfeeder.collectors.DataTransformer;
import org.gcube.data.publishing.gCatfeeder.collectors.model.faults.CatalogueInstanceNotFound;
import org.gcube.data.publishing.gCatfeeder.collectors.model.faults.CatalogueNotSupportedException;
import org.gcube.data.publishing.gCatfeeder.collectors.model.faults.CollectorFault;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExecutionTask implements Runnable {
private static final Logger log= LoggerFactory.getLogger(ExecutionTask.class);
private ExecutionDescriptor request;
private PersistenceManager persistence;
private CollectorsManager collectors;
private CatalogueControllersManager catalogues;
public ExecutionTask(ExecutionDescriptor desc) {
super();
this.request=desc;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((request == null) ? 0 : request.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ExecutionTask other = (ExecutionTask) obj;
if (request == null) {
if (other.request != null)
return false;
} else if (!request.equals(other.request))
return false;
return true;
}
@Inject
public void setPersistence(PersistenceManager p) {
this.persistence=p;
}
@Inject
public void setCollectorPluginManager(CollectorsManager c) {
this.collectors=c;
}
@Inject
public void setCataloguesPluginManager(CatalogueControllersManager c) {
this.catalogues=c;
}
@Override
public void run() {
try {
log.debug("Starting to handle {} ",request);
log.debug("Setting caller token..");
String actualToken=CommonUtils.decryptString(request.getCallerEncryptedToken());
SecurityTokenProvider.instance.set(actualToken);
// try to lock request (FINISH ON FAIL)
if(persistence.acquire(request.getId())) {
try {
log.info("Acquired : {} ",request);
ExecutionReport report=new ExecutionReport();
report.getGenericInformations().setStartTime(Instant.now());
report.setStartingScope(ContextUtils.getCurrentScopeName());
// -- ON SUCCESS reload request
request =persistence.getById(request.getId());
// For ALL COLLECTORS IN REQUEST
for(String collectorId : request.getCollectors()) {
CollectorReport collectorReport=handleCollector(collectorId);
report.getCollectorReports().add(collectorReport);
}
// FINALIZE
report.getGenericInformations().setEndTime(Instant.now());
String reportUrl=storeReport(report);
log.info("Stored report at {} ",reportUrl);
request.setReportUrl(reportUrl);
request.setStatus(ExecutionStatus.SUCCESS);
persistence.update(request);
}catch(PersistenceError | InvalidRequest e) {
log.error("Unexpected exception while dealing with persistence ",e);
}catch(Throwable t) {
log.error("Unexpected generic exception.",t);
request.setStatus(ExecutionStatus.FAILED);
persistence.update(request);
}
}else {
log.debug("Request [{}] is already being managed.",request);
}
}catch(Throwable t) {
log.error("THREAD CANNOT HANDLE REQUESTS!!!. ",t);
}
}
private CatalogueReport handleCatalogueController(String cataloguePluginId,CollectorPlugin collectorPlugin,Set<Serializable> collectedData) {
CatalogueReport catalogueReport=new CatalogueReport();
catalogueReport.getGenericInformations().setStartTime(Instant.now());
try {
log.debug("Checking catalogue {} support ",cataloguePluginId);
if(collectorPlugin.getSupportedCatalogueTypes().contains(cataloguePluginId)) {
CataloguePlugin cataloguePlugin=catalogues.getPluginById(cataloguePluginId);
// ** INSTANTIATE CATALOGUE CONTROLLER
log.debug("Looking for catalogue instance ..");
CatalogueRetriever retriever=collectorPlugin.getRetrieverByCatalogueType(cataloguePluginId);
CatalogueInstanceDescriptor instanceDescriptor=retriever.getInstance();
CatalogueController controller=cataloguePlugin.instantiateController(instanceDescriptor);
// ** TRANSFORM
log.debug("Transforming Collected Data");
DataTransformer transformer=collectorPlugin.getTransformerByCatalogueType(cataloguePluginId);
Set<Serializable> transformed=transformer.transform(collectedData);
log.trace("Going to publish {} items to {} ",transformed.size(),instanceDescriptor.getUrl());
// ** PUBLISH VIA CONTROLLER
for(Serializable item : transformed) {
try {
PublishReport itemReport=controller.publishItem(item);
}catch(WrongObjectFormatException e) {
catalogueReport.getPublishedRecords().add(new PublishReport(false,"Wrong format : "+e.getMessage()));
}
}
catalogueReport.getGenericInformations().setSuccess(true);
catalogueReport.getGenericInformations().setGenericMessage("Data published. See detailed log.");
}else {
catalogueReport.getGenericInformations().setSuccess(false);
catalogueReport.getGenericInformations().setGenericMessage("Catalogue not supported by Collector Plugin.");
}
}catch(CataloguePluginNotFound e) {
String msg="Supported catalogue implementation not found. Catalogue id : "+cataloguePluginId;
log.warn(msg,e);
catalogueReport.getGenericInformations().setSuccess(false);
catalogueReport.getGenericInformations().setGenericMessage(msg);
} catch (CatalogueNotSupportedException e) {
String msg="Catalogue not supported by Collector Plugin.";
log.warn(msg,e);
catalogueReport.getGenericInformations().setSuccess(false);
catalogueReport.getGenericInformations().setGenericMessage(msg);
} catch (ControllerInstantiationFault e) {
String msg="Unable to contact Catalogue instance.";
log.warn(msg,e);
catalogueReport.getGenericInformations().setSuccess(false);
catalogueReport.getGenericInformations().setGenericMessage(msg);
} catch (CatalogueInstanceNotFound e) {
String msg="Unable to find Catalogue instance.";
log.warn(msg,e);
catalogueReport.getGenericInformations().setSuccess(false);
catalogueReport.getGenericInformations().setGenericMessage(msg);
}
catalogueReport.getGenericInformations().setEndTime(Instant.now());
return catalogueReport;
}
private CollectorReport handleCollector(String collectorId) {
CollectorReport collectorReport=new CollectorReport();
collectorReport.getGenericInformations().setStartTime(Instant.now());
collectorReport.setSource(collectorId);
try {
// * COLLECT DATA
log.info("Starting collector {} ",collectorId);
CollectorPlugin collectorPlugin=collectors.getPluginById(collectorId);
DataCollector collector=collectorPlugin.getCollector();
log.info("Collecting data..");
Set collectedData=collector.collect();
log.debug("Collected {} items. Going to transform..",collectedData.size());
collectorReport.setCollectedItems(collectedData.size());
// * FOR ALL CATALOGUES IN REQUEST
for(String cataloguePluginId:request.getCatalogues()) {
CatalogueReport catalogueReport=handleCatalogueController(cataloguePluginId,collectorPlugin,collectedData);
collectorReport.getPublisherReports().add(catalogueReport);
}
} catch (CollectorNotFound e) {
String msg="Requested collector implementation not found.";
log.warn(msg,e);
collectorReport.getGenericInformations().setSuccess(false);
collectorReport.getGenericInformations().setGenericMessage(msg);
} catch (CollectorFault e) {
String msg="Collector Failed. "+e.getMessage();
log.warn(msg,e);
collectorReport.getGenericInformations().setSuccess(false);
collectorReport.getGenericInformations().setGenericMessage(msg);
}
collectorReport.getGenericInformations().setEndTime(Instant.now());
return collectorReport;
}
private static final String storeReport(ExecutionReport report) {
throw new RuntimeException("Implement me");
}
}

View File

@ -1,5 +1,95 @@
package org.gcube.data.publishing.gCatFeeder.service.model;
import java.util.Set;
public class ExecutionDescriptor {
private String id;
private Set<String> collectors;
private Set<String> catalogues;
private String callerEncryptedToken;
private String callerIdentity;
private String callerContext;
private ExecutionStatus status;
private String reportUrl;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Set<String> getCollectors() {
return collectors;
}
public void setCollectors(Set<String> collectors) {
this.collectors = collectors;
}
public Set<String> getCatalogues() {
return catalogues;
}
public void setCatalogues(Set<String> catalogues) {
this.catalogues = catalogues;
}
public String getCallerEncryptedToken() {
return callerEncryptedToken;
}
public void setCallerEncryptedToken(String callerEncryptedToken) {
this.callerEncryptedToken = callerEncryptedToken;
}
public String getCallerIdentity() {
return callerIdentity;
}
public void setCallerIdentity(String callerIdentity) {
this.callerIdentity = callerIdentity;
}
public String getCallerContext() {
return callerContext;
}
public void setCallerContext(String callerContext) {
this.callerContext = callerContext;
}
public ExecutionStatus getStatus() {
return status;
}
public void setStatus(ExecutionStatus status) {
this.status = status;
}
public String getReportUrl() {
return reportUrl;
}
public void setReportUrl(String reportUrl) {
this.reportUrl = reportUrl;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ExecutionDescriptor other = (ExecutionDescriptor) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}

View File

@ -0,0 +1,11 @@
package org.gcube.data.publishing.gCatFeeder.service.model;
public enum ExecutionStatus {
PENDING,
RUNNING,
STOPPED,
FAILED,
SUCCESS
}

View File

@ -0,0 +1,37 @@
package org.gcube.data.publishing.gCatFeeder.service.model.fault;
public class CataloguePluginNotFound extends Exception {
/**
*
*/
private static final long serialVersionUID = -2510068055460236480L;
public CataloguePluginNotFound() {
super();
// TODO Auto-generated constructor stub
}
public CataloguePluginNotFound(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
// TODO Auto-generated constructor stub
}
public CataloguePluginNotFound(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public CataloguePluginNotFound(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public CataloguePluginNotFound(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
}

View File

@ -0,0 +1,26 @@
package org.gcube.data.publishing.gCatFeeder.service.model.reports;
import java.util.ArrayList;
import org.gcube.data.publishing.gCatFeeder.catalogues.model.PublishReport;
public class CatalogueReport{
private GenericInfos genericInformations=new GenericInfos();
private ArrayList<PublishReport> publishedRecords=new ArrayList<>();
public GenericInfos getGenericInformations() {
return genericInformations;
}
public void setGenericInformations(GenericInfos genericInformations) {
this.genericInformations = genericInformations;
}
public ArrayList<PublishReport> getPublishedRecords() {
return publishedRecords;
}
public void setPublishedRecords(ArrayList<PublishReport> publishedRecords) {
this.publishedRecords = publishedRecords;
}
}

View File

@ -0,0 +1,47 @@
package org.gcube.data.publishing.gCatFeeder.service.model.reports;
import java.util.ArrayList;
public class CollectorReport{
private GenericInfos genericInformations=new GenericInfos();
private String source;
private long collectedItems;
private ArrayList<CatalogueReport> publisherReports=new ArrayList<>();
public GenericInfos getGenericInformations() {
return genericInformations;
}
public void setGenericInformations(GenericInfos genericInformations) {
this.genericInformations = genericInformations;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public long getCollectedItems() {
return collectedItems;
}
public void setCollectedItems(long collectedItems) {
this.collectedItems = collectedItems;
}
public ArrayList<CatalogueReport> getPublisherReports() {
return publisherReports;
}
public void setPublisherReports(ArrayList<CatalogueReport> publisherReports) {
this.publisherReports = publisherReports;
}
}

View File

@ -0,0 +1,38 @@
package org.gcube.data.publishing.gCatFeeder.service.model.reports;
import java.util.ArrayList;
public class ExecutionReport {
private GenericInfos genericInformations=new GenericInfos();
private String startingScope;
private ArrayList<CollectorReport> collectorReports=new ArrayList<>();
public GenericInfos getGenericInformations() {
return genericInformations;
}
public void setGenericInformations(GenericInfos genericInformations) {
this.genericInformations = genericInformations;
}
public String getStartingScope() {
return startingScope;
}
public void setStartingScope(String startingScope) {
this.startingScope = startingScope;
}
public ArrayList<CollectorReport> getCollectorReports() {
return collectorReports;
}
public void setCollectorReports(ArrayList<CollectorReport> collectorReports) {
this.collectorReports = collectorReports;
}
}

View File

@ -0,0 +1,40 @@
package org.gcube.data.publishing.gCatFeeder.service.model.reports;
import java.time.Instant;
public class GenericInfos{
private Instant startTime;
private Instant endTime;
private Boolean success=false;
private String genericMessage;
public Instant getStartTime() {
return startTime;
}
public void setStartTime(Instant startTime) {
this.startTime = startTime;
}
public Instant getEndTime() {
return endTime;
}
public void setEndTime(Instant endTime) {
this.endTime = endTime;
}
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
public String getGenericMessage() {
return genericMessage;
}
public void setGenericMessage(String genericMessage) {
this.genericMessage = genericMessage;
}
}