diff --git a/src/main/java/org/gcube/application/perform/service/LocalConfiguration.java b/src/main/java/org/gcube/application/perform/service/LocalConfiguration.java index c27bf59..b968c9d 100644 --- a/src/main/java/org/gcube/application/perform/service/LocalConfiguration.java +++ b/src/main/java/org/gcube/application/perform/service/LocalConfiguration.java @@ -19,6 +19,10 @@ public class LocalConfiguration { public static final String MAPPING_DB_ENDPOINT_CATEGORY="mapping-db.ep.name"; + public static final String PERFORMANCE_DB_ENDPOINT_NAME="performance-db.ep.name"; + public static final String PERFORMANCE_DB_ENDPOINT_CATEGORY="performance-db.ep.name"; + + static LocalConfiguration instance=null; 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 5554d7f..521e6c3 100644 --- a/src/main/java/org/gcube/application/perform/service/ServiceConstants.java +++ b/src/main/java/org/gcube/application/perform/service/ServiceConstants.java @@ -14,9 +14,8 @@ public interface ServiceConstants { } - public static interface Execution{ - public static final String PATH="execution"; - public static final String IMPORT_METHOD="import"; + public static interface Import{ + public static final String PATH="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/DataBaseManagerImpl.java b/src/main/java/org/gcube/application/perform/service/engine/DataBaseManagerImpl.java index d48d996..8a6ccb9 100644 --- a/src/main/java/org/gcube/application/perform/service/engine/DataBaseManagerImpl.java +++ b/src/main/java/org/gcube/application/perform/service/engine/DataBaseManagerImpl.java @@ -15,11 +15,9 @@ import org.apache.commons.pool2.ObjectPool; import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.gcube.application.perform.service.LocalConfiguration; -import org.gcube.application.perform.service.engine.model.DBType; import org.gcube.application.perform.service.engine.model.DatabaseConnectionDescriptor; import org.gcube.application.perform.service.engine.model.ISQueryDescriptor; import org.gcube.application.perform.service.engine.utils.ISUtils; -import org.gcube.application.perform.service.engine.utils.ScopeUtils; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; 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 index e58dfee..5ba4d7e 100644 --- a/src/main/java/org/gcube/application/perform/service/engine/Importer.java +++ b/src/main/java/org/gcube/application/perform/service/engine/Importer.java @@ -1,11 +1,14 @@ package org.gcube.application.perform.service.engine; +import java.util.List; + import org.gcube.application.perform.service.engine.model.importer.ImportRequest; +import org.gcube.application.perform.service.engine.model.importer.ImportRoutineDescriptor; import org.gcube.application.perform.service.engine.model.importer.ImportTicket; public interface Importer { - public ImportTicket importExcel(ImportRequest request); - public ImportRoutineDescriptor getDescriptor(ImportTicket ticket); + public ImportRoutineDescriptor importExcel(ImportRequest request); + public List getDescriptors(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 index 056090b..1a1c227 100644 --- a/src/main/java/org/gcube/application/perform/service/engine/ImporterImpl.java +++ b/src/main/java/org/gcube/application/perform/service/engine/ImporterImpl.java @@ -1,43 +1,88 @@ package org.gcube.application.perform.service.engine; -import java.util.concurrent.ThreadPoolExecutor; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.List; +import org.gcube.application.perform.service.LocalConfiguration; +import org.gcube.application.perform.service.engine.model.ISQueryDescriptor; import org.gcube.application.perform.service.engine.model.importer.ImportRequest; +import org.gcube.application.perform.service.engine.model.importer.ImportRoutineDescriptor; import org.gcube.application.perform.service.engine.model.importer.ImportTicket; +import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; import lombok.Synchronized; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class ImporterImpl implements Importer { - // Keeps track of imported jobs in -separated?- DB - // Static thread pool for monitoring - private static ThreadPoolExecutor executor=null; + private static ISQueryDescriptor isQueryDescriptor=null; - public ImporterImpl() { + + @Synchronized + private ISQueryDescriptor getISQueryDescriptor() { + if(isQueryDescriptor==null) { + isQueryDescriptor= + new ISQueryDescriptor( + LocalConfiguration.getProperty(LocalConfiguration.MAPPING_DB_ENDPOINT_NAME), null, + LocalConfiguration.getProperty(LocalConfiguration.MAPPING_DB_ENDPOINT_CATEGORY)); + } + return isQueryDescriptor; + } + + + public void init() { + log.info("Initializing IMPORTER"); + DataBaseManager db=DataBaseManager.get(getISQueryDescriptor()); + Connection conn=db.getConnection(); + PreparedStatement ps=conn.prepareStatement(ORPHAN_IMPORTS); + // set ps + ResultSet rsOrphans=ps.executeQuery(); + long monitoredCount=0l; + while(rsOrphans.next()) { + // acquire + // monitor + } + log.info("Acquired {} import executions for monitoring",monitoredCount); } @Override - public ImportTicket importExcel(ImportRequest request) { - - + public ImportRoutineDescriptor importExcel(ImportRequest request) { + log.debug("Submitting {} ",request); + ComputationId id=submit(request); + log.debug("Registering {} computationID {} ",request,id); + ImportRoutineDescriptor desc=register(id,request); + log.debug("Monitoring {} computationID {} ",desc,id); + monitor(id,desc); + return getDescriptorById(desc.getId()); + } + + + + private void monitor(ComputationId computationId,ImportRoutineDescriptor desc) { throw new RuntimeException("IMPLEMENT THIS SHIT"); - // Check if already present? + } + private ComputationId submit(ImportRequest request) { + throw new RuntimeException("IMPLEMENT THIS SHIT"); + } - // Insert reference in DB - // Submit to DM - // return ticket + private ImportRoutineDescriptor register(ComputationId computationId,ImportRequest request) { + throw new RuntimeException("IMPLEMENT THIS SHIT"); + } + + private ImportRoutineDescriptor getDescriptorById(Long id) { + throw new RuntimeException("IMPLEMENT THIS SHIT"); + } + + + @Override + public List getDescriptors(ImportTicket ticket) { + // TODO Auto-generated method stub return null; } - - @Synchronized - private static void exec() { - if(executor==null) { - //init executor - } - - - } } diff --git a/src/main/java/org/gcube/application/perform/service/engine/MappingManagerImpl.java b/src/main/java/org/gcube/application/perform/service/engine/MappingManagerImpl.java index a39e8bd..31bb72f 100644 --- a/src/main/java/org/gcube/application/perform/service/engine/MappingManagerImpl.java +++ b/src/main/java/org/gcube/application/perform/service/engine/MappingManagerImpl.java @@ -35,15 +35,13 @@ public class MappingManagerImpl implements MappingManager { private static ISQueryDescriptor isQueryDescriptor=null; - public MappingManagerImpl() { - } @Synchronized - private ISQueryDescriptor getISQueryDescriptor() { + private static ISQueryDescriptor getISQueryDescriptor() { if(isQueryDescriptor==null) { isQueryDescriptor= - new ISQueryDescriptor(DBType.Anagraphic, + new ISQueryDescriptor( LocalConfiguration.getProperty(LocalConfiguration.MAPPING_DB_ENDPOINT_NAME), null, LocalConfiguration.getProperty(LocalConfiguration.MAPPING_DB_ENDPOINT_CATEGORY)); } diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/DBType.java b/src/main/java/org/gcube/application/perform/service/engine/model/DBType.java deleted file mode 100644 index f5c553d..0000000 --- a/src/main/java/org/gcube/application/perform/service/engine/model/DBType.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.gcube.application.perform.service.engine.model; - -public enum DBType { - - Anagraphic,Performances - -} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/ISQueryDescriptor.java b/src/main/java/org/gcube/application/perform/service/engine/model/ISQueryDescriptor.java index 3fd7e7a..03b4c51 100644 --- a/src/main/java/org/gcube/application/perform/service/engine/model/ISQueryDescriptor.java +++ b/src/main/java/org/gcube/application/perform/service/engine/model/ISQueryDescriptor.java @@ -9,7 +9,7 @@ import lombok.ToString; @ToString public class ISQueryDescriptor { - private DBType type; +// private DBType type; private String resourceName; private String platformName; private String category; 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 index f824dcd..5af687d 100644 --- 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 @@ -13,6 +13,8 @@ import lombok.Setter; @NoArgsConstructor public class ImportRoutineDescriptor { + + private Long id; private String sourceFile; private Instant startTime; private Instant endTime; @@ -20,5 +22,5 @@ public class ImportRoutineDescriptor { private Long producedAggregatedKpiRows; private String status; private String executionID; - + private String userToken; } 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 index 677cd89..8d383dc 100644 --- a/src/main/java/org/gcube/application/perform/service/rest/Execution.java +++ b/src/main/java/org/gcube/application/perform/service/rest/Execution.java @@ -1,25 +1,40 @@ package org.gcube.application.perform.service.rest; +import java.util.List; + +import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Response; import org.gcube.application.perform.service.PerformServiceManager; import org.gcube.application.perform.service.ServiceConstants; +import org.gcube.application.perform.service.engine.model.importer.ImportRoutineDescriptor; import org.gcube.smartgears.annotations.ManagedBy; -@Path(ServiceConstants.Execution.PATH) +@Path(ServiceConstants.Import.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) { - + @POST + public void importExcel(@QueryParam(ServiceConstants.Import.BATCH_TYPE_PARAMETER)String batchType, + @QueryParam(ServiceConstants.Import.FARM_ID_PARAMETER)Long farmid, + @QueryParam(ServiceConstants.Import.EXCEL_FILE_PARAMETER)String sourceFile) { + throw new WebApplicationException("Not YET Implemented", Response.Status.NOT_IMPLEMENTED); } + + + @GET + @Path("{"+ServiceConstants.Import.FARM_ID_PARAMETER+"}") + public List getAll(){ + throw new WebApplicationException("Not YET Implemented", Response.Status.NOT_IMPLEMENTED); + } + + + }