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 PERFORMANCE_DB_ENDPOINT_NAME="performance-db.ep.name";
public static final String PERFORMANCE_DB_ENDPOINT_CATEGORY="performance-db.ep.name";
static LocalConfiguration instance=null;

View File

@ -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";

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.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;

View File

@ -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<ImportRoutineDescriptor> getDescriptors(ImportTicket ticket);
}

View File

@ -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<ImportRoutineDescriptor> getDescriptors(ImportTicket ticket) {
// TODO Auto-generated method stub
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;
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));
}

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
public class ISQueryDescriptor {
private DBType type;
// private DBType type;
private String resourceName;
private String platformName;
private String category;

View File

@ -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;
}

View File

@ -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<ImportRoutineDescriptor> getAll(){
throw new WebApplicationException("Not YET Implemented", Response.Status.NOT_IMPLEMENTED);
}
}