You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2012/10/08 23:28:53 UTC

svn commit: r1395785 - in /airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa: impl/AiravataJPARegistry.java resources/ExperimentDataRetriever.java

Author: lahiru
Date: Mon Oct  8 21:28:52 2012
New Revision: 1395785

URL: http://svn.apache.org/viewvc?rev=1395785&view=rev
Log:
refactoring ExperimentDataRetriever

Modified:
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentDataRetriever.java

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java?rev=1395785&r1=1395784&r2=1395785&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java Mon Oct  8 21:28:52 2012
@@ -1150,12 +1150,17 @@ public class AiravataJPARegistry extends
 	@Override
 	public List<ExperimentData> getExperimentByUser(String user)
 			throws RegistryException {
-		List<String> experimentIdByUser = getExperimentIdByUser(user);
-		List<ExperimentData> result=new ArrayList<ExperimentData>();
-		for (String id : experimentIdByUser) {
-			result.add(getExperiment(id));
-		}
-		return result;
+        if(user == null){
+            user = jpa.getWorker().getUser();
+        }
+        ExperimentDataRetriever experimentDataRetriever = new ExperimentDataRetriever();
+        return experimentDataRetriever.getExperiments(user);
+//		List<String> experimentIdByUser = getExperimentIdByUser(user);
+//		List<ExperimentData> result=new ArrayList<ExperimentData>();
+//		for (String id : experimentIdByUser) {
+//			result.add(getExperiment(id));
+//		}
+//		return result;
 	}
 
 

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentDataRetriever.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentDataRetriever.java?rev=1395785&r1=1395784&r2=1395785&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentDataRetriever.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentDataRetriever.java Mon Oct  8 21:28:52 2012
@@ -32,9 +32,8 @@ import java.sql.*;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
+import java.util.*;
 import java.util.Date;
-import java.util.List;
 
 public class ExperimentDataRetriever {
     private static final Logger logger = LoggerFactory.getLogger(ExperimentDataRetriever.class);
@@ -54,7 +53,7 @@ public class ExperimentDataRetriever {
                     "wd.workflow_instanceID, wd.template_name, wd.status, wd.start_time," +
                     "wd.last_update_time, nd.node_id, nd.inputs, nd.outputs, " +
                     "e.project_name, e.submitted_date, nd.node_type, nd.status," +
-                        "nd.start_time, nd.last_update_time " +
+                    "nd.start_time, nd.last_update_time " +
                     "FROM Experiment e " +
                     "LEFT JOIN Experiment_Data ed " +
                     "ON e.experiment_ID = ed.experiment_ID " +
@@ -78,28 +77,7 @@ public class ExperimentDataRetriever {
                         experimentData.setMetadata(rs.getString(4));
                         experimentData.setTopic(rs.getString(1));
                     }
-
-                    WorkflowInstanceData workflowInstanceData = experimentData.getWorkflowInstance(rs.getString(5));
-                    if(workflowInstanceData == null){
-                        WorkflowInstance workflowInstance = new WorkflowInstance(experimentId, rs.getString(5));
-                        workflowInstance.setTemplateName(rs.getString(6));
-                        workflowInstance.setExperimentId(rs.getString(1));
-                        workflowInstance.setWorkflowInstanceId(rs.getString(5));
-                        experimentWorkflowInstances.add(workflowInstance);
-                        Date lastUpdateDate = getTime(rs.getString(9));
-                        String wdStatus = rs.getString(7);
-                        workflowInstanceData = new WorkflowInstanceData(null,
-                                workflowInstance, new WorkflowInstanceStatus(workflowInstance,
-                                createExecutionStatus(wdStatus),lastUpdateDate), null);
-                        workflowInstanceData.setExperimentData(experimentData);
-                        experimentData.getWorkflowInstanceData().add(workflowInstanceData);
-                    }
-                    WorkflowInstanceNode workflowInstanceNode = new WorkflowInstanceNode(workflowInstanceData.getWorkflowInstance(), rs.getString(10));
-                    WorkflowInstanceNodeData workflowInstanceNodeData = new WorkflowInstanceNodeData(workflowInstanceNode);
-                    workflowInstanceNodeData.setInput(rs.getString(11));
-                    workflowInstanceNodeData.setOutput(rs.getString(12));
-                    workflowInstanceNodeData.setStatus(createExecutionStatus(rs.getString(16)),getTime(rs.getString(18)));
-                    workflowInstanceData.getNodeDataList().add(workflowInstanceNodeData);
+                    fillWorkflowInstanceData(experimentData, rs, experimentWorkflowInstances);
                 }
             }
             if(rs != null){
@@ -122,13 +100,43 @@ public class ExperimentDataRetriever {
         return experimentData;
     }
 
+    private void fillWorkflowInstanceData (ExperimentData experimentData,
+                                                           ResultSet rs,
+                                                           List<WorkflowInstance> workflowInstances) throws SQLException, ExperimentLazyLoadedException, ParseException {
+        WorkflowInstanceData workflowInstanceData = experimentData.getWorkflowInstance(rs.getString(5));
+        if (workflowInstanceData == null){
+            WorkflowInstance workflowInstance = new WorkflowInstance(experimentData.getExperimentId(), rs.getString(5));
+            workflowInstance.setTemplateName(rs.getString(6));
+            workflowInstance.setExperimentId(rs.getString(1));
+            workflowInstance.setWorkflowInstanceId(rs.getString(5));
+            workflowInstances.add(workflowInstance);
+            Date lastUpdateDate = getTime(rs.getString(9));
+            String wdStatus = rs.getString(7);
+            workflowInstanceData = new WorkflowInstanceData(null,
+                    workflowInstance, new WorkflowInstanceStatus(workflowInstance,
+                    createExecutionStatus(wdStatus),lastUpdateDate), null);
+            workflowInstanceData.setExperimentData(experimentData);
+            experimentData.getWorkflowInstanceData().add(workflowInstanceData);
+        }
+        WorkflowInstanceNode workflowInstanceNode = new WorkflowInstanceNode(workflowInstanceData.getWorkflowInstance(), rs.getString(10));
+        WorkflowInstanceNodeData workflowInstanceNodeData = new WorkflowInstanceNodeData(workflowInstanceNode);
+        workflowInstanceNodeData.setInput(rs.getString(11));
+        workflowInstanceNodeData.setOutput(rs.getString(12));
+        workflowInstanceNodeData.setStatus(createExecutionStatus(rs.getString(16)), getTime(rs.getString(18)));
+        workflowInstanceData.getNodeDataList().add(workflowInstanceNodeData);
+    }
+
     private ExecutionStatus createExecutionStatus (String status){
        return status == null ? ExecutionStatus.UNKNOWN : ExecutionStatus.valueOf(status);
     }
 
     private Date getTime (String date) throws ParseException {
-        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
-        return dateFormat.parse(date);
+        if (date != null){
+            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            return dateFormat.parse(date);
+        }
+        return null;
+
     }
 
     public List<String> getExperimentIdByUser(String user){
@@ -210,14 +218,15 @@ public class ExperimentDataRetriever {
         return null;
     }
 
-    public List<ExperimentData> getExperiments(){
-        List<ExperimentData> experimentDataList = new ArrayList<ExperimentData>();
-        String connectionURL =  Utils.getJDBCURL();
+    public List<ExperimentData> getExperiments(String user) {
+        String connectionURL = Utils.getJDBCURL();
         Connection connection = null;
         ResultSet rs = null;
         Statement statement;
+        Map<String, ExperimentData> experimentDataMap = new HashMap<String, ExperimentData>();
+        List<ExperimentData> experimentDataList = new ArrayList<ExperimentData>();
         List<WorkflowInstance> experimentWorkflowInstances = new ArrayList<WorkflowInstance>();
-        ExperimentData experimentData;
+
         try {
             Class.forName(Utils.getJDBCDriver()).newInstance();
             connection = DriverManager.getConnection(connectionURL, Utils.getJDBCUser(),
@@ -235,44 +244,31 @@ public class ExperimentDataRetriever {
                     "LEFT JOIN Workflow_Data wd " +
                     "ON e.experiment_ID = wd.experiment_ID " +
                     "LEFT JOIN Node_Data nd " +
-                    "ON wd.workflow_instanceID = nd.workflow_instanceID'";
+                    "ON wd.workflow_instanceID = nd.workflow_instanceID " +
+                    "WHERE ed.username='" + user + "'";
 
             rs = statement.executeQuery(queryString);
-            while (rs.next()) {
-                experimentData = new ExperimentDataImpl();
-                experimentData.setExperimentId(rs.getString(1));
-                experimentData.setExperimentName(rs.getString(2));
-                experimentData.setUser(rs.getString(3));
-                experimentData.setMetadata(rs.getString(4));
-                experimentData.setTopic(rs.getString(1));
-
-                WorkflowInstance workflowInstance = new WorkflowInstance(rs.getString(1), rs.getString(5));
-                workflowInstance.setTemplateName(rs.getString(6));
-                workflowInstance.setExperimentId(rs.getString(1));
-                workflowInstance.setWorkflowInstanceId(rs.getString(5));
-                experimentWorkflowInstances.add(workflowInstance);
-
-                Date lastUpdateDate = new Date(rs.getLong(9));
-                WorkflowInstanceData workflowInstanceData = new WorkflowInstanceData(null,
-                        workflowInstance, new WorkflowInstanceStatus(workflowInstance,
-                        rs.getString(7)==null? null: WorkflowInstanceStatus.ExecutionStatus.valueOf(rs.getString(7)),lastUpdateDate), null);
-                workflowInstanceData.setExperimentData(experimentData);
-
-                WorkflowInstanceNode workflowInstanceNode = new WorkflowInstanceNode(workflowInstance, rs.getString(10));
-
-                WorkflowInstanceNodeData workflowInstanceNodeData = new WorkflowInstanceNodeData(workflowInstanceNode);
-                workflowInstanceNodeData.setInput(rs.getString(11));
-                workflowInstanceNodeData.setOutput(rs.getString(12));
-
-                workflowInstanceData.getNodeDataList().add(workflowInstanceNodeData);
-                try {
-					experimentData.getWorkflowInstanceData().add(workflowInstanceData);
-				} catch (ExperimentLazyLoadedException e) {
-					e.printStackTrace();
-				}
-                experimentDataList.add(experimentData);
+            if (rs != null) {
+                while (rs.next()) {
+                    ExperimentData experimentData = null;
+                    if (experimentDataMap.containsKey(rs.getString(1))) {
+                        experimentData = experimentDataMap.get(rs.getString(1));
+                    }else{
+                        experimentData = new ExperimentDataImpl();
+                        experimentData.setExperimentId(rs.getString(1));
+                        experimentData.setExperimentName(rs.getString(2));
+                        experimentData.setUser(rs.getString(3));
+                        experimentData.setMetadata(rs.getString(4));
+                        experimentData.setTopic(rs.getString(1));
+                        experimentDataMap.put(experimentData.getExperimentId(),experimentData);
+                        experimentDataList.add(experimentData);
+                    }
+                    fillWorkflowInstanceData(experimentData, rs, experimentWorkflowInstances);
+                }
+            }
+            if (rs != null) {
+                rs.close();
             }
-            rs.close();
             statement.close();
             connection.close();
         } catch (InstantiationException e) {
@@ -281,12 +277,18 @@ public class ExperimentDataRetriever {
             logger.error(e.getMessage(), e);
         } catch (ClassNotFoundException e) {
             logger.error(e.getMessage(), e);
-        } catch (SQLException e){
+        } catch (SQLException e) {
+            logger.error(e.getMessage(), e);
+        } catch (ExperimentLazyLoadedException e) {
+            logger.error(e.getMessage(), e);
+        } catch (ParseException e) {
             logger.error(e.getMessage(), e);
         }
-        return experimentDataList;
+       return experimentDataList;
+
     }
 
+
     public ExperimentData getExperimentMetaInformation(String experimentId){
         String connectionURL =  Utils.getJDBCURL();
         Connection connection = null;