git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/application/perform-service@176284 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
51cfe3d776
commit
ad6a753e2d
|
@ -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;
|
||||
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
package org.gcube.application.perform.service.engine.model;
|
||||
|
||||
public enum DBType {
|
||||
|
||||
Anagraphic,Performances
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue