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) {
+
+
+ }
+
+}