This commit is contained in:
Fabio Sinibaldi 2019-01-02 14:58:41 +00:00
parent 51cfe3d776
commit ad6a753e2d
10 changed files with 105 additions and 48 deletions

View File

@ -19,6 +19,10 @@ public class LocalConfiguration {
public static final String MAPPING_DB_ENDPOINT_CATEGORY="mapping-db.ep.name"; 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; static LocalConfiguration instance=null;

View File

@ -14,9 +14,8 @@ public interface ServiceConstants {
} }
public static interface Execution{ public static interface Import{
public static final String PATH="execution"; public static final String PATH="import";
public static final String IMPORT_METHOD="import";
public static final String BATCH_TYPE_PARAMETER="batch_type"; public static final String BATCH_TYPE_PARAMETER="batch_type";
public static final String FARM_ID_PARAMETER="farmid"; public static final String FARM_ID_PARAMETER="farmid";
public static final String EXCEL_FILE_PARAMETER="source"; public static final String EXCEL_FILE_PARAMETER="source";

View File

@ -15,11 +15,9 @@ import org.apache.commons.pool2.ObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.gcube.application.perform.service.LocalConfiguration; 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.DatabaseConnectionDescriptor;
import org.gcube.application.perform.service.engine.model.ISQueryDescriptor; 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.ISUtils;
import org.gcube.application.perform.service.engine.utils.ScopeUtils;
import lombok.Synchronized; import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -1,11 +1,14 @@
package org.gcube.application.perform.service.engine; 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.ImportRequest;
import org.gcube.application.perform.service.engine.model.importer.ImportRoutineDescriptor;
import org.gcube.application.perform.service.engine.model.importer.ImportTicket; import org.gcube.application.perform.service.engine.model.importer.ImportTicket;
public interface Importer { public interface Importer {
public ImportTicket importExcel(ImportRequest request); public ImportRoutineDescriptor importExcel(ImportRequest request);
public ImportRoutineDescriptor getDescriptor(ImportTicket ticket); public List<ImportRoutineDescriptor> getDescriptors(ImportTicket ticket);
} }

View File

@ -1,43 +1,88 @@
package org.gcube.application.perform.service.engine; 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.ImportRequest;
import org.gcube.application.perform.service.engine.model.importer.ImportRoutineDescriptor;
import org.gcube.application.perform.service.engine.model.importer.ImportTicket; 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.Synchronized;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ImporterImpl implements Importer { public class ImporterImpl implements Importer {
// Keeps track of imported jobs in -separated?- DB private static ISQueryDescriptor isQueryDescriptor=null;
// Static thread pool for monitoring
private static ThreadPoolExecutor executor=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 @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"); 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 private ImportRoutineDescriptor register(ComputationId computationId,ImportRequest request) {
// Submit to DM throw new RuntimeException("IMPLEMENT THIS SHIT");
// return ticket }
private ImportRoutineDescriptor getDescriptorById(Long id) {
throw new RuntimeException("IMPLEMENT THIS SHIT");
}
@Override
public List<ImportRoutineDescriptor> getDescriptors(ImportTicket ticket) {
// TODO Auto-generated method stub
return null; return null;
} }
@Synchronized
private static void exec() {
if(executor==null) {
//init executor
}
}
} }

View File

@ -35,15 +35,13 @@ public class MappingManagerImpl implements MappingManager {
private static ISQueryDescriptor isQueryDescriptor=null; private static ISQueryDescriptor isQueryDescriptor=null;
public MappingManagerImpl() {
}
@Synchronized @Synchronized
private ISQueryDescriptor getISQueryDescriptor() { private static ISQueryDescriptor getISQueryDescriptor() {
if(isQueryDescriptor==null) { if(isQueryDescriptor==null) {
isQueryDescriptor= isQueryDescriptor=
new ISQueryDescriptor(DBType.Anagraphic, new ISQueryDescriptor(
LocalConfiguration.getProperty(LocalConfiguration.MAPPING_DB_ENDPOINT_NAME), null, LocalConfiguration.getProperty(LocalConfiguration.MAPPING_DB_ENDPOINT_NAME), null,
LocalConfiguration.getProperty(LocalConfiguration.MAPPING_DB_ENDPOINT_CATEGORY)); LocalConfiguration.getProperty(LocalConfiguration.MAPPING_DB_ENDPOINT_CATEGORY));
} }

View File

@ -1,7 +0,0 @@
package org.gcube.application.perform.service.engine.model;
public enum DBType {
Anagraphic,Performances
}

View File

@ -9,7 +9,7 @@ import lombok.ToString;
@ToString @ToString
public class ISQueryDescriptor { public class ISQueryDescriptor {
private DBType type; // private DBType type;
private String resourceName; private String resourceName;
private String platformName; private String platformName;
private String category; private String category;

View File

@ -13,6 +13,8 @@ import lombok.Setter;
@NoArgsConstructor @NoArgsConstructor
public class ImportRoutineDescriptor { public class ImportRoutineDescriptor {
private Long id;
private String sourceFile; private String sourceFile;
private Instant startTime; private Instant startTime;
private Instant endTime; private Instant endTime;
@ -20,5 +22,5 @@ public class ImportRoutineDescriptor {
private Long producedAggregatedKpiRows; private Long producedAggregatedKpiRows;
private String status; private String status;
private String executionID; private String executionID;
private String userToken;
} }

View File

@ -1,25 +1,40 @@
package org.gcube.application.perform.service.rest; 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.POST;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.QueryParam; 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.PerformServiceManager;
import org.gcube.application.perform.service.ServiceConstants; import org.gcube.application.perform.service.ServiceConstants;
import org.gcube.application.perform.service.engine.model.importer.ImportRoutineDescriptor;
import org.gcube.smartgears.annotations.ManagedBy; import org.gcube.smartgears.annotations.ManagedBy;
@Path(ServiceConstants.Execution.PATH) @Path(ServiceConstants.Import.PATH)
@ManagedBy(PerformServiceManager.class) @ManagedBy(PerformServiceManager.class)
public class Execution { public class Execution {
@POST @POST
@Path(ServiceConstants.Execution.IMPORT_METHOD) public void importExcel(@QueryParam(ServiceConstants.Import.BATCH_TYPE_PARAMETER)String batchType,
public void importExcel(@QueryParam(ServiceConstants.Execution.BATCH_TYPE_PARAMETER)String batchType, @QueryParam(ServiceConstants.Import.FARM_ID_PARAMETER)Long farmid,
@QueryParam(ServiceConstants.Execution.FARM_ID_PARAMETER)Long farmid, @QueryParam(ServiceConstants.Import.EXCEL_FILE_PARAMETER)String sourceFile) {
@QueryParam(ServiceConstants.Execution.EXCEL_FILE_PARAMETER)String sourceFile) {
throw new WebApplicationException("Not YET Implemented", Response.Status.NOT_IMPLEMENTED);
} }
@GET
@Path("{"+ServiceConstants.Import.FARM_ID_PARAMETER+"}")
public List<ImportRoutineDescriptor> getAll(){
throw new WebApplicationException("Not YET Implemented", Response.Status.NOT_IMPLEMENTED);
}
} }