Skip to content

Commit

Permalink
Merge pull request #8 from hms-dbmi/development-0.3
Browse files Browse the repository at this point in the history
Development 0.3
  • Loading branch information
JREastonMarks committed Feb 19, 2016
2 parents 3ba0c27 + a5b3a86 commit 191b3d5
Show file tree
Hide file tree
Showing 3 changed files with 132 additions and 36 deletions.
65 changes: 56 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>edu.harvard.hms.dbmi.bd2k.irct</groupId>
<artifactId>IRCT-API</artifactId>
<version>0.2</version>
<name>INTER-RESOURCE COMMUNICATION TOOL : API</name>
<description></description>
<dependencies>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>edu.harvard.hms.dbmi.bd2k.irct</groupId>
<artifactId>IRCT-API</artifactId>
<version>0.3</version>
<name>INTER-RESOURCE COMMUNICATION TOOL : API</name>
<description></description>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
Expand All @@ -18,5 +19,51 @@
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
</dependencies>
</dependencies>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<finalName>IRCT-API</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,19 @@
package edu.harvard.hms.dbmi.bd2k.irct.controller;

import java.util.Date;
import java.util.concurrent.Callable;
import java.util.logging.Logger;

import javax.annotation.Resource;
import javax.ejb.Asynchronous;
import javax.ejb.Stateless;
import javax.enterprise.concurrent.ManagedExecutorService;
import javax.inject.Inject;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;
import javax.transaction.UserTransaction;

import edu.harvard.hms.dbmi.bd2k.irct.action.ExecutionPlan;
import edu.harvard.hms.dbmi.bd2k.irct.action.ProcessExecutable;
Expand Down Expand Up @@ -40,8 +46,11 @@ public class ExecutionController {
@Inject
Logger log;

@Inject
private EntityManagerFactory objectEntityManager;
@PersistenceContext
EntityManager entityManager;

@Resource
private ManagedExecutorService mes;

/**
* Runs the process
Expand All @@ -54,8 +63,11 @@ public Long runProcess(IRCTProcess process) throws PersistableException {
log.info("Start: " + process.getId());
Result newResult = new Result();

EntityManager oem = objectEntityManager.createEntityManager();
oem.persist(newResult);
// EntityManager oem = objectEntityManager.createEntityManager();
// oem.persist(newResult);

newResult.setResultStatus(ResultStatus.Running);
entityManager.persist(newResult);

ExecuteProcess ep = new ExecuteProcess();
ep.setup(process.getResource(), process);
Expand Down Expand Up @@ -85,9 +97,12 @@ public Long runProcess(IRCTProcess process) throws PersistableException {
public Long runQuery(Query query) throws PersistableException {
log.info("Start: " + query.getId());
Result newResult = new Result();

EntityManager oem = objectEntityManager.createEntityManager();
oem.persist(newResult);

// EntityManager oem = objectEntityManager.createEntityManager();
// oem.persist(newResult);

newResult.setResultStatus(ResultStatus.Running);
entityManager.persist(newResult);

ExecuteQuery eq = new ExecuteQuery();
eq.setup(query.getResources().get(0), query);
Expand All @@ -113,21 +128,47 @@ public Long runQuery(Query query) throws PersistableException {
* @throws PersistableException A persistable exception occurred
*/
@Asynchronous
public void runExecutionPlan(ExecutionPlan executionPlan, Result result)
public void runExecutionPlan(final ExecutionPlan executionPlan, final Result result)
throws PersistableException {

result.setRunTime(new Date());
executionPlan.run();

ResultSet rs = executionPlan.getResults();
if(rs != null) {
((Persistable) rs).persist("" + result.getId());
} else {

}
result.setResultSetLocation("" + result.getId());
result.setImplementingResultSet(rs);
result.setResultStatus(ResultStatus.Available);


Callable<Result> runPlan = new Callable<Result>() {
@Override
public Result call() throws Exception {
result.setRunTime(new Date());
executionPlan.run();

ResultSet rs = executionPlan.getResults();
if(rs != null) {
((Persistable) rs).persist("" + result.getId());
result.setResultSetLocation("" + result.getId());
result.setImplementingResultSet(rs);
result.setResultStatus(ResultStatus.Available);
} else {
result.setResultStatus(ResultStatus.Error);
}


// EntityManager oem = objectEntityManager.createEntityManager();
// oem.persist(result);
UserTransaction userTransaction = lookup();
userTransaction.begin();
try {
entityManager.merge(result);
} catch(Exception e) {
e.printStackTrace();
}
userTransaction.commit();

return result;
}
};

mes.submit(runPlan);
// Future<Result> futureResult = mes.submit(runPlan);

}
private UserTransaction lookup() throws NamingException {
InitialContext ic = new InitialContext();
return (UserTransaction)ic.lookup("java:comp/UserTransaction");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import edu.harvard.hms.dbmi.bd2k.irct.model.result.Persistable;
import edu.harvard.hms.dbmi.bd2k.irct.model.result.Result;
import edu.harvard.hms.dbmi.bd2k.irct.model.result.ResultSet;
import edu.harvard.hms.dbmi.bd2k.irct.model.result.ResultStatus;
import edu.harvard.hms.dbmi.bd2k.irct.model.result.exception.PersistableException;
import edu.harvard.hms.dbmi.bd2k.irct.model.result.exception.ResultSetException;

Expand Down Expand Up @@ -69,10 +70,17 @@ public ResultSet getResultSet(Long id) throws ResultSetException,
PersistableException {
EntityManager oem = objectEntityManager.createEntityManager();
Result result = oem.find(Result.class, id);

if(result.getResultStatus() == ResultStatus.Running) {
throw new ResultSetException("Result set is still running");
} else if(result.getResultStatus() != ResultStatus.Available) {
throw new ResultSetException("Result set is not available");
} else {
ResultSet rs = result.getImplementingResultSet();
((Persistable) rs).load(result.getResultSetLocation());
return rs;
}

ResultSet rs = result.getImplementingResultSet();
((Persistable) rs).load(result.getResultSetLocation());

return rs;

}
}

0 comments on commit 191b3d5

Please sign in to comment.