Repository: airavata
Updated Branches:
  refs/heads/master 3224e72a1 -> 2c6620f03


http://git-wip-us.apache.org/repos/asf/airavata/blob/2c6620f0/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java
index 80bfe8e..c7dfd49 100644
--- 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java
@@ -49,7 +49,7 @@ import java.util.UUID;
 public class WorkerResource extends AbstractExpCatResource {
     private final static Logger logger = 
LoggerFactory.getLogger(WorkerResource.class);
     private String user;
-       private String gatewayId;
+    private String gatewayId;
 
     public WorkerResource() {
     }
@@ -69,38 +69,38 @@ public class WorkerResource extends AbstractExpCatResource {
 
     /**
      * Gateway worker can create child data structures such as projects and 
user workflows
+     *
      * @param type child resource type
-     * @return  child resource
+     * @return child resource
      */
-       public ExperimentCatResource create(ResourceType type) throws 
RegistryException{
-               ExperimentCatResource result = null;
-               switch (type) {
-                       case PROJECT:
-                               ProjectResource projectResource = new 
ProjectResource();
-                               projectResource.setWorker(this);
-                               projectResource.setGatewayId(gatewayId);
-                               result=projectResource;
-                               break;
+    public ExperimentCatResource create(ResourceType type) throws 
RegistryException {
+        ExperimentCatResource result = null;
+        switch (type) {
+            case PROJECT:
+                ProjectResource projectResource = new ProjectResource();
+                projectResource.setWorker(this);
+                projectResource.setGatewayId(gatewayId);
+                result = projectResource;
+                break;
             case EXPERIMENT:
                 ExperimentResource experimentResource = new 
ExperimentResource();
                 experimentResource.setExecutionUser(user);
                 experimentResource.setGatewayId(gatewayId);
                 result = experimentResource;
                 break;
-                       default:
+            default:
                 logger.error("Unsupported resource type for worker resource.", 
new IllegalArgumentException());
                 throw new IllegalArgumentException("Unsupported resource type 
for worker resource.");
 
-               }
-               return result;
-       }
+        }
+        return result;
+    }
 
     /**
-     *
      * @param type child resource type
      * @param name child resource name
      */
-       public void remove(ResourceType type, Object name) throws 
RegistryException{
+    public void remove(ResourceType type, Object name) throws 
RegistryException {
         EntityManager em = null;
         try {
             em = ExpCatResourceUtils.getEntityManager();
@@ -131,7 +131,7 @@ public class WorkerResource extends AbstractExpCatResource {
             throw new RegistryException(e.getMessage());
         } finally {
             if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
+                if (em.getTransaction().isActive()) {
                     em.getTransaction().rollback();
                 }
                 em.close();
@@ -140,12 +140,11 @@ public class WorkerResource extends 
AbstractExpCatResource {
     }
 
     /**
-     *
      * @param type child resource type
      * @param name child resource name
      * @return child resource
      */
-       public ExperimentCatResource get(ResourceType type, Object name) throws 
RegistryException{
+    public ExperimentCatResource get(ResourceType type, Object name) throws 
RegistryException {
         ExperimentCatResource result = null;
         EntityManager em = null;
         try {
@@ -178,7 +177,7 @@ public class WorkerResource extends AbstractExpCatResource {
             throw new RegistryException(e);
         } finally {
             if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
+                if (em.getTransaction().isActive()) {
                     em.getTransaction().rollback();
                 }
                 em.close();
@@ -231,14 +230,14 @@ public class WorkerResource extends 
AbstractExpCatResource {
      * @param type child resource type
      * @return list of child resources
      */
-    public List<ExperimentCatResource> get(ResourceType type) throws 
RegistryException{
+    public List<ExperimentCatResource> get(ResourceType type) throws 
RegistryException {
         return get(type, -1, -1, null, null);
     }
 
     /**
      * Method get all results of the given child resource type with 
paginaltion and ordering
      *
-     * @param type child resource type
+     * @param type              child resource type
      * @param limit
      * @param offset
      * @param orderByIdentifier
@@ -247,7 +246,7 @@ public class WorkerResource extends AbstractExpCatResource {
      * @throws RegistryException
      */
     public List<ExperimentCatResource> get(ResourceType type, int limit, int 
offset, Object orderByIdentifier,
-                              ResultOrderType resultOrderType) throws 
RegistryException{
+                                           ResultOrderType resultOrderType) 
throws RegistryException {
         List<ExperimentCatResource> result = new 
ArrayList<ExperimentCatResource>();
         EntityManager em = null;
         try {
@@ -261,20 +260,20 @@ public class WorkerResource extends 
AbstractExpCatResource {
                     Users users = em.find(Users.class, getUser());
                     Gateway gatewayModel = em.find(Gateway.class, gatewayId);
                     generator.setParameter("users", users);
-                    if (gatewayModel != null){
+                    if (gatewayModel != null) {
                         generator.setParameter("gateway", gatewayModel);
                     }
 
                     //ordering - only supported only by CREATION_TIME
-                    if(orderByIdentifier != null && resultOrderType != null
+                    if (orderByIdentifier != null && resultOrderType != null
                             && 
orderByIdentifier.equals(Constants.FieldConstants.ProjectConstants.CREATION_TIME))
 {
                         q = generator.selectQuery(em, 
ProjectConstants.CREATION_TIME, resultOrderType);
-                    }else{
+                    } else {
                         q = generator.selectQuery(em);
                     }
 
                     //pagination
-                    if(limit>0 && offset>=0){
+                    if (limit > 0 && offset >= 0) {
                         q.setFirstResult(offset);
                         q.setMaxResults(limit);
                     }
@@ -290,15 +289,15 @@ public class WorkerResource extends 
AbstractExpCatResource {
                     generator.setParameter(ExperimentConstants.EXECUTION_USER, 
getUser());
 
                     //ordering - only supported only by CREATION_TIME
-                    if(orderByIdentifier != null && resultOrderType != null
+                    if (orderByIdentifier != null && resultOrderType != null
                             && 
orderByIdentifier.equals(Constants.FieldConstants.ProjectConstants.CREATION_TIME))
 {
                         q = generator.selectQuery(em, 
ExperimentConstants.CREATION_TIME, resultOrderType);
-                    }else{
+                    } else {
                         q = generator.selectQuery(em);
                     }
 
                     //pagination
-                    if(limit>0 && offset>=0){
+                    if (limit > 0 && offset >= 0) {
                         q.setFirstResult(offset);
                         q.setMaxResults(limit);
                     }
@@ -320,7 +319,7 @@ public class WorkerResource extends AbstractExpCatResource {
             throw new RegistryException(e);
         } finally {
             if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
+                if (em.getTransaction().isActive()) {
                     em.getTransaction().rollback();
                 }
                 em.close();
@@ -332,7 +331,7 @@ public class WorkerResource extends AbstractExpCatResource {
     /**
      * save gateway worker to database
      */
-       public void save() throws RegistryException{
+    public void save() throws RegistryException {
         EntityManager em = null;
         try {
             em = ExpCatResourceUtils.getEntityManager();
@@ -361,7 +360,7 @@ public class WorkerResource extends AbstractExpCatResource {
             throw new RegistryException(e);
         } finally {
             if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
+                if (em.getTransaction().isActive()) {
                     em.getTransaction().rollback();
                 }
                 em.close();
@@ -370,40 +369,36 @@ public class WorkerResource extends 
AbstractExpCatResource {
     }
 
     /**
-     *
      * @return user name
      */
-       public String getUser() {
-               return user;
-       }
+    public String getUser() {
+        return user;
+    }
 
     /**
-     *
      * @param user user name
      */
     public void setUser(String user) {
-               this.user = user;
-       }
+        this.user = user;
+    }
 
     /**
-     *
-     * @param id  project id
+     * @param id project id
      * @return whether the project is available under the user
      */
-    public boolean isProjectExists(String id) throws RegistryException{
-               return isExists(ResourceType.PROJECT, id);
-       }
+    public boolean isProjectExists(String id) throws RegistryException {
+        return isExists(ResourceType.PROJECT, id);
+    }
 
     /**
-     *
      * @param projectId project id
      * @return project resource for the user
      */
-       public ProjectResource createProject(String projectId) throws 
RegistryException{
-               ProjectResource 
project=(ProjectResource)create(ResourceType.PROJECT);
+    public ProjectResource createProject(String projectId) throws 
RegistryException {
+        ProjectResource project = (ProjectResource) 
create(ResourceType.PROJECT);
         project.setId(projectId);
-               return project;
-       }
+        return project;
+    }
 
     public String getProjectID(String projectName) {
         String pro = projectName.replaceAll("\\s", "");
@@ -411,39 +406,38 @@ public class WorkerResource extends 
AbstractExpCatResource {
     }
 
     /**
-     *
      * @param id project id
      * @return project resource
      */
-       public ProjectResource getProject(String id) throws RegistryException{
-               return (ProjectResource)get(ResourceType.PROJECT, id);
-       }
+    public ProjectResource getProject(String id) throws RegistryException {
+        return (ProjectResource) get(ResourceType.PROJECT, id);
+    }
 
     /**
-     *
      * @param id project id
      */
-       public void removeProject(String id) throws RegistryException{
-               remove(ResourceType.PROJECT, id);
-       }
+    public void removeProject(String id) throws RegistryException {
+        remove(ResourceType.PROJECT, id);
+    }
 
     /**
      * Get projects list of user
-     * @return  list of projects for the user
+     *
+     * @return list of projects for the user
      */
-    public List<ProjectResource> getProjects() throws RegistryException{
-               return getProjects(-1, -1, null, null);
-       }
+    public List<ProjectResource> getProjects() throws RegistryException {
+        return getProjects(-1, -1, null, null);
+    }
 
 
     /**
      * Get projects list of user with pagination and ordering
      *
-     * @return  list of projects for the user
+     * @return list of projects for the user
      */
     public List<ProjectResource> getProjects(int limit, int offset, Object 
orderByIdentifier,
-                                             ResultOrderType resultOrderType) 
throws RegistryException{
-        List<ProjectResource> result=new ArrayList<ProjectResource>();
+                                             ResultOrderType resultOrderType) 
throws RegistryException {
+        List<ProjectResource> result = new ArrayList<ProjectResource>();
         List<ExperimentCatResource> list = get(ResourceType.PROJECT, limit, 
offset, orderByIdentifier, resultOrderType);
         for (ExperimentCatResource resource : list) {
             result.add((ProjectResource) resource);
@@ -452,23 +446,21 @@ public class WorkerResource extends 
AbstractExpCatResource {
     }
 
     /**
-     *
      * @param name experiment name
      * @return whether experiment is already exist for the given user
      */
-       public boolean isExperimentExists(String name) throws RegistryException{
-               return isExists(ResourceType.EXPERIMENT, name);
-       }
-       
+    public boolean isExperimentExists(String name) throws RegistryException {
+        return isExists(ResourceType.EXPERIMENT, name);
+    }
+
 
     /**
-     *
      * @param name experiment name
      * @return experiment resource
      */
-    public ExperimentResource getExperiment(String name) throws 
RegistryException{
-               return (ExperimentResource)get(ResourceType.EXPERIMENT, name);
-       }
+    public ExperimentResource getExperiment(String name) throws 
RegistryException {
+        return (ExperimentResource) get(ResourceType.EXPERIMENT, name);
+    }
 //
 //    public GFacJobDataResource getGFacJob(String jobId){
 //     return (GFacJobDataResource)get(ResourceType.GFAC_JOB_DATA,jobId);
@@ -476,14 +468,16 @@ public class WorkerResource extends 
AbstractExpCatResource {
 
     /**
      * Method to get list of expeirments of user
+     *
      * @return list of experiments for the user
      */
-       public List<ExperimentResource> getExperiments() throws 
RegistryException{
-               return getExperiments(-1, -1, null, null);
-       }
+    public List<ExperimentResource> getExperiments() throws RegistryException {
+        return getExperiments(-1, -1, null, null);
+    }
 
     /**
      * Method to get list of experiments of user with pagination and ordering
+     *
      * @param limit
      * @param offset
      * @param orderByIdentifier
@@ -492,8 +486,8 @@ public class WorkerResource extends AbstractExpCatResource {
      * @throws RegistryException
      */
     public List<ExperimentResource> getExperiments(int limit, int offset, 
Object orderByIdentifier,
-                                                   ResultOrderType 
resultOrderType) throws RegistryException{
-        List<ExperimentResource> result=new ArrayList<ExperimentResource>();
+                                                   ResultOrderType 
resultOrderType) throws RegistryException {
+        List<ExperimentResource> result = new ArrayList<ExperimentResource>();
         List<ExperimentCatResource> list = get(ResourceType.EXPERIMENT, limit, 
offset, orderByIdentifier, resultOrderType);
         for (ExperimentCatResource resource : list) {
             result.add((ExperimentResource) resource);
@@ -502,12 +496,11 @@ public class WorkerResource extends 
AbstractExpCatResource {
     }
 
     /**
-     *
-     * @param experimentId  experiment name
+     * @param experimentId experiment name
      */
-       public void removeExperiment(String experimentId) throws 
RegistryException{
-               remove(ResourceType.EXPERIMENT, experimentId);
-       }
+    public void removeExperiment(String experimentId) throws RegistryException 
{
+        remove(ResourceType.EXPERIMENT, experimentId);
+    }
 
     /**
      * To search the projects of user with the given filter criteria and 
retrieve the results with
@@ -524,7 +517,7 @@ public class WorkerResource extends AbstractExpCatResource {
      * @throws RegistryException
      */
     public List<ProjectResource> searchProjects(Map<String, String> filters, 
int limit,
-             int offset, Object orderByIdentifier, ResultOrderType 
resultOrderType) throws RegistryException {
+                                                int offset, Object 
orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
         List<ProjectResource> result = new ArrayList<ProjectResource>();
         EntityManager em = null;
         try {
@@ -534,10 +527,10 @@ public class WorkerResource extends 
AbstractExpCatResource {
                     String filterVal = filters.get(field);
                     if (field.equals(ProjectConstants.USERNAME)) {
                         query += "p." + field + "= '" + filterVal + "' AND ";
-                    }else if (field.equals(ProjectConstants.GATEWAY_ID)) {
+                    } else if (field.equals(ProjectConstants.GATEWAY_ID)) {
                         query += "p." + field + "= '" + filterVal + "' AND ";
-                    }else {
-                        if (filterVal.contains("*")){
+                    } else {
+                        if (filterVal.contains("*")) {
                             filterVal = filterVal.replaceAll("\\*", "");
                         }
                         query += "p." + field + " LIKE '%" + filterVal + "%' 
AND ";
@@ -547,8 +540,8 @@ public class WorkerResource extends AbstractExpCatResource {
             query = query.substring(0, query.length() - 5);
 
             //ordering
-            if( orderByIdentifier != null && resultOrderType != null
-                    && 
orderByIdentifier.equals(Constants.FieldConstants.ProjectConstants.CREATION_TIME)){
+            if (orderByIdentifier != null && resultOrderType != null
+                    && 
orderByIdentifier.equals(Constants.FieldConstants.ProjectConstants.CREATION_TIME))
 {
                 String order = (resultOrderType == ResultOrderType.ASC) ? 
"ASC" : "DESC";
                 query += " ORDER BY p." + ProjectConstants.CREATION_TIME + " " 
+ order;
             }
@@ -558,9 +551,9 @@ public class WorkerResource extends AbstractExpCatResource {
             Query q;
 
             //pagination
-            if(offset>=0 && limit >=0){
+            if (offset >= 0 && limit >= 0) {
                 q = 
em.createQuery(query).setFirstResult(offset).setMaxResults(limit);
-            }else{
+            } else {
                 q = em.createQuery(query);
             }
 
@@ -578,7 +571,7 @@ public class WorkerResource extends AbstractExpCatResource {
             throw new RegistryException(e);
         } finally {
             if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
+                if (em.getTransaction().isActive()) {
                     em.getTransaction().rollback();
                 }
                 em.close();
@@ -604,20 +597,20 @@ public class WorkerResource extends 
AbstractExpCatResource {
      * @throws RegistryException
      */
     public List<ExperimentSummaryResource> searchExperiments(Timestamp 
fromTime, Timestamp toTime, Map<String, String> filters, int limit,
-                                                      int offset, Object 
orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+                                                             int offset, 
Object orderByIdentifier, ResultOrderType resultOrderType) throws 
RegistryException {
         List<ExperimentSummaryResource> result = new ArrayList();
         EntityManager em = null;
         try {
             String query = "SELECT e, s FROM Experiment e " +
                     ",Status s WHERE e.expId=s.expId AND " +
                     "s.statusType='" + StatusType.EXPERIMENT + "' AND ";
-            if(filters.get(StatusConstants.STATE) != null) {
+            if (filters.get(StatusConstants.STATE) != null) {
                 String experimentState = 
ExperimentState.valueOf(filters.get(StatusConstants.STATE)).toString();
                 query += "s.state='" + experimentState + "' AND ";
             }
 
-            if(toTime != null && fromTime != null && toTime.after(fromTime)){
-                query += "e.creationTime > '" + fromTime +  "' " + "AND 
e.creationTime <'" + toTime + "' AND ";
+            if (toTime != null && fromTime != null && toTime.after(fromTime)) {
+                query += "e.creationTime > '" + fromTime + "' " + "AND 
e.creationTime <'" + toTime + "' AND ";
             }
 
             filters.remove(StatusConstants.STATE);
@@ -626,12 +619,12 @@ public class WorkerResource extends 
AbstractExpCatResource {
                     String filterVal = filters.get(field);
                     if (field.equals(ExperimentConstants.EXECUTION_USER)) {
                         query += "e." + field + "= '" + filterVal + "' AND ";
-                    }else if (field.equals(ExperimentConstants.GATEWAY_ID)) {
+                    } else if (field.equals(ExperimentConstants.GATEWAY_ID)) {
                         query += "e." + field + "= '" + filterVal + "' AND ";
                     } else if (field.equals(ExperimentConstants.PROJECT_ID)) {
                         query += "e." + field + "= '" + filterVal + "' AND ";
                     } else {
-                        if (filterVal.contains("*")){
+                        if (filterVal.contains("*")) {
                             filterVal = filterVal.replaceAll("\\*", "");
                         }
                         query += "e." + field + " LIKE '%" + filterVal + "%' 
AND ";
@@ -641,8 +634,8 @@ public class WorkerResource extends AbstractExpCatResource {
             query = query.substring(0, query.length() - 5);
 
             //ordering
-            if( orderByIdentifier != null && resultOrderType != null
-                    && 
orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME)){
+            if (orderByIdentifier != null && resultOrderType != null
+                    && 
orderByIdentifier.equals(Constants.FieldConstants.ExperimentConstants.CREATION_TIME))
 {
                 String order = (resultOrderType == ResultOrderType.ASC) ? 
"ASC" : "DESC";
                 query += " ORDER BY e." + ExperimentConstants.CREATION_TIME + 
" " + order;
             }
@@ -652,9 +645,9 @@ public class WorkerResource extends AbstractExpCatResource {
             Query q;
 
             //pagination
-            if(offset>=0 && limit >=0){
+            if (offset >= 0 && limit >= 0) {
                 q = 
em.createQuery(query).setFirstResult(offset).setMaxResults(limit);
-            }else{
+            } else {
                 q = em.createQuery(query);
             }
             OpenJPAQuery kq = OpenJPAPersistence.cast(q);
@@ -663,8 +656,8 @@ public class WorkerResource extends AbstractExpCatResource {
 
             List resultList = q.getResultList();
             for (Object o : resultList) {
-                Experiment experiment = (Experiment) ((Object[])o)[0];
-                Status experimentStatus = (Status) ((Object[])o)[1];
+                Experiment experiment = (Experiment) ((Object[]) o)[0];
+                Status experimentStatus = (Status) ((Object[]) o)[1];
                 experiment.setExperimentStatus(experimentStatus);
                 ExperimentSummaryResource experimentSummaryResource =
                         (ExperimentSummaryResource) 
Utils.getResource(ResourceType.EXPERIMENT_SUMMARY, experiment);
@@ -677,7 +670,7 @@ public class WorkerResource extends AbstractExpCatResource {
             throw new RegistryException(e);
         } finally {
             if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
+                if (em.getTransaction().isActive()) {
                     em.getTransaction().rollback();
                 }
                 em.close();
@@ -686,11 +679,87 @@ public class WorkerResource extends 
AbstractExpCatResource {
         return result;
     }
 
+
     /**
+     * Method to get experiment statistics for a gateway
      *
+     * @param gatewayId
+     * @param fromTime
+     * @param toTime
+     * @return
+     * @throws RegistryException
+     */
+    public ExperimentStatisticsResource getExperimentStatistics(String 
gatewayId, Timestamp fromTime, Timestamp toTime) throws RegistryException {
+        ExperimentStatisticsResource experimentStatisticsResource = new 
ExperimentStatisticsResource();
+        List<ExperimentSummaryResource> allExperiments = 
getExperimentStatisticsForState(null, gatewayId, fromTime, toTime);
+        
experimentStatisticsResource.setAllExperimentCount(allExperiments.size());
+        experimentStatisticsResource.setAllExperiments(allExperiments);
+
+        List<ExperimentSummaryResource> completedExperiments = 
getExperimentStatisticsForState(ExperimentState.COMPLETED, gatewayId, fromTime, 
toTime);
+        
experimentStatisticsResource.setCompletedExperimentCount(completedExperiments.size());
+        
experimentStatisticsResource.setCompletedExperiments(completedExperiments);
+
+        List<ExperimentSummaryResource> failedExperiments = 
getExperimentStatisticsForState(ExperimentState.FAILED, gatewayId, fromTime, 
toTime);
+        
experimentStatisticsResource.setFailedExperimentCount(failedExperiments.size());
+        experimentStatisticsResource.setFailedExperiments(failedExperiments);
+
+        List<ExperimentSummaryResource> cancelledExperiments = 
getExperimentStatisticsForState(ExperimentState.CANCELED, gatewayId, fromTime, 
toTime);
+        
experimentStatisticsResource.setCancelledExperimentCount(cancelledExperiments.size());
+        
experimentStatisticsResource.setCancelledExperiments(cancelledExperiments);
+
+        return experimentStatisticsResource;
+    }
+
+    private List<ExperimentSummaryResource> getExperimentStatisticsForState(
+            ExperimentState expState, String gatewayId, Timestamp fromTime, 
Timestamp toTime) throws RegistryException {
+        EntityManager em = null;
+        List<ExperimentSummaryResource> result = new ArrayList();
+        try {
+            String query = "SELECT e, s FROM Experiment e " +
+                    ",Status s WHERE e.expId=s.expId AND " +
+                    "s.statusType='" + StatusType.EXPERIMENT + "' AND ";
+            if (expState != null) {
+                query += "s.state='" + expState.toString() + "' AND ";
+            }
+            query += "e.creationTime > '" + fromTime + "' " + "AND 
e.creationTime <'" + toTime + "' AND ";
+            query += "e." + ExperimentConstants.GATEWAY_ID + "= '" + gatewayId 
+ "'";
+
+            em = ExpCatResourceUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q = em.createQuery(query);
+            OpenJPAQuery kq = OpenJPAPersistence.cast(q);
+            JDBCFetchPlan fetch = (JDBCFetchPlan) kq.getFetchPlan();
+            fetch.setEagerFetchMode(FetchMode.JOIN);
+
+            List resultList = q.getResultList();
+            for (Object o : resultList) {
+                Experiment experiment = (Experiment) ((Object[]) o)[0];
+                Status experimentStatus = (Status) ((Object[]) o)[1];
+                experiment.setExperimentStatus(experimentStatus);
+                ExperimentSummaryResource experimentSummaryResource =
+                        (ExperimentSummaryResource) 
Utils.getResource(ResourceType.EXPERIMENT_SUMMARY, experiment);
+                result.add(experimentSummaryResource);
+            }
+            em.getTransaction().commit();
+            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 result;
+    }
+
+    /**
      * @return list of experiments for the user
      */
-    public List<ExperimentResource> getExperimentsByCaching(String user) 
throws RegistryException{
+    public List<ExperimentResource> getExperimentsByCaching(String user) 
throws RegistryException {
         List<ExperimentResource> result = new ArrayList<ExperimentResource>();
         EntityManager em = null;
         try {
@@ -714,7 +783,7 @@ public class WorkerResource extends AbstractExpCatResource {
             throw new RegistryException(e);
         } finally {
             if (em != null && em.isOpen()) {
-                if (em.getTransaction().isActive()){
+                if (em.getTransaction().isActive()) {
                     em.getTransaction().rollback();
                 }
                 em.close();

http://git-wip-us.apache.org/repos/asf/airavata/blob/2c6620f0/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalogModelType.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalogModelType.java
 
b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalogModelType.java
index 74b1e69..22d755f 100644
--- 
a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalogModelType.java
+++ 
b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalogModelType.java
@@ -26,6 +26,7 @@ public enum ExperimentCatalogModelType {
     PROJECT,
     GATEWAY,
     EXPERIMENT,
+    EXPERIMENT_STATISTICS,
     EXPERIMENT_INPUT,
     EXPERIMENT_OUTPUT,
     EXPERIMENT_STATUS,

Reply via email to