use of org.apache.airavata.registry.core.experiment.catalog.utils.QueryGenerator in project airavata by apache.
the class ExperimentResource method get.
public List<ExperimentCatResource> get(ResourceType type) throws RegistryException {
List<ExperimentCatResource> resourceList = new ArrayList<ExperimentCatResource>();
EntityManager em = null;
try {
em = ExpCatResourceUtils.getEntityManager();
em.getTransaction().begin();
Query q;
QueryGenerator generator;
List results;
switch(type) {
case EXPERIMENT_INPUT:
generator = new QueryGenerator(EXPERIMENT_INPUT);
generator.setParameter(ExperimentInputConstants.EXPERIMENT_ID, experimentId);
q = generator.selectQuery(em);
results = q.getResultList();
if (results.size() != 0) {
for (Object result : results) {
ExperimentInput experimentInput = (ExperimentInput) result;
ExperimentInputResource experimentInputResource = (ExperimentInputResource) Utils.getResource(ResourceType.EXPERIMENT_INPUT, experimentInput);
resourceList.add(experimentInputResource);
}
}
break;
case EXPERIMENT_OUTPUT:
generator = new QueryGenerator(EXPERIMENT_OUTPUT);
generator.setParameter(ExperimentOutputConstants.EXPERIMENT_ID, experimentId);
q = generator.selectQuery(em);
results = q.getResultList();
if (results.size() != 0) {
for (Object result : results) {
ExperimentOutput experimentOutput = (ExperimentOutput) result;
ExperimentOutputResource experimentOutputResource = (ExperimentOutputResource) Utils.getResource(ResourceType.EXPERIMENT_OUTPUT, experimentOutput);
resourceList.add(experimentOutputResource);
}
}
break;
case PROCESS:
generator = new QueryGenerator(PROCESS);
generator.setParameter(ProcessConstants.EXPERIMENT_ID, experimentId);
q = generator.selectQuery(em);
results = q.getResultList();
if (results.size() != 0) {
for (Object result : results) {
Process process = (Process) result;
ProcessResource processResource = (ProcessResource) Utils.getResource(ResourceType.PROCESS, process);
resourceList.add(processResource);
}
}
break;
case EXPERIMENT_ERROR:
generator = new QueryGenerator(EXPERIMENT_ERROR);
generator.setParameter(ExperimentErrorConstants.EXPERIMENT_ID, experimentId);
q = generator.selectQuery(em);
results = q.getResultList();
if (results.size() != 0) {
for (Object result : results) {
ExperimentError experimentError = (ExperimentError) result;
ExperimentErrorResource experimentErrorResource = (ExperimentErrorResource) Utils.getResource(ResourceType.EXPERIMENT_ERROR, experimentError);
resourceList.add(experimentErrorResource);
}
}
break;
case EXPERIMENT_STATUS:
generator = new QueryGenerator(EXPERIMENT_STATUS);
generator.setParameter(ExperimentStatusConstants.EXPERIMENT_ID, experimentId);
q = generator.selectQuery(em);
results = q.getResultList();
if (results.size() != 0) {
for (Object result : results) {
ExperimentStatus experimentStatus = (ExperimentStatus) result;
ExperimentStatusResource experimentStatusResource = (ExperimentStatusResource) Utils.getResource(ResourceType.EXPERIMENT_STATUS, experimentStatus);
resourceList.add(experimentStatusResource);
}
}
break;
default:
logger.error("Unsupported resource type for experiment resource.", new UnsupportedOperationException());
throw new UnsupportedOperationException();
}
em.getTransaction().commit();
if (em.isOpen()) {
if (em.getTransaction().isActive()) {
em.getTransaction().rollback();
}
em.close();
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw new RegistryException(e);
} finally {
if (em != null && em.isOpen()) {
if (em.getTransaction().isActive()) {
em.getTransaction().rollback();
}
em.close();
}
}
return resourceList;
}
Aggregations