You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2014/05/30 21:53:59 UTC
[04/11] adding proper entity manager closing and exception handling -
AIRAVATA-1285
http://git-wip-us.apache.org/repos/asf/airavata/blob/bf5f8c3c/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java
index 1dcec6d..29b45f9 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/TaskDetailResource.java
@@ -26,10 +26,11 @@ import org.apache.airavata.persistance.registry.jpa.ResourceType;
import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
import org.apache.airavata.persistance.registry.jpa.model.*;
import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
-import org.apache.airavata.registry.cpi.utils.Constants;
+import org.apache.airavata.registry.cpi.Registry;
import org.apache.airavata.registry.cpi.utils.StatusType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.airavata.registry.cpi.RegistryException;
import javax.persistence.EntityManager;
import javax.persistence.Query;
@@ -85,8 +86,8 @@ public class TaskDetailResource extends AbstractResource {
this.applicationVersion = applicationVersion;
}
- @Override
- public Resource create(ResourceType type) {
+
+ public Resource create(ResourceType type) throws RegistryException{
switch (type){
case ERROR_DETAIL:
ErrorDetailResource errorDetailResource = new ErrorDetailResource();
@@ -134,324 +135,361 @@ public class TaskDetailResource extends AbstractResource {
}
}
- @Override
- public void remove(ResourceType type, Object name) {
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- Query q;
- QueryGenerator generator;
- switch (type){
- case ERROR_DETAIL:
- generator = new QueryGenerator(ERROR_DETAIL);
- generator.setParameter(ErrorDetailConstants.TASK_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case APPLICATION_INPUT:
- generator = new QueryGenerator(APPLICATION_INPUT);
- generator.setParameter(ApplicationInputConstants.TASK_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case APPLICATION_OUTPUT:
- generator = new QueryGenerator(APPLICATION_OUTPUT);
- generator.setParameter(ApplicationOutputConstants.TASK_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case JOB_DETAIL:
- generator = new QueryGenerator(JOB_DETAIL);
- generator.setParameter(JobDetailConstants.TASK_ID, taskId);
- generator.setParameter(JobDetailConstants.JOB_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case DATA_TRANSFER_DETAIL:
- generator = new QueryGenerator(DATA_TRANSFER_DETAIL);
- generator.setParameter(DataTransferDetailConstants.TRANSFER_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case STATUS:
- generator = new QueryGenerator(STATUS);
- generator.setParameter(StatusConstants.TASK_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case COMPUTATIONAL_RESOURCE_SCHEDULING:
- generator = new QueryGenerator(COMPUTATIONAL_RESOURCE_SCHEDULING);
- generator.setParameter(ComputationalResourceSchedulingConstants.TASK_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case ADVANCE_INPUT_DATA_HANDLING:
- generator = new QueryGenerator(ADVANCE_INPUT_DATA_HANDLING);
- generator.setParameter(AdvancedInputDataHandlingConstants.TASK_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case ADVANCE_OUTPUT_DATA_HANDLING:
- generator = new QueryGenerator(ADVANCE_OUTPUT_DATA_HANDLING);
- generator.setParameter(AdvancedOutputDataHandlingConstants.TASK_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case QOS_PARAM:
- generator = new QueryGenerator(QOS_PARAMS);
- generator.setParameter(QosParamsConstants.TASK_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- default:
- logger.error("Unsupported resource type for task detail resource.", new IllegalArgumentException());
- break;
+
+ public void remove(ResourceType type, Object name) throws RegistryException{
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ Query q;
+ QueryGenerator generator;
+ switch (type) {
+ case ERROR_DETAIL:
+ generator = new QueryGenerator(ERROR_DETAIL);
+ generator.setParameter(ErrorDetailConstants.TASK_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case APPLICATION_INPUT:
+ generator = new QueryGenerator(APPLICATION_INPUT);
+ generator.setParameter(ApplicationInputConstants.TASK_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case APPLICATION_OUTPUT:
+ generator = new QueryGenerator(APPLICATION_OUTPUT);
+ generator.setParameter(ApplicationOutputConstants.TASK_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case JOB_DETAIL:
+ generator = new QueryGenerator(JOB_DETAIL);
+ generator.setParameter(JobDetailConstants.TASK_ID, taskId);
+ generator.setParameter(JobDetailConstants.JOB_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case DATA_TRANSFER_DETAIL:
+ generator = new QueryGenerator(DATA_TRANSFER_DETAIL);
+ generator.setParameter(DataTransferDetailConstants.TRANSFER_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case STATUS:
+ generator = new QueryGenerator(STATUS);
+ generator.setParameter(StatusConstants.TASK_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case COMPUTATIONAL_RESOURCE_SCHEDULING:
+ generator = new QueryGenerator(COMPUTATIONAL_RESOURCE_SCHEDULING);
+ generator.setParameter(ComputationalResourceSchedulingConstants.TASK_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case ADVANCE_INPUT_DATA_HANDLING:
+ generator = new QueryGenerator(ADVANCE_INPUT_DATA_HANDLING);
+ generator.setParameter(AdvancedInputDataHandlingConstants.TASK_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case ADVANCE_OUTPUT_DATA_HANDLING:
+ generator = new QueryGenerator(ADVANCE_OUTPUT_DATA_HANDLING);
+ generator.setParameter(AdvancedOutputDataHandlingConstants.TASK_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case QOS_PARAM:
+ generator = new QueryGenerator(QOS_PARAMS);
+ generator.setParameter(QosParamsConstants.TASK_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ default:
+ logger.error("Unsupported resource type for task detail resource.", new IllegalArgumentException());
+ break;
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
}
- em.getTransaction().commit();
- em.close();
}
- @Override
- public Resource get(ResourceType type, Object name) {
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- QueryGenerator generator;
- Query q;
- switch (type) {
- case ERROR_DETAIL:
- generator = new QueryGenerator(ERROR_DETAIL);
- generator.setParameter(ErrorDetailConstants.TASK_ID, name);
- q = generator.selectQuery(em);
- ErrorDetail errorDetail = (ErrorDetail)q.getSingleResult();
- ErrorDetailResource errorDetailResource = (ErrorDetailResource)Utils.getResource(ResourceType.ERROR_DETAIL, errorDetail);
- em.getTransaction().commit();
- em.close();
- return errorDetailResource;
- case APPLICATION_INPUT:
- generator = new QueryGenerator(APPLICATION_INPUT);
- generator.setParameter(ApplicationInputConstants.TASK_ID, name);
- q = generator.selectQuery(em);
- ApplicationInput applicationInput = (ApplicationInput)q.getSingleResult();
- ApplicationInputResource inputResource = (ApplicationInputResource)Utils.getResource(ResourceType.APPLICATION_INPUT, applicationInput);
- em.getTransaction().commit();
- em.close();
- return inputResource;
- case APPLICATION_OUTPUT:
- generator = new QueryGenerator(APPLICATION_OUTPUT);
- generator.setParameter(ApplicationOutputConstants.TASK_ID, name);
- q = generator.selectQuery(em);
- ApplicationOutput applicationOutput = (ApplicationOutput)q.getSingleResult();
- ApplicationOutputResource outputResource = (ApplicationOutputResource)Utils.getResource(ResourceType.APPLICATION_OUTPUT, applicationOutput);
- em.getTransaction().commit();
- em.close();
- return outputResource;
- case JOB_DETAIL:
- generator = new QueryGenerator(JOB_DETAIL);
- generator.setParameter(JobDetailConstants.JOB_ID, name);
- generator.setParameter(JobDetailConstants.TASK_ID, taskId);
- q = generator.selectQuery(em);
- JobDetail jobDetail = (JobDetail)q.getSingleResult();
- JobDetailResource jobDetailResource = (JobDetailResource)Utils.getResource(ResourceType.JOB_DETAIL, jobDetail);
- em.getTransaction().commit();
- em.close();
- return jobDetailResource;
- case DATA_TRANSFER_DETAIL:
- generator = new QueryGenerator(DATA_TRANSFER_DETAIL);
- generator.setParameter(DataTransferDetailConstants.TRANSFER_ID, name);
- q = generator.selectQuery(em);
- DataTransferDetail transferDetail = (DataTransferDetail)q.getSingleResult();
- DataTransferDetailResource transferDetailResource = (DataTransferDetailResource)Utils.getResource(ResourceType.DATA_TRANSFER_DETAIL, transferDetail);
- em.getTransaction().commit();
- em.close();
- return transferDetailResource;
- case STATUS:
- generator = new QueryGenerator(STATUS);
- generator.setParameter(StatusConstants.TASK_ID, name);
- q = generator.selectQuery(em);
- Status status = (Status)q.getSingleResult();
- StatusResource statusResource = (StatusResource)Utils.getResource(ResourceType.STATUS, status);
- em.getTransaction().commit();
- em.close();
- return statusResource;
- case COMPUTATIONAL_RESOURCE_SCHEDULING:
- generator = new QueryGenerator(COMPUTATIONAL_RESOURCE_SCHEDULING);
- generator.setParameter(ComputationalResourceSchedulingConstants.TASK_ID, name);
- q = generator.selectQuery(em);
- Computational_Resource_Scheduling resourceScheduling = (Computational_Resource_Scheduling)q.getSingleResult();
- ComputationSchedulingResource schedulingResource = (ComputationSchedulingResource)Utils.getResource(ResourceType.COMPUTATIONAL_RESOURCE_SCHEDULING, resourceScheduling);
- em.getTransaction().commit();
- em.close();
- return schedulingResource;
- case ADVANCE_INPUT_DATA_HANDLING:
- generator = new QueryGenerator(ADVANCE_INPUT_DATA_HANDLING);
- generator.setParameter(AdvancedInputDataHandlingConstants.TASK_ID, name);
- q = generator.selectQuery(em);
- AdvancedInputDataHandling dataHandling = (AdvancedInputDataHandling)q.getSingleResult();
- AdvanceInputDataHandlingResource inputDataHandlingResource = (AdvanceInputDataHandlingResource)Utils.getResource(ResourceType.ADVANCE_INPUT_DATA_HANDLING, dataHandling);
- em.getTransaction().commit();
- em.close();
- return inputDataHandlingResource;
- case ADVANCE_OUTPUT_DATA_HANDLING:
- generator = new QueryGenerator(ADVANCE_OUTPUT_DATA_HANDLING);
- generator.setParameter(AdvancedOutputDataHandlingConstants.TASK_ID, name);
- q = generator.selectQuery(em);
- AdvancedOutputDataHandling outputDataHandling = (AdvancedOutputDataHandling)q.getSingleResult();
- AdvancedOutputDataHandlingResource outputDataHandlingResource = (AdvancedOutputDataHandlingResource)Utils.getResource(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING, outputDataHandling);
- em.getTransaction().commit();
- em.close();
- return outputDataHandlingResource;
- case QOS_PARAM:
- generator = new QueryGenerator(QOS_PARAMS);
- generator.setParameter(QosParamsConstants.TASK_ID, name);
- q = generator.selectQuery(em);
- QosParam qosParam = (QosParam)q.getSingleResult();
- QosParamResource qosParamResource = (QosParamResource)Utils.getResource(ResourceType.QOS_PARAM, qosParam);
- em.getTransaction().commit();
- em.close();
- return qosParamResource;
- default:
- em.getTransaction().commit();
+
+ public Resource get(ResourceType type, Object name) throws RegistryException{
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ QueryGenerator generator;
+ Query q;
+ switch (type) {
+ case ERROR_DETAIL:
+ generator = new QueryGenerator(ERROR_DETAIL);
+ generator.setParameter(ErrorDetailConstants.TASK_ID, name);
+ q = generator.selectQuery(em);
+ ErrorDetail errorDetail = (ErrorDetail) q.getSingleResult();
+ ErrorDetailResource errorDetailResource = (ErrorDetailResource) Utils.getResource(ResourceType.ERROR_DETAIL, errorDetail);
+ em.getTransaction().commit();
+ em.close();
+ return errorDetailResource;
+ case APPLICATION_INPUT:
+ generator = new QueryGenerator(APPLICATION_INPUT);
+ generator.setParameter(ApplicationInputConstants.TASK_ID, name);
+ q = generator.selectQuery(em);
+ ApplicationInput applicationInput = (ApplicationInput) q.getSingleResult();
+ ApplicationInputResource inputResource = (ApplicationInputResource) Utils.getResource(ResourceType.APPLICATION_INPUT, applicationInput);
+ em.getTransaction().commit();
+ em.close();
+ return inputResource;
+ case APPLICATION_OUTPUT:
+ generator = new QueryGenerator(APPLICATION_OUTPUT);
+ generator.setParameter(ApplicationOutputConstants.TASK_ID, name);
+ q = generator.selectQuery(em);
+ ApplicationOutput applicationOutput = (ApplicationOutput) q.getSingleResult();
+ ApplicationOutputResource outputResource = (ApplicationOutputResource) Utils.getResource(ResourceType.APPLICATION_OUTPUT, applicationOutput);
+ em.getTransaction().commit();
+ em.close();
+ return outputResource;
+ case JOB_DETAIL:
+ generator = new QueryGenerator(JOB_DETAIL);
+ generator.setParameter(JobDetailConstants.JOB_ID, name);
+ generator.setParameter(JobDetailConstants.TASK_ID, taskId);
+ q = generator.selectQuery(em);
+ JobDetail jobDetail = (JobDetail) q.getSingleResult();
+ JobDetailResource jobDetailResource = (JobDetailResource) Utils.getResource(ResourceType.JOB_DETAIL, jobDetail);
+ em.getTransaction().commit();
+ em.close();
+ return jobDetailResource;
+ case DATA_TRANSFER_DETAIL:
+ generator = new QueryGenerator(DATA_TRANSFER_DETAIL);
+ generator.setParameter(DataTransferDetailConstants.TRANSFER_ID, name);
+ q = generator.selectQuery(em);
+ DataTransferDetail transferDetail = (DataTransferDetail) q.getSingleResult();
+ DataTransferDetailResource transferDetailResource = (DataTransferDetailResource) Utils.getResource(ResourceType.DATA_TRANSFER_DETAIL, transferDetail);
+ em.getTransaction().commit();
+ em.close();
+ return transferDetailResource;
+ case STATUS:
+ generator = new QueryGenerator(STATUS);
+ generator.setParameter(StatusConstants.TASK_ID, name);
+ q = generator.selectQuery(em);
+ Status status = (Status) q.getSingleResult();
+ StatusResource statusResource = (StatusResource) Utils.getResource(ResourceType.STATUS, status);
+ em.getTransaction().commit();
+ em.close();
+ return statusResource;
+ case COMPUTATIONAL_RESOURCE_SCHEDULING:
+ generator = new QueryGenerator(COMPUTATIONAL_RESOURCE_SCHEDULING);
+ generator.setParameter(ComputationalResourceSchedulingConstants.TASK_ID, name);
+ q = generator.selectQuery(em);
+ Computational_Resource_Scheduling resourceScheduling = (Computational_Resource_Scheduling) q.getSingleResult();
+ ComputationSchedulingResource schedulingResource = (ComputationSchedulingResource) Utils.getResource(ResourceType.COMPUTATIONAL_RESOURCE_SCHEDULING, resourceScheduling);
+ em.getTransaction().commit();
+ em.close();
+ return schedulingResource;
+ case ADVANCE_INPUT_DATA_HANDLING:
+ generator = new QueryGenerator(ADVANCE_INPUT_DATA_HANDLING);
+ generator.setParameter(AdvancedInputDataHandlingConstants.TASK_ID, name);
+ q = generator.selectQuery(em);
+ AdvancedInputDataHandling dataHandling = (AdvancedInputDataHandling) q.getSingleResult();
+ AdvanceInputDataHandlingResource inputDataHandlingResource = (AdvanceInputDataHandlingResource) Utils.getResource(ResourceType.ADVANCE_INPUT_DATA_HANDLING, dataHandling);
+ em.getTransaction().commit();
+ em.close();
+ return inputDataHandlingResource;
+ case ADVANCE_OUTPUT_DATA_HANDLING:
+ generator = new QueryGenerator(ADVANCE_OUTPUT_DATA_HANDLING);
+ generator.setParameter(AdvancedOutputDataHandlingConstants.TASK_ID, name);
+ q = generator.selectQuery(em);
+ AdvancedOutputDataHandling outputDataHandling = (AdvancedOutputDataHandling) q.getSingleResult();
+ AdvancedOutputDataHandlingResource outputDataHandlingResource = (AdvancedOutputDataHandlingResource) Utils.getResource(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING, outputDataHandling);
+ em.getTransaction().commit();
+ em.close();
+ return outputDataHandlingResource;
+ case QOS_PARAM:
+ generator = new QueryGenerator(QOS_PARAMS);
+ generator.setParameter(QosParamsConstants.TASK_ID, name);
+ q = generator.selectQuery(em);
+ QosParam qosParam = (QosParam) q.getSingleResult();
+ QosParamResource qosParamResource = (QosParamResource) Utils.getResource(ResourceType.QOS_PARAM, qosParam);
+ em.getTransaction().commit();
+ em.close();
+ return qosParamResource;
+ default:
+ em.getTransaction().commit();
+ em.close();
+ logger.error("Unsupported resource type for workflow node resource.", new IllegalArgumentException());
+ throw new IllegalArgumentException("Unsupported resource type for workflow node resource.");
+ }
+ } catch (Exception e) {
+// logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
em.close();
- logger.error("Unsupported resource type for workflow node resource.", new IllegalArgumentException());
- throw new IllegalArgumentException("Unsupported resource type for workflow node resource.");
+ }
}
}
- @Override
- public List<Resource> get(ResourceType type) {
+
+ public List<Resource> get(ResourceType type) throws RegistryException{
List<Resource> resourceList = new ArrayList<Resource>();
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- Query q;
- QueryGenerator generator;
- List results;
- switch (type){
- case ERROR_DETAIL:
- generator = new QueryGenerator(ERROR_DETAIL);
- generator.setParameter(ErrorDetailConstants.TASK_ID, taskId);
- q = generator.selectQuery(em);
- results = q.getResultList();
- if (results.size() != 0) {
- for (Object result : results) {
- ErrorDetail errorDetail = (ErrorDetail) result;
- ErrorDetailResource errorDetailResource =
- (ErrorDetailResource)Utils.getResource(ResourceType.ERROR_DETAIL, errorDetail);
- resourceList.add(errorDetailResource);
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ Query q;
+ QueryGenerator generator;
+ List results;
+ switch (type) {
+ case ERROR_DETAIL:
+ generator = new QueryGenerator(ERROR_DETAIL);
+ generator.setParameter(ErrorDetailConstants.TASK_ID, taskId);
+ q = generator.selectQuery(em);
+ results = q.getResultList();
+ if (results.size() != 0) {
+ for (Object result : results) {
+ ErrorDetail errorDetail = (ErrorDetail) result;
+ ErrorDetailResource errorDetailResource =
+ (ErrorDetailResource) Utils.getResource(ResourceType.ERROR_DETAIL, errorDetail);
+ resourceList.add(errorDetailResource);
+ }
}
- }
- break;
- case APPLICATION_INPUT:
- generator = new QueryGenerator(APPLICATION_INPUT);
- generator.setParameter(ApplicationInputConstants.TASK_ID, taskId);
- q = generator.selectQuery(em);
- results = q.getResultList();
- if (results.size() != 0) {
- for (Object result : results) {
- ApplicationInput applicationInput = (ApplicationInput) result;
- ApplicationInputResource inputResource =
- (ApplicationInputResource)Utils.getResource(ResourceType.APPLICATION_INPUT, applicationInput);
- resourceList.add(inputResource);
+ break;
+ case APPLICATION_INPUT:
+ generator = new QueryGenerator(APPLICATION_INPUT);
+ generator.setParameter(ApplicationInputConstants.TASK_ID, taskId);
+ q = generator.selectQuery(em);
+ results = q.getResultList();
+ if (results.size() != 0) {
+ for (Object result : results) {
+ ApplicationInput applicationInput = (ApplicationInput) result;
+ ApplicationInputResource inputResource =
+ (ApplicationInputResource) Utils.getResource(ResourceType.APPLICATION_INPUT, applicationInput);
+ resourceList.add(inputResource);
+ }
}
- }
- break;
- case APPLICATION_OUTPUT:
- generator = new QueryGenerator(APPLICATION_OUTPUT);
- generator.setParameter(ApplicationOutputConstants.TASK_ID, taskId);
- q = generator.selectQuery(em);
- results = q.getResultList();
- if (results.size() != 0) {
- for (Object result : results) {
- ApplicationOutput applicationOutput = (ApplicationOutput) result;
- ApplicationOutputResource outputResource =
- (ApplicationOutputResource)Utils.getResource(ResourceType.APPLICATION_OUTPUT, applicationOutput);
- resourceList.add(outputResource);
+ break;
+ case APPLICATION_OUTPUT:
+ generator = new QueryGenerator(APPLICATION_OUTPUT);
+ generator.setParameter(ApplicationOutputConstants.TASK_ID, taskId);
+ q = generator.selectQuery(em);
+ results = q.getResultList();
+ if (results.size() != 0) {
+ for (Object result : results) {
+ ApplicationOutput applicationOutput = (ApplicationOutput) result;
+ ApplicationOutputResource outputResource =
+ (ApplicationOutputResource) Utils.getResource(ResourceType.APPLICATION_OUTPUT, applicationOutput);
+ resourceList.add(outputResource);
+ }
}
- }
- break;
- case JOB_DETAIL:
- generator = new QueryGenerator(JOB_DETAIL);
- generator.setParameter(JobDetailConstants.TASK_ID, taskId);
- q = generator.selectQuery(em);
- results = q.getResultList();
- if (results.size() != 0) {
- for (Object result : results) {
- JobDetail jobDetail = (JobDetail) result;
- JobDetailResource jobDetailResource =
- (JobDetailResource)Utils.getResource(ResourceType.JOB_DETAIL, jobDetail);
- resourceList.add(jobDetailResource);
+ break;
+ case JOB_DETAIL:
+ generator = new QueryGenerator(JOB_DETAIL);
+ generator.setParameter(JobDetailConstants.TASK_ID, taskId);
+ q = generator.selectQuery(em);
+ results = q.getResultList();
+ if (results.size() != 0) {
+ for (Object result : results) {
+ JobDetail jobDetail = (JobDetail) result;
+ JobDetailResource jobDetailResource =
+ (JobDetailResource) Utils.getResource(ResourceType.JOB_DETAIL, jobDetail);
+ resourceList.add(jobDetailResource);
+ }
}
- }
- break;
- case DATA_TRANSFER_DETAIL:
- generator = new QueryGenerator(DATA_TRANSFER_DETAIL);
- generator.setParameter(DataTransferDetailConstants.TASK_ID, taskId);
- q = generator.selectQuery(em);
- results = q.getResultList();
- if (results.size() != 0) {
- for (Object result : results) {
- DataTransferDetail transferDetail = (DataTransferDetail) result;
- DataTransferDetailResource transferDetailResource =
- (DataTransferDetailResource)Utils.getResource(ResourceType.DATA_TRANSFER_DETAIL, transferDetail);
- resourceList.add(transferDetailResource);
+ break;
+ case DATA_TRANSFER_DETAIL:
+ generator = new QueryGenerator(DATA_TRANSFER_DETAIL);
+ generator.setParameter(DataTransferDetailConstants.TASK_ID, taskId);
+ q = generator.selectQuery(em);
+ results = q.getResultList();
+ if (results.size() != 0) {
+ for (Object result : results) {
+ DataTransferDetail transferDetail = (DataTransferDetail) result;
+ DataTransferDetailResource transferDetailResource =
+ (DataTransferDetailResource) Utils.getResource(ResourceType.DATA_TRANSFER_DETAIL, transferDetail);
+ resourceList.add(transferDetailResource);
+ }
}
- }
- break;
- case STATUS:
- generator = new QueryGenerator(STATUS);
- generator.setParameter(StatusConstants.TASK_ID, taskId);
- q = generator.selectQuery(em);
- results = q.getResultList();
- if (results.size() != 0) {
- for (Object result : results) {
- Status status = (Status) result;
- StatusResource statusResource =
- (StatusResource)Utils.getResource(ResourceType.STATUS, status);
- resourceList.add(statusResource);
+ break;
+ case STATUS:
+ generator = new QueryGenerator(STATUS);
+ generator.setParameter(StatusConstants.TASK_ID, taskId);
+ q = generator.selectQuery(em);
+ results = q.getResultList();
+ if (results.size() != 0) {
+ for (Object result : results) {
+ Status status = (Status) result;
+ StatusResource statusResource =
+ (StatusResource) Utils.getResource(ResourceType.STATUS, status);
+ resourceList.add(statusResource);
+ }
}
- }
- break;
- default:
- em.getTransaction().commit();
+ break;
+ default:
+ em.getTransaction().commit();
+ em.close();
+ logger.error("Unsupported resource type for workflow node details resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
em.close();
- logger.error("Unsupported resource type for workflow node details resource.", new UnsupportedOperationException());
- throw new UnsupportedOperationException();
+ }
}
- em.getTransaction().commit();
- em.close();
return resourceList;
}
- @Override
- public void save() {
- EntityManager em = ResourceUtils.getEntityManager();
- TaskDetail existingTaskDetail = em.find(TaskDetail.class, taskId);
- em.close();
-
- em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- TaskDetail taskDetail = new TaskDetail();
- taskDetail.setTaskId(taskId);
- WorkflowNodeDetail workflowNodeDetail = em.find(WorkflowNodeDetail.class, workflowNodeDetailResource.getNodeInstanceId());
- taskDetail.setNodeDetail(workflowNodeDetail);
- taskDetail.setNodeId(workflowNodeDetailResource.getNodeInstanceId());
- taskDetail.setCreationTime(creationTime);
- taskDetail.setAppId(applicationId);
- taskDetail.setAppVersion(applicationVersion);
- if (existingTaskDetail != null){
- existingTaskDetail.setTaskId(taskId);
- existingTaskDetail.setNodeDetail(workflowNodeDetail);
- existingTaskDetail.setNodeId(workflowNodeDetailResource.getNodeInstanceId());
- existingTaskDetail.setCreationTime(creationTime);
- existingTaskDetail.setAppId(applicationId);
- existingTaskDetail.setAppVersion(applicationVersion);
- taskDetail = em.merge(existingTaskDetail);
- }else {
- em.merge(taskDetail);
+
+ public void save() throws RegistryException{
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ TaskDetail existingTaskDetail = em.find(TaskDetail.class, taskId);
+ em.close();
+
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ TaskDetail taskDetail = new TaskDetail();
+ taskDetail.setTaskId(taskId);
+ WorkflowNodeDetail workflowNodeDetail = em.find(WorkflowNodeDetail.class, workflowNodeDetailResource.getNodeInstanceId());
+ taskDetail.setNodeDetail(workflowNodeDetail);
+ taskDetail.setNodeId(workflowNodeDetailResource.getNodeInstanceId());
+ taskDetail.setCreationTime(creationTime);
+ taskDetail.setAppId(applicationId);
+ taskDetail.setAppVersion(applicationVersion);
+ if (existingTaskDetail != null) {
+ existingTaskDetail.setTaskId(taskId);
+ existingTaskDetail.setNodeDetail(workflowNodeDetail);
+ existingTaskDetail.setNodeId(workflowNodeDetailResource.getNodeInstanceId());
+ existingTaskDetail.setCreationTime(creationTime);
+ existingTaskDetail.setAppId(applicationId);
+ existingTaskDetail.setAppVersion(applicationVersion);
+ taskDetail = em.merge(existingTaskDetail);
+ } else {
+ em.merge(taskDetail);
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
}
- em.getTransaction().commit();
- em.close();
}
- public List<ApplicationInputResource> getApplicationInputs() {
+ public List<ApplicationInputResource> getApplicationInputs() throws RegistryException{
List<ApplicationInputResource> applicationInputResources = new ArrayList<ApplicationInputResource>();
List<Resource> resources = get(ResourceType.APPLICATION_INPUT);
for (Resource resource : resources) {
@@ -461,7 +499,7 @@ public class TaskDetailResource extends AbstractResource {
return applicationInputResources;
}
- public List<ApplicationOutputResource> getApplicationOutputs(){
+ public List<ApplicationOutputResource> getApplicationOutputs() throws RegistryException{
List<ApplicationOutputResource> outputResources = new ArrayList<ApplicationOutputResource>();
List<Resource> resources = get(ResourceType.APPLICATION_OUTPUT);
for (Resource resource : resources) {
@@ -471,7 +509,7 @@ public class TaskDetailResource extends AbstractResource {
return outputResources;
}
- public StatusResource getTaskStatus(){
+ public StatusResource getTaskStatus() throws RegistryException{
List<Resource> resources = get(ResourceType.STATUS);
for (Resource resource : resources) {
StatusResource taskStatus = (StatusResource) resource;
@@ -485,7 +523,7 @@ public class TaskDetailResource extends AbstractResource {
return null;
}
- public List<JobDetailResource> getJobDetailList(){
+ public List<JobDetailResource> getJobDetailList() throws RegistryException{
List<JobDetailResource> jobDetailResources = new ArrayList<JobDetailResource>();
List<Resource> resources = get(ResourceType.JOB_DETAIL);
for (Resource resource : resources) {
@@ -495,7 +533,7 @@ public class TaskDetailResource extends AbstractResource {
return jobDetailResources;
}
- public List<DataTransferDetailResource> getDataTransferDetailList(){
+ public List<DataTransferDetailResource> getDataTransferDetailList() throws RegistryException{
List<DataTransferDetailResource> transferDetails = new ArrayList<DataTransferDetailResource>();
List<Resource> resources = get(ResourceType.DATA_TRANSFER_DETAIL);
for (Resource resource : resources) {
@@ -505,7 +543,7 @@ public class TaskDetailResource extends AbstractResource {
return transferDetails;
}
- public List<ErrorDetailResource> getErrorDetailList(){
+ public List<ErrorDetailResource> getErrorDetailList() throws RegistryException{
List<ErrorDetailResource> errorDetailResources = new ArrayList<ErrorDetailResource>();
List<Resource> resources = get(ResourceType.ERROR_DETAIL);
for (Resource resource : resources) {
@@ -515,33 +553,33 @@ public class TaskDetailResource extends AbstractResource {
return errorDetailResources;
}
- public ComputationSchedulingResource getComputationScheduling (String taskId){
+ public ComputationSchedulingResource getComputationScheduling (String taskId) throws RegistryException{
return (ComputationSchedulingResource)get(ResourceType.COMPUTATIONAL_RESOURCE_SCHEDULING, taskId);
}
- public AdvanceInputDataHandlingResource getInputDataHandling (String taskId){
+ public AdvanceInputDataHandlingResource getInputDataHandling (String taskId) throws RegistryException{
return (AdvanceInputDataHandlingResource)get(ResourceType.ADVANCE_INPUT_DATA_HANDLING, taskId);
}
- public AdvancedOutputDataHandlingResource getOutputDataHandling (String taskId){
+ public AdvancedOutputDataHandlingResource getOutputDataHandling (String taskId) throws RegistryException{
return (AdvancedOutputDataHandlingResource)get(ResourceType.ADVANCE_OUTPUT_DATA_HANDLING, taskId);
}
- public JobDetailResource createJobDetail (String jobId){
+ public JobDetailResource createJobDetail (String jobId) throws RegistryException{
JobDetailResource resource = (JobDetailResource)create(ResourceType.JOB_DETAIL);
resource.setJobId(jobId);
return resource;
}
- public JobDetailResource getJobDetail (String jobId){
+ public JobDetailResource getJobDetail (String jobId) throws RegistryException{
return (JobDetailResource)get(ResourceType.JOB_DETAIL, jobId);
}
- public DataTransferDetailResource getDataTransferDetail (String dataTransferId){
+ public DataTransferDetailResource getDataTransferDetail (String dataTransferId) throws RegistryException{
return (DataTransferDetailResource)get(ResourceType.DATA_TRANSFER_DETAIL, dataTransferId);
}
- public boolean isTaskStatusExist (String taskId){
+ public boolean isTaskStatusExist (String taskId) throws RegistryException{
return isExists(ResourceType.STATUS, taskId);
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/bf5f8c3c/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserResource.java
index 072abd0..53dd172 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserResource.java
@@ -32,6 +32,7 @@ import org.apache.airavata.registry.api.exception.RegistrySettingsException;
import org.apache.airavata.registry.api.util.RegistrySettings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.airavata.registry.cpi.RegistryException;
import javax.persistence.EntityManager;
@@ -67,7 +68,7 @@ public class UserResource extends AbstractResource {
* @param type child resource type
* @return child resource
*/
- public Resource create(ResourceType type) {
+ public Resource create(ResourceType type) throws RegistryException {
logger.error("Unsupported resource type for user resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
@@ -77,7 +78,7 @@ public class UserResource extends AbstractResource {
* @param type child resource type
* @param name child resource name
*/
- public void remove(ResourceType type, Object name) {
+ public void remove(ResourceType type, Object name) throws RegistryException{
logger.error("Unsupported resource type for user resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
@@ -88,7 +89,7 @@ public class UserResource extends AbstractResource {
* @param name child resource name
* @return UnsupportedOperationException
*/
- public Resource get(ResourceType type, Object name) {
+ public Resource get(ResourceType type, Object name) throws RegistryException {
logger.error("Unsupported resource type for user resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
@@ -98,7 +99,7 @@ public class UserResource extends AbstractResource {
* @param type child resource type
* @return UnsupportedOperationException
*/
- public List<Resource> get(ResourceType type) {
+ public List<Resource> get(ResourceType type) throws RegistryException{
logger.error("Unsupported resource type for user resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
@@ -106,29 +107,20 @@ public class UserResource extends AbstractResource {
/**
* save user to the database
*/
- public void save() {
- EntityManager em = ResourceUtils.getEntityManager();
- Users existingUser = em.find(Users.class, userName);
- em.close();
-
- em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- Users user = new Users();
- user.setUser_name(userName);
- if (password != null && !password.equals("")){
- try {
- user.setPassword(SecurityUtil.digestString(password,
- RegistrySettings.getSetting("default.registry.password.hash.method")));
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException("Error hashing default admin password. Invalid hash algorithm.", e);
- } catch (RegistrySettingsException e) {
- throw new RuntimeException("Error reading hash algorithm from configurations", e);
- }
- }
- if(existingUser != null){
- if (password != null && !password.equals("")){
+ public void save() throws RegistryException {
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ Users existingUser = em.find(Users.class, userName);
+ em.close();
+
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ Users user = new Users();
+ user.setUser_name(userName);
+ if (password != null && !password.equals("")) {
try {
- existingUser.setPassword(SecurityUtil.digestString(password,
+ user.setPassword(SecurityUtil.digestString(password,
RegistrySettings.getSetting("default.registry.password.hash.method")));
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("Error hashing default admin password. Invalid hash algorithm.", e);
@@ -136,12 +128,30 @@ public class UserResource extends AbstractResource {
throw new RuntimeException("Error reading hash algorithm from configurations", e);
}
}
- user = em.merge(existingUser);
- }else {
- em.persist(user);
+ if (existingUser != null) {
+ if (password != null && !password.equals("")) {
+ try {
+ existingUser.setPassword(SecurityUtil.digestString(password,
+ RegistrySettings.getSetting("default.registry.password.hash.method")));
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException("Error hashing default admin password. Invalid hash algorithm.", e);
+ } catch (RegistrySettingsException e) {
+ throw new RuntimeException("Error reading hash algorithm from configurations", e);
+ }
+ }
+ user = em.merge(existingUser);
+ } else {
+ em.persist(user);
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
}
- em.getTransaction().commit();
- em.close();
}
/**
@@ -150,7 +160,7 @@ public class UserResource extends AbstractResource {
* @param name child resource name
* @return UnsupportedOperationException
*/
- public boolean isExists(ResourceType type, Object name) {
+ public boolean isExists(ResourceType type, Object name) throws RegistryException{
logger.error("Unsupported resource type for user resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/bf5f8c3c/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserWorkflowResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserWorkflowResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserWorkflowResource.java
index 0ab78d1..c01aa72 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserWorkflowResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserWorkflowResource.java
@@ -23,18 +23,14 @@ package org.apache.airavata.persistance.registry.jpa.resources;
import org.apache.airavata.persistance.registry.jpa.Resource;
import org.apache.airavata.persistance.registry.jpa.ResourceType;
import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
-import org.apache.airavata.persistance.registry.jpa.model.Gateway;
import org.apache.airavata.persistance.registry.jpa.model.User_Workflow;
import org.apache.airavata.persistance.registry.jpa.model.User_Workflow_PK;
-import org.apache.airavata.persistance.registry.jpa.model.Users;
-import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
+import org.apache.airavata.registry.cpi.RegistryException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.persistence.EntityManager;
-import javax.persistence.Query;
import java.sql.Timestamp;
-import java.util.ArrayList;
import java.util.List;
public class UserWorkflowResource extends AbstractResource {
@@ -87,84 +83,71 @@ public class UserWorkflowResource extends AbstractResource {
this.path = path;
}
- public Resource create(ResourceType type) {
+ public Resource create(ResourceType type) throws RegistryException{
logger.error("Unsupported resource type for user workflow resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
- public void remove(ResourceType type, Object name) {
+ public void remove(ResourceType type, Object name) throws RegistryException{
logger.error("Unsupported resource type for user workflow resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
- public Resource get(ResourceType type, Object name) {
+ public Resource get(ResourceType type, Object name) throws RegistryException{
logger.error("Unsupported resource type for user workflow resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
- /**
- *
- * @param keys should be in the order of gateway_name,user_name and user_workflow_name
- * @return resource list
- */
- public List<Resource> populate(Object[] keys) {
- List<Resource> list = new ArrayList<Resource>();
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- QueryGenerator queryGenerator = new QueryGenerator(USER_WORKFLOW);
- queryGenerator.setParameter(UserWorkflowConstants.GATEWAY_NAME, keys[0]);
- queryGenerator.setParameter(UserWorkflowConstants.OWNER, keys[1]);
- queryGenerator.setParameter(UserWorkflowConstants.TEMPLATE_NAME, keys[2]);
- Query q = queryGenerator.selectQuery(em);
- User_Workflow userWorkflow = (User_Workflow)q.getSingleResult();
- UserWorkflowResource userWorkflowResource = (UserWorkflowResource)Utils.getResource(
- ResourceType.USER_WORKFLOW, userWorkflow);
- em.getTransaction().commit();
- em.close();
- list.add(userWorkflowResource);
- return list;
- }
-
- public List<Resource> get(ResourceType type) {
+
+ public List<Resource> get(ResourceType type) throws RegistryException{
logger.error("Unsupported resource type for user workflow resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
- public void save() {
- EntityManager em = ResourceUtils.getEntityManager();
- User_Workflow existingWF = em.find(User_Workflow.class, new User_Workflow_PK(name, worker.getUser(), gateway.getGatewayName()));
- em.close();
-
- em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- User_Workflow userWorkflow = new User_Workflow();
- userWorkflow.setTemplate_name(name);
- if(lastUpdateDate == null){
- java.util.Date date= new java.util.Date();
- lastUpdateDate = new Timestamp(date.getTime());
- }
- userWorkflow.setLast_updated_date(lastUpdateDate);
- byte[] bytes = content.getBytes();
- userWorkflow.setWorkflow_graph(bytes);
- userWorkflow.setGateway_name(this.gateway.getGatewayName());
- userWorkflow.setOwner(this.getWorker().getUser());
- userWorkflow.setPath(path);
- if(existingWF != null){
- existingWF.setGateway_name(this.gateway.getGatewayName());
- existingWF.setOwner(this.getWorker().getUser());
- existingWF.setTemplate_name(name);
- existingWF.setLast_updated_date(lastUpdateDate);
- existingWF.setPath(path);
- existingWF.setWorkflow_graph(bytes);
- userWorkflow = em.merge(existingWF);
- } else {
- em.persist(userWorkflow);
+ public void save() throws RegistryException {
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ User_Workflow existingWF = em.find(User_Workflow.class, new User_Workflow_PK(name, worker.getUser(), gateway.getGatewayName()));
+ em.close();
+
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ User_Workflow userWorkflow = new User_Workflow();
+ userWorkflow.setTemplate_name(name);
+ if (lastUpdateDate == null) {
+ java.util.Date date = new java.util.Date();
+ lastUpdateDate = new Timestamp(date.getTime());
+ }
+ userWorkflow.setLast_updated_date(lastUpdateDate);
+ byte[] bytes = content.getBytes();
+ userWorkflow.setWorkflow_graph(bytes);
+ userWorkflow.setGateway_name(this.gateway.getGatewayName());
+ userWorkflow.setOwner(this.getWorker().getUser());
+ userWorkflow.setPath(path);
+ if (existingWF != null) {
+ existingWF.setGateway_name(this.gateway.getGatewayName());
+ existingWF.setOwner(this.getWorker().getUser());
+ existingWF.setTemplate_name(name);
+ existingWF.setLast_updated_date(lastUpdateDate);
+ existingWF.setPath(path);
+ existingWF.setWorkflow_graph(bytes);
+ userWorkflow = em.merge(existingWF);
+ } else {
+ em.persist(userWorkflow);
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
}
- em.getTransaction().commit();
- em.close();
}
- public boolean isExists(ResourceType type, Object name) {
+ public boolean isExists(ResourceType type, Object name) throws RegistryException{
logger.error("Unsupported resource type for user workflow resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/bf5f8c3c/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
index 0c9b603..a818391 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
@@ -21,24 +21,21 @@
package org.apache.airavata.persistance.registry.jpa.resources;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
import org.apache.airavata.persistance.registry.jpa.Resource;
import org.apache.airavata.persistance.registry.jpa.ResourceType;
import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
import org.apache.airavata.persistance.registry.jpa.model.*;
import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
-import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
-import org.apache.openjpa.persistence.OpenJPAPersistence;
-import org.apache.openjpa.persistence.QueryResultCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.airavata.registry.cpi.RegistryException;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
public class WorkerResource extends AbstractResource {
private final static Logger logger = LoggerFactory.getLogger(WorkerResource.class);
@@ -66,7 +63,7 @@ public class WorkerResource extends AbstractResource {
* @param type child resource type
* @return child resource
*/
- public Resource create(ResourceType type) {
+ public Resource create(ResourceType type) throws RegistryException{
Resource result = null;
switch (type) {
case PROJECT:
@@ -100,39 +97,48 @@ public class WorkerResource extends AbstractResource {
* @param type child resource type
* @param name child resource name
*/
- public void remove(ResourceType type, Object name) {
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- Query q;
- QueryGenerator generator;
- switch (type) {
- case PROJECT:
- generator = new QueryGenerator(PROJECT);
- generator.setParameter(ProjectConstants.PROJECT_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case USER_WORKFLOW:
- generator = new QueryGenerator(USER_WORKFLOW);
- generator.setParameter(UserWorkflowConstants.OWNER, getUser());
- generator.setParameter(UserWorkflowConstants.TEMPLATE_NAME, name);
- generator.setParameter(UserWorkflowConstants.GATEWAY_NAME, gateway.getGatewayName());
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- case EXPERIMENT:
- generator = new QueryGenerator(EXPERIMENT);
- generator.setParameter(ExperimentConstants.EXPERIMENT_ID, name);
- q = generator.deleteQuery(em);
- q.executeUpdate();
- break;
- default:
- logger.error("Unsupported resource type for worker resource.", new IllegalArgumentException());
- break;
- }
- em.getTransaction().commit();
- em.close();
- }
+ public void remove(ResourceType type, Object name) throws RegistryException{
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ Query q;
+ QueryGenerator generator;
+ switch (type) {
+ case PROJECT:
+ generator = new QueryGenerator(PROJECT);
+ generator.setParameter(ProjectConstants.PROJECT_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case USER_WORKFLOW:
+ generator = new QueryGenerator(USER_WORKFLOW);
+ generator.setParameter(UserWorkflowConstants.OWNER, getUser());
+ generator.setParameter(UserWorkflowConstants.TEMPLATE_NAME, name);
+ generator.setParameter(UserWorkflowConstants.GATEWAY_NAME, gateway.getGatewayName());
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ case EXPERIMENT:
+ generator = new QueryGenerator(EXPERIMENT);
+ generator.setParameter(ExperimentConstants.EXPERIMENT_ID, name);
+ q = generator.deleteQuery(em);
+ q.executeUpdate();
+ break;
+ default:
+ logger.error("Unsupported resource type for worker resource.", new IllegalArgumentException());
+ break;
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e.getMessage());
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
+ }
+ }
/**
*
@@ -140,45 +146,53 @@ public class WorkerResource extends AbstractResource {
* @param name child resource name
* @return child resource
*/
- public Resource get(ResourceType type, Object name) {
- Resource result = null;
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- QueryGenerator generator;
- Query q;
- switch (type) {
- case PROJECT:
- generator = new QueryGenerator(PROJECT);
- generator.setParameter(ProjectConstants.PROJECT_ID, name);
- q = generator.selectQuery(em);
- Project project = (Project) q.getSingleResult();
- result= Utils.getResource(ResourceType.PROJECT, project);
- break;
- case USER_WORKFLOW:
- generator = new QueryGenerator(USER_WORKFLOW);
- generator.setParameter(UserWorkflowConstants.OWNER, getUser());
- generator.setParameter(UserWorkflowConstants.TEMPLATE_NAME, name);
- generator.setParameter(UserWorkflowConstants.GATEWAY_NAME, gateway.getGatewayName());
- q = generator.selectQuery(em);
- User_Workflow userWorkflow = (User_Workflow) q.getSingleResult();
- result= Utils.getResource(ResourceType.USER_WORKFLOW, userWorkflow);
- break;
- case EXPERIMENT:
- generator = new QueryGenerator(EXPERIMENT);
- generator.setParameter(ExperimentConstants.EXPERIMENT_ID, name);
- q = generator.selectQuery(em);
- Experiment experiment = (Experiment) q.getSingleResult();
- result= Utils.getResource(ResourceType.EXPERIMENT, experiment);
- break;
- default:
- logger.error("Unsupported resource type for worker resource.", new IllegalArgumentException());
- break;
- }
- em.getTransaction().commit();
- em.close();
- return result;
- }
-
+ public Resource get(ResourceType type, Object name) throws RegistryException{
+ Resource result = null;
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ QueryGenerator generator;
+ Query q;
+ switch (type) {
+ case PROJECT:
+ generator = new QueryGenerator(PROJECT);
+ generator.setParameter(ProjectConstants.PROJECT_ID, name);
+ q = generator.selectQuery(em);
+ Project project = (Project) q.getSingleResult();
+ result = Utils.getResource(ResourceType.PROJECT, project);
+ break;
+ case USER_WORKFLOW:
+ generator = new QueryGenerator(USER_WORKFLOW);
+ generator.setParameter(UserWorkflowConstants.OWNER, getUser());
+ generator.setParameter(UserWorkflowConstants.TEMPLATE_NAME, name);
+ generator.setParameter(UserWorkflowConstants.GATEWAY_NAME, gateway.getGatewayName());
+ q = generator.selectQuery(em);
+ User_Workflow userWorkflow = (User_Workflow) q.getSingleResult();
+ result = Utils.getResource(ResourceType.USER_WORKFLOW, userWorkflow);
+ break;
+ case EXPERIMENT:
+ generator = new QueryGenerator(EXPERIMENT);
+ generator.setParameter(ExperimentConstants.EXPERIMENT_ID, name);
+ q = generator.selectQuery(em);
+ Experiment experiment = (Experiment) q.getSingleResult();
+ result = Utils.getResource(ResourceType.EXPERIMENT, experiment);
+ break;
+ default:
+ logger.error("Unsupported resource type for worker resource.", new IllegalArgumentException());
+ break;
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
+ }
+ return result;
+ }
+
// public List<GFacJobDataResource> getGFacJobs(String serviceDescriptionId, String hostDescriptionId, String applicationDescriptionId){
// List<GFacJobDataResource> result = new ArrayList<GFacJobDataResource>();
// EntityManager em = ResourceUtils.getEntityManager();
@@ -222,84 +236,102 @@ public class WorkerResource extends AbstractResource {
* @param type child resource type
* @return list of child resources
*/
- public List<Resource> get(ResourceType type) {
- List<Resource> result = new ArrayList<Resource>();
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- QueryGenerator generator;
- Query q;
- switch (type) {
- case PROJECT:
- generator = new QueryGenerator(PROJECT);
- Users users = em.find(Users.class, getUser());
- Gateway gatewayModel = em.find(Gateway.class, gateway.getGatewayName());
- generator.setParameter("users", users);
- generator.setParameter("gateway", gatewayModel);
+ public List<Resource> get(ResourceType type) throws RegistryException{
+ List<Resource> result = new ArrayList<Resource>();
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ QueryGenerator generator;
+ Query q;
+ switch (type) {
+ case PROJECT:
+ generator = new QueryGenerator(PROJECT);
+ Users users = em.find(Users.class, getUser());
+ Gateway gatewayModel = em.find(Gateway.class, gateway.getGatewayName());
+ generator.setParameter("users", users);
+ generator.setParameter("gateway", gatewayModel);
// generator.setParameter(ProjectConstants.USERNAME, getUser());
// generator.setParameter(ProjectConstants.GATEWAY_NAME, gateway.getGatewayName());
- q = generator.selectQuery(em);
- for (Object o : q.getResultList()) {
- Project project = (Project) o;
- ProjectResource projectResource = (ProjectResource)Utils.getResource(ResourceType.PROJECT, project);
- result.add(projectResource);
- }
- break;
- case USER_WORKFLOW:
- generator = new QueryGenerator(USER_WORKFLOW);
- generator.setParameter(UserWorkflowConstants.OWNER, getUser());
- q = generator.selectQuery(em);
+ q = generator.selectQuery(em);
+ for (Object o : q.getResultList()) {
+ Project project = (Project) o;
+ ProjectResource projectResource = (ProjectResource) Utils.getResource(ResourceType.PROJECT, project);
+ result.add(projectResource);
+ }
+ break;
+ case USER_WORKFLOW:
+ generator = new QueryGenerator(USER_WORKFLOW);
+ generator.setParameter(UserWorkflowConstants.OWNER, getUser());
+ q = generator.selectQuery(em);
// q.setParameter("usr_name", getUser());
- for (Object o : q.getResultList()) {
- User_Workflow userWorkflow = (User_Workflow) o;
- UserWorkflowResource userWorkflowResource = (UserWorkflowResource)Utils.getResource(ResourceType.USER_WORKFLOW, userWorkflow);
- result.add(userWorkflowResource);
- }
- break;
- case EXPERIMENT:
- generator = new QueryGenerator(EXPERIMENT);
- generator.setParameter(ExperimentConstants.EXECUTION_USER, getUser());
- q = generator.selectQuery(em);
- for (Object o : q.getResultList()) {
- Experiment experiment = (Experiment) o;
- ExperimentResource experimentResource = (ExperimentResource)Utils.getResource(ResourceType.EXPERIMENT, experiment);
- result.add(experimentResource);
- }
- break;
- default:
- logger.error("Unsupported resource type for worker resource.", new IllegalArgumentException());
- break;
- }
- em.getTransaction().commit();
- em.close();
- return result;
- }
+ for (Object o : q.getResultList()) {
+ User_Workflow userWorkflow = (User_Workflow) o;
+ UserWorkflowResource userWorkflowResource = (UserWorkflowResource) Utils.getResource(ResourceType.USER_WORKFLOW, userWorkflow);
+ result.add(userWorkflowResource);
+ }
+ break;
+ case EXPERIMENT:
+ generator = new QueryGenerator(EXPERIMENT);
+ generator.setParameter(ExperimentConstants.EXECUTION_USER, getUser());
+ q = generator.selectQuery(em);
+ for (Object o : q.getResultList()) {
+ Experiment experiment = (Experiment) o;
+ ExperimentResource experimentResource = (ExperimentResource) Utils.getResource(ResourceType.EXPERIMENT, experiment);
+ result.add(experimentResource);
+ }
+ break;
+ default:
+ logger.error("Unsupported resource type for worker resource.", new IllegalArgumentException());
+ break;
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
+ }
+ return result;
+ }
/**
* save gateway worker to database
*/
- public void save() {
- EntityManager em = ResourceUtils.getEntityManager();
- Gateway_Worker existingWorker = em.find(Gateway_Worker.class, new Gateway_Worker_PK(gateway.getGatewayName(), user));
- em.close();
-
- em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- Gateway_Worker gatewayWorker = new Gateway_Worker();
- Users users = new Users();
- users.setUser_name(user);
- gatewayWorker.setUser(users);
- Gateway gatewaymodel = new Gateway();
- gatewaymodel.setGateway_name(gateway.getGatewayName());
- gatewaymodel.setOwner(gateway.getOwner());
- gatewayWorker.setGateway(gatewaymodel);
- if(existingWorker != null){
- gatewayWorker = em.merge(existingWorker);
- }else {
- em.merge(gatewayWorker);
+ public void save() throws RegistryException{
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ Gateway_Worker existingWorker = em.find(Gateway_Worker.class, new Gateway_Worker_PK(gateway.getGatewayName(), user));
+ em.close();
+
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ Gateway_Worker gatewayWorker = new Gateway_Worker();
+ Users users = new Users();
+ users.setUser_name(user);
+ gatewayWorker.setUser(users);
+ Gateway gatewaymodel = new Gateway();
+ gatewaymodel.setGateway_name(gateway.getGatewayName());
+ gatewaymodel.setOwner(gateway.getOwner());
+ gatewayWorker.setGateway(gatewaymodel);
+ if (existingWorker != null) {
+ gatewayWorker = em.merge(existingWorker);
+ } else {
+ em.merge(gatewayWorker);
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
}
- em.getTransaction().commit();
- em.close();
- }
+ }
/**
*
@@ -338,7 +370,7 @@ public class WorkerResource extends AbstractResource {
* @param id project id
* @return whether the project is available under the user
*/
- public boolean isProjectExists(String id){
+ public boolean isProjectExists(String id) throws RegistryException{
return isExists(ResourceType.PROJECT, id);
}
@@ -347,7 +379,7 @@ public class WorkerResource extends AbstractResource {
* @param projectId project id
* @return project resource for the user
*/
- public ProjectResource createProject(String projectId){
+ public ProjectResource createProject(String projectId) throws RegistryException{
ProjectResource project=(ProjectResource)create(ResourceType.PROJECT);
project.setId(projectId);
return project;
@@ -363,7 +395,7 @@ public class WorkerResource extends AbstractResource {
* @param id project id
* @return project resource
*/
- public ProjectResource getProject(String id){
+ public ProjectResource getProject(String id) throws RegistryException{
return (ProjectResource)get(ResourceType.PROJECT, id);
}
@@ -371,7 +403,7 @@ public class WorkerResource extends AbstractResource {
*
* @param id project id
*/
- public void removeProject(String id){
+ public void removeProject(String id) throws RegistryException{
remove(ResourceType.PROJECT, id);
}
@@ -379,7 +411,7 @@ public class WorkerResource extends AbstractResource {
*
* @return list of projects for the user
*/
- public List<ProjectResource> getProjects(){
+ public List<ProjectResource> getProjects() throws RegistryException{
List<ProjectResource> result=new ArrayList<ProjectResource>();
List<Resource> list = get(ResourceType.PROJECT);
for (Resource resource : list) {
@@ -393,7 +425,7 @@ public class WorkerResource extends AbstractResource {
* @param templateName user workflow template
* @return whether the workflow is already exists under the given user
*/
- public boolean isWorkflowTemplateExists(String templateName){
+ public boolean isWorkflowTemplateExists(String templateName) throws RegistryException{
return isExists(ResourceType.USER_WORKFLOW, templateName);
}
@@ -402,7 +434,7 @@ public class WorkerResource extends AbstractResource {
* @param templateName user workflow template
* @return user workflow resource
*/
- public UserWorkflowResource createWorkflowTemplate(String templateName){
+ public UserWorkflowResource createWorkflowTemplate(String templateName) throws RegistryException{
UserWorkflowResource workflow=(UserWorkflowResource)create(ResourceType.USER_WORKFLOW);
workflow.setName(templateName);
return workflow;
@@ -413,7 +445,7 @@ public class WorkerResource extends AbstractResource {
* @param templateName user workflow template
* @return user workflow resource
*/
- public UserWorkflowResource getWorkflowTemplate(String templateName){
+ public UserWorkflowResource getWorkflowTemplate(String templateName) throws RegistryException{
return (UserWorkflowResource)get(ResourceType.USER_WORKFLOW, templateName);
}
@@ -421,7 +453,7 @@ public class WorkerResource extends AbstractResource {
*
* @param templateName user workflow template
*/
- public void removeWorkflowTemplate(String templateName){
+ public void removeWorkflowTemplate(String templateName) throws RegistryException{
remove(ResourceType.USER_WORKFLOW, templateName);
}
@@ -429,7 +461,7 @@ public class WorkerResource extends AbstractResource {
*
* @return list of user workflows for the given user
*/
- public List<UserWorkflowResource> getWorkflowTemplates(){
+ public List<UserWorkflowResource> getWorkflowTemplates() throws RegistryException{
List<UserWorkflowResource> result=new ArrayList<UserWorkflowResource>();
List<Resource> list = get(ResourceType.USER_WORKFLOW);
for (Resource resource : list) {
@@ -443,7 +475,7 @@ public class WorkerResource extends AbstractResource {
* @param name experiment name
* @return whether experiment is already exist for the given user
*/
- public boolean isExperimentExists(String name){
+ public boolean isExperimentExists(String name) throws RegistryException{
return isExists(ResourceType.EXPERIMENT, name);
}
@@ -453,7 +485,7 @@ public class WorkerResource extends AbstractResource {
* @param name experiment name
* @return experiment resource
*/
- public ExperimentResource getExperiment(String name){
+ public ExperimentResource getExperiment(String name) throws RegistryException{
return (ExperimentResource)get(ResourceType.EXPERIMENT, name);
}
//
@@ -465,7 +497,7 @@ public class WorkerResource extends AbstractResource {
*
* @return list of experiments for the user
*/
- public List<ExperimentResource> getExperiments(){
+ public List<ExperimentResource> getExperiments() throws RegistryException{
List<ExperimentResource> result=new ArrayList<ExperimentResource>();
List<Resource> list = get(ResourceType.EXPERIMENT);
for (Resource resource : list) {
@@ -478,57 +510,75 @@ public class WorkerResource extends AbstractResource {
*
* @param experimentId experiment name
*/
- public void removeExperiment(String experimentId){
+ public void removeExperiment(String experimentId) throws RegistryException{
remove(ResourceType.EXPERIMENT, experimentId);
}
- public List<ProjectResource> searchProjects (Map<String, String> filters){
+ public List<ProjectResource> searchProjects (Map<String, String> filters) throws RegistryException{
List<ProjectResource> result = new ArrayList<ProjectResource>();
- String query = "SELECT p from Project p WHERE ";
- if (filters != null && filters.size() != 0) {
- for (String field : filters.keySet()){
- query += "p." + field + " LIKE '" + filters.get(field) + "%' AND " ;
- }
- }
- query = query.substring(0, query.length() - 5);
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- Query q = em.createQuery(query);
- List resultList = q.getResultList();
- for (Object o : resultList){
- Project project = (Project) o;
- ProjectResource projectResource = (ProjectResource)Utils.getResource(ResourceType.PROJECT, project);
- result.add(projectResource);
+ EntityManager em = null;
+ try {
+ String query = "SELECT p from Project p WHERE ";
+ if (filters != null && filters.size() != 0) {
+ for (String field : filters.keySet()) {
+ query += "p." + field + " LIKE '" + filters.get(field) + "%' AND ";
+ }
+ }
+ query = query.substring(0, query.length() - 5);
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ Query q = em.createQuery(query);
+ List resultList = q.getResultList();
+ for (Object o : resultList) {
+ Project project = (Project) o;
+ ProjectResource projectResource = (ProjectResource) Utils.getResource(ResourceType.PROJECT, project);
+ result.add(projectResource);
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
}
- em.getTransaction().commit();
- em.close();
return result;
}
- public List<ExperimentResource> searchExperiments (Map<String, String> filters){
+ public List<ExperimentResource> searchExperiments (Map<String, String> filters) throws RegistryException{
List<ExperimentResource> result = new ArrayList<ExperimentResource>();
- String query = "SELECT e from Experiment e WHERE ";
- if (filters != null && filters.size() != 0) {
- for (String field : filters.keySet()){
- if (field.equals(ExperimentConstants.EXECUTION_USER)){
- query += "e." + field + "= '" + filters.get(field) + "' AND " ;
- }else {
- query += "e." + field + " LIKE '%" + filters.get(field) + "%' AND " ;
+ EntityManager em = null;
+ try {
+ String query = "SELECT e from Experiment e WHERE ";
+ if (filters != null && filters.size() != 0) {
+ for (String field : filters.keySet()) {
+ if (field.equals(ExperimentConstants.EXECUTION_USER)) {
+ query += "e." + field + "= '" + filters.get(field) + "' AND ";
+ } else {
+ query += "e." + field + " LIKE '%" + filters.get(field) + "%' AND ";
+ }
}
}
+ query = query.substring(0, query.length() - 5);
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ Query q = em.createQuery(query);
+ List resultList = q.getResultList();
+ for (Object o : resultList) {
+ Experiment experiment = (Experiment) o;
+ ExperimentResource experimentResource = (ExperimentResource) Utils.getResource(ResourceType.EXPERIMENT, experiment);
+ result.add(experimentResource);
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
}
- query = query.substring(0, query.length() - 5);
- EntityManager em = ResourceUtils.getEntityManager();
- em.getTransaction().begin();
- Query q = em.createQuery(query);
- List resultList = q.getResultList();
- for (Object o : resultList){
- Experiment experiment = (Experiment) o;
- ExperimentResource experimentResource = (ExperimentResource)Utils.getResource(ResourceType.EXPERIMENT, experiment);
- result.add(experimentResource);
- }
- em.getTransaction().commit();
- em.close();
return result;
}
@@ -536,23 +586,32 @@ public class WorkerResource extends AbstractResource {
*
* @return list of experiments for the user
*/
- public List<ExperimentResource> getExperimentsByCaching(String user){
- List<ExperimentResource> result=new ArrayList<ExperimentResource>();
- String query = "SELECT e from Experiment e WHERE e.executionUser = '" + user + "'";
- EntityManager em = ResourceUtils.getEntityManager();
+ public List<ExperimentResource> getExperimentsByCaching(String user) throws RegistryException{
+ List<ExperimentResource> result = new ArrayList<ExperimentResource>();
+ EntityManager em = null;
+ try {
+ String query = "SELECT e from Experiment e WHERE e.executionUser = '" + user + "'";
+ em = ResourceUtils.getEntityManager();
// OpenJPAEntityManagerFactory oemf = OpenJPAPersistence.cast(em.getEntityManagerFactory());
// QueryResultCache qcache = oemf.getQueryResultCache();
- // qcache.evictAll(Experiment.class);
- em.getTransaction().begin();
- Query q = em.createQuery(query);
- List resultList = q.getResultList();
- for (Object o : resultList){
- Experiment experiment = (Experiment) o;
- ExperimentResource experimentResource = (ExperimentResource)Utils.getResource(ResourceType.EXPERIMENT, experiment);
- result.add(experimentResource);
+ // qcache.evictAll(Experiment.class);
+ em.getTransaction().begin();
+ Query q = em.createQuery(query);
+ List resultList = q.getResultList();
+ for (Object o : resultList) {
+ Experiment experiment = (Experiment) o;
+ ExperimentResource experimentResource = (ExperimentResource) Utils.getResource(ResourceType.EXPERIMENT, experiment);
+ result.add(experimentResource);
+ }
+ em.getTransaction().commit();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ em.close();
+ }
}
- em.getTransaction().commit();
- em.close();
return result;
}
}