diff --git a/pom.xml b/pom.xml index 4daac6b..8e5952e 100644 --- a/pom.xml +++ b/pom.xml @@ -83,6 +83,14 @@ ${weld-version} + + + + org.gcube.data.analysis + data-miner-manager-cl + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + + \ No newline at end of file diff --git a/src/main/java/org/gcube/application/perform/service/ServiceConstants.java b/src/main/java/org/gcube/application/perform/service/ServiceConstants.java index ee94370..5554d7f 100644 --- a/src/main/java/org/gcube/application/perform/service/ServiceConstants.java +++ b/src/main/java/org/gcube/application/perform/service/ServiceConstants.java @@ -13,4 +13,13 @@ public interface ServiceConstants { public static final String FARM_METHOD="farm"; } + + public static interface Execution{ + public static final String PATH="execution"; + public static final String IMPORT_METHOD="import"; + public static final String BATCH_TYPE_PARAMETER="batch_type"; + public static final String FARM_ID_PARAMETER="farmid"; + public static final String EXCEL_FILE_PARAMETER="source"; + } + } diff --git a/src/main/java/org/gcube/application/perform/service/engine/Importer.java b/src/main/java/org/gcube/application/perform/service/engine/Importer.java new file mode 100644 index 0000000..e58dfee --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/Importer.java @@ -0,0 +1,11 @@ +package org.gcube.application.perform.service.engine; + +import org.gcube.application.perform.service.engine.model.importer.ImportRequest; +import org.gcube.application.perform.service.engine.model.importer.ImportTicket; + +public interface Importer { + + + public ImportTicket importExcel(ImportRequest request); + public ImportRoutineDescriptor getDescriptor(ImportTicket ticket); +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/ImporterImpl.java b/src/main/java/org/gcube/application/perform/service/engine/ImporterImpl.java new file mode 100644 index 0000000..056090b --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/ImporterImpl.java @@ -0,0 +1,43 @@ +package org.gcube.application.perform.service.engine; + +import java.util.concurrent.ThreadPoolExecutor; + +import org.gcube.application.perform.service.engine.model.importer.ImportRequest; +import org.gcube.application.perform.service.engine.model.importer.ImportTicket; + +import lombok.Synchronized; + +public class ImporterImpl implements Importer { + + + // Keeps track of imported jobs in -separated?- DB + // Static thread pool for monitoring + private static ThreadPoolExecutor executor=null; + + public ImporterImpl() { + + } + + + @Override + public ImportTicket importExcel(ImportRequest request) { + + + throw new RuntimeException("IMPLEMENT THIS SHIT"); + // Check if already present? + + // Insert reference in DB + // Submit to DM + // return ticket + return null; + } + + @Synchronized + private static void exec() { + if(executor==null) { + //init executor + } + + + } +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/dm/DMInterface.java b/src/main/java/org/gcube/application/perform/service/engine/dm/DMInterface.java new file mode 100644 index 0000000..77473bc --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/dm/DMInterface.java @@ -0,0 +1,13 @@ +package org.gcube.application.perform.service.engine.dm; + +public interface DMInterface { + + public static DMInterface get() { + return new DMInterfaceImpl(); + } + + + public void submitJob(); + public void getJobStatus(); + public void getJobOutput(); +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/dm/DMInterfaceImpl.java b/src/main/java/org/gcube/application/perform/service/engine/dm/DMInterfaceImpl.java new file mode 100644 index 0000000..855b18f --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/dm/DMInterfaceImpl.java @@ -0,0 +1,26 @@ +package org.gcube.application.perform.service.engine.dm; + +public class DMInterfaceImpl implements DMInterface{ + + @Override + public void submitJob() { + // TODO Auto-generated method stub + + } + + @Override + public void getJobStatus() { + // TODO Auto-generated method stub + + } + + @Override + public void getJobOutput() { + // TODO Auto-generated method stub + + } + + + + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/dm/DMPoolMonitor.java b/src/main/java/org/gcube/application/perform/service/engine/dm/DMPoolMonitor.java new file mode 100644 index 0000000..920f03b --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/dm/DMPoolMonitor.java @@ -0,0 +1,21 @@ +package org.gcube.application.perform.service.engine.dm; + +public abstract class DMPoolMonitor{ + + + private T PostProcess; + private PoolMonitorConfiguration configuration; + + public DMPoolMonitor(T PostProcess){ + // INIT THREAD POOL + // .. queue, core/max size + + } + + + public void submitRequest() { + + } + + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/dm/PoolMonitorConfiguration.java b/src/main/java/org/gcube/application/perform/service/engine/dm/PoolMonitorConfiguration.java new file mode 100644 index 0000000..ca726e9 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/dm/PoolMonitorConfiguration.java @@ -0,0 +1,5 @@ +package org.gcube.application.perform.service.engine.dm; + +public class PoolMonitorConfiguration { + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/dm/PostProcess.java b/src/main/java/org/gcube/application/perform/service/engine/dm/PostProcess.java new file mode 100644 index 0000000..e09a5de --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/dm/PostProcess.java @@ -0,0 +1,5 @@ +package org.gcube.application.perform.service.engine.dm; + +public interface PostProcess { + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/importer/ImportRequest.java b/src/main/java/org/gcube/application/perform/service/engine/model/importer/ImportRequest.java new file mode 100644 index 0000000..3211a4e --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/importer/ImportRequest.java @@ -0,0 +1,5 @@ +package org.gcube.application.perform.service.engine.model.importer; + +public class ImportRequest { + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/importer/ImportRoutineDescriptor.java b/src/main/java/org/gcube/application/perform/service/engine/model/importer/ImportRoutineDescriptor.java new file mode 100644 index 0000000..f824dcd --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/importer/ImportRoutineDescriptor.java @@ -0,0 +1,24 @@ +package org.gcube.application.perform.service.engine.model.importer; + +import java.time.Instant; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@AllArgsConstructor +@Getter +@Setter +@NoArgsConstructor +public class ImportRoutineDescriptor { + + private String sourceFile; + private Instant startTime; + private Instant endTime; + private Long producedKpiRows; + private Long producedAggregatedKpiRows; + private String status; + private String executionID; + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/importer/ImportTicket.java b/src/main/java/org/gcube/application/perform/service/engine/model/importer/ImportTicket.java new file mode 100644 index 0000000..32361ee --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/importer/ImportTicket.java @@ -0,0 +1,5 @@ +package org.gcube.application.perform.service.engine.model.importer; + +public class ImportTicket { + +} diff --git a/src/main/java/org/gcube/application/perform/service/rest/Execution.java b/src/main/java/org/gcube/application/perform/service/rest/Execution.java new file mode 100644 index 0000000..677cd89 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/rest/Execution.java @@ -0,0 +1,25 @@ +package org.gcube.application.perform.service.rest; + +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.QueryParam; + +import org.gcube.application.perform.service.PerformServiceManager; +import org.gcube.application.perform.service.ServiceConstants; +import org.gcube.smartgears.annotations.ManagedBy; + +@Path(ServiceConstants.Execution.PATH) + +@ManagedBy(PerformServiceManager.class) +public class Execution { + + @POST + @Path(ServiceConstants.Execution.IMPORT_METHOD) + public void importExcel(@QueryParam(ServiceConstants.Execution.BATCH_TYPE_PARAMETER)String batchType, + @QueryParam(ServiceConstants.Execution.FARM_ID_PARAMETER)Long farmid, + @QueryParam(ServiceConstants.Execution.EXCEL_FILE_PARAMETER)String sourceFile) { + + + } + +}