This commit is contained in:
Fabio Sinibaldi 2018-12-21 14:57:23 +00:00
parent 288c2c4208
commit 99e8c65b93
13 changed files with 200 additions and 0 deletions

View File

@ -83,6 +83,14 @@
<version>${weld-version}</version> <!-- 2.0.4 doesn't find implementations. 2.2.4 doesn't find CDI... -->
</dependency>
<!-- DM -->
<dependency>
<groupId>org.gcube.data.analysis</groupId>
<artifactId>data-miner-manager-cl</artifactId>
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
</dependency>
</dependencies>
</project>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,21 @@
package org.gcube.application.perform.service.engine.dm;
public abstract class DMPoolMonitor<T extends PostProcess>{
private T PostProcess;
private PoolMonitorConfiguration configuration;
public DMPoolMonitor(T PostProcess){
// INIT THREAD POOL
// .. queue, core/max size
}
public void submitRequest() {
}
}

View File

@ -0,0 +1,5 @@
package org.gcube.application.perform.service.engine.dm;
public class PoolMonitorConfiguration {
}

View File

@ -0,0 +1,5 @@
package org.gcube.application.perform.service.engine.dm;
public interface PostProcess {
}

View File

@ -0,0 +1,5 @@
package org.gcube.application.perform.service.engine.model.importer;
public class ImportRequest {
}

View File

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

View File

@ -0,0 +1,5 @@
package org.gcube.application.perform.service.engine.model.importer;
public class ImportTicket {
}

View File

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