You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ra...@apache.org on 2014/01/22 21:28:29 UTC

svn commit: r1560501 - in /airavata/trunk/modules: orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ orchestrator/orchestrator-core/src/main/resources/ orchestrator/orchestrator-core/src/test/java/org/apache/airavata/o...

Author: raminder
Date: Wed Jan 22 20:28:29 2014
New Revision: 1560501

URL: http://svn.apache.org/r1560501
Log:
did refectoring of orchestrator data and executor

Added:
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java
      - copied, changed from r1560407, airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java
Removed:
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java
Modified:
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties
    airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java
    airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java
    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/AbstractResource.java
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql
    airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java
    airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql

Added: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java?rev=1560501&view=auto
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java (added)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java Wed Jan 22 20:28:29 2014
@@ -0,0 +1,173 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.orchestrator.core;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.Executors;
+
+import org.apache.airavata.client.AiravataAPIFactory;
+import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.common.exception.AiravataConfigurationException;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.orchestrator.core.context.OrchestratorContext;
+import org.apache.airavata.orchestrator.core.exception.OrchestratorException;
+import org.apache.airavata.orchestrator.core.gfac.GFACInstance;
+import org.apache.airavata.orchestrator.core.job.JobSubmitter;
+import org.apache.airavata.orchestrator.core.utils.OrchestratorUtils;
+import org.apache.airavata.registry.api.AiravataRegistry2;
+import org.apache.airavata.registry.api.AiravataRegistryFactory;
+import org.apache.airavata.registry.api.AiravataUser;
+import org.apache.airavata.registry.api.Gateway;
+import org.apache.airavata.registry.api.exception.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class AbstractOrchestrator implements Orchestrator{
+	private final static Logger logger = LoggerFactory.getLogger(AbstractOrchestrator.class);
+	protected AiravataRegistry2 airavataRegistry;
+	protected AiravataAPI airavataAPI;
+	protected OrchestratorContext orchestratorContext;
+	protected OrchestratorConfiguration orchestratorConfiguration;
+
+    private String registryURL;
+    private String gatewayName;
+    private String airavataUserName;
+   
+    public String getRegistryURL() {
+		return registryURL;
+	}
+
+	public void setRegistryURL(String registryURL) {
+		this.registryURL = registryURL;
+	}
+
+	public String getGatewayName() {
+		return gatewayName;
+	}
+
+	public void setGatewayName(String gatewayName) {
+		this.gatewayName = gatewayName;
+	}
+	public String getAiravataUserName() {
+		return airavataUserName;
+	}
+
+	public void setAiravataUserName(String airavataUserName) {
+		this.airavataUserName = airavataUserName;
+	}
+	public boolean initialize() throws OrchestratorException {
+        try {
+            /* Initializing the OrchestratorConfiguration object */
+        	orchestratorConfiguration = OrchestratorUtils.loadOrchestratorConfiguration();
+            setGatewayProperties();
+            /* initializing the Orchestratorcontext object */
+            airavataRegistry = AiravataRegistryFactory.getRegistry(new Gateway(getGatewayName()), new AiravataUser(getAiravataUserName()));
+            // todo move this code to gfac service mode Jobsubmitter,
+            // todo this is ugly, SHOULD fix these isEmbedded mode code from Orchestrator
+            if (!orchestratorConfiguration.isEmbeddedMode()) {
+                Map<String, Integer> gfacNodeList = airavataRegistry.getGFACNodeList();
+                if (gfacNodeList.size() == 0) {
+                    String error = "No GFAC instances available in the system, Can't initialize Orchestrator";
+                    logger.error(error);
+                    throw new OrchestratorException(error);
+                }
+                Set<String> uriList = gfacNodeList.keySet();
+                Iterator<String> iterator = uriList.iterator();
+                List<GFACInstance> gfacInstanceList = new ArrayList<GFACInstance>();
+                while (iterator.hasNext()) {
+                    String uri = iterator.next();
+                    Integer integer = gfacNodeList.get(uri);
+                    gfacInstanceList.add(new GFACInstance(uri, integer));
+                }
+            }
+            orchestratorContext = new OrchestratorContext();
+            orchestratorContext.setOrchestratorConfiguration(orchestratorConfiguration);
+            orchestratorConfiguration.setAiravataAPI(getAiravataAPI());
+            orchestratorContext.setRegistry(airavataRegistry);
+        } catch (RegistryException e) {
+            logger.error("Failed to initializing Orchestrator");
+            OrchestratorException orchestratorException = new OrchestratorException(e);
+            throw orchestratorException;
+        } catch (AiravataConfigurationException e) {
+            logger.error("Failed to initializing Orchestrator");
+            OrchestratorException orchestratorException = new OrchestratorException(e);
+            throw orchestratorException;
+        } catch (IOException e) {
+            logger.error("Failed to initializing Orchestrator - Error parsing orchestrator.properties");
+            OrchestratorException orchestratorException = new OrchestratorException(e);
+            throw orchestratorException;
+        }
+        return true;
+    }
+	
+	//get the registry URL and the credentials from the property file
+    protected void setGatewayProperties() {
+        InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("gateway.properties");
+        Properties properties = new Properties();
+        try {
+            properties.load(inputStream);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        setAiravataUserName(properties.getProperty("airavata.server.user"));
+        setGatewayName(properties.getProperty("gateway.name"));
+        setRegistryURL(properties.getProperty("airavata.server.url"));
+    }
+    //todo decide whether to return an error or do what
+	 //FIXME: (MEP) as posted on dev list, I think this should return a JobRequest with the experimentID set. This would simplify some of the validation in EmbeddedGFACJobSubmitter's launcGfacWithJobRequest--just throw the job away if the JobRequest is incomplete or malformed.
+   public String createExperiment(ExperimentRequest request) throws OrchestratorException {
+       //todo use a consistent method to create the experiment ID
+		  //FIXME: (MEP) Should you trust the user to do this?  What if the same experimentID is sent twice by the same gateway?
+       String experimentID = request.getUserExperimentID();
+       if(experimentID == null){
+       	experimentID = UUID.randomUUID().toString(); 
+       }
+       try {
+           airavataRegistry.storeExperiment(request.getSubmitterUserName(), experimentID, request.getApplicationName(), request.getJobRequest());
+       } catch (RegistryException e) {
+           //todo put more meaningful error  message
+           logger.error("Failed to create experiment for the request from " + request.getSubmitterUserName());
+           throw new OrchestratorException(e);
+       }
+       return experimentID;
+   }
+   private AiravataAPI getAiravataAPI() {
+       if (airavataAPI == null) {
+           try {
+               airavataAPI = AiravataAPIFactory.getAPI(getGatewayName(), getAiravataUserName());
+           }  catch (AiravataAPIInvocationException e) {
+               logger.error("Unable to create Airavata API", e);
+           }
+       }
+       return airavataAPI;
+   }
+}

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java Wed Jan 22 20:28:29 2014
@@ -23,12 +23,12 @@ package org.apache.airavata.orchestrator
 
 /**
  * This is the initial experiment Creation request
- * This is simple compair to JobRequest object in registry-api
+ * This is simple compare to JobRequest object in registry-api
  * This contains user specified userExperimentID
  */
 public class ExperimentRequest {
   
-    private String userName;
+    private String submitterUserName;
 
     private String userExperimentID;
     
@@ -46,12 +46,12 @@ public class ExperimentRequest {
         this.userExperimentID = userExperimentID;
     }
 
-    public String getUserName() {
-        return userName;
+    public String getSubmitterUserName() {
+        return submitterUserName;
     }
 
-    public void setUserName(String userName) {
-        this.userName = userName;
+    public void setSubmitterUserName(String submitterUserName) {
+        this.submitterUserName = submitterUserName;
     }
 
 	public String getSystemExperimentID() {

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java Wed Jan 22 20:28:29 2014
@@ -20,16 +20,15 @@
 */
 package org.apache.airavata.orchestrator.core;
 
+import java.util.List;
+
 import org.apache.airavata.orchestrator.core.context.OrchestratorContext;
 import org.apache.airavata.orchestrator.core.exception.OrchestratorException;
 import org.apache.airavata.orchestrator.core.gfac.GFACInstance;
 import org.apache.airavata.orchestrator.core.job.JobSubmitter;
-import org.apache.airavata.registry.api.exception.RegistryException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.List;
-
 /**
  * this worker is handling hanged jobs and invoke the submitter
  * after finding hanged jobs

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java Wed Jan 22 20:28:29 2014
@@ -26,7 +26,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.UUID;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -42,7 +41,6 @@ import org.apache.airavata.orchestrator.
 import org.apache.airavata.orchestrator.core.gfac.GFACInstance;
 import org.apache.airavata.orchestrator.core.job.JobSubmitter;
 import org.apache.airavata.orchestrator.core.utils.OrchestratorUtils;
-import org.apache.airavata.registry.api.AiravataRegistry2;
 import org.apache.airavata.registry.api.AiravataRegistryFactory;
 import org.apache.airavata.registry.api.AiravataUser;
 import org.apache.airavata.registry.api.Gateway;
@@ -51,51 +49,16 @@ import org.apache.airavata.registry.api.
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class PullBasedOrchestrator implements Orchestrator {
+public class PullBasedOrchestrator extends AbstractOrchestrator {
     private final static Logger logger = LoggerFactory.getLogger(PullBasedOrchestrator.class);
-
-    private OrchestratorContext orchestratorContext;
-
-    private AiravataRegistry2 airavataRegistry;
-
     private ExecutorService executor;
 
-    private AiravataAPI airavataAPI;
 
     // this is going to be null unless the thread count is 0
     private JobSubmitter jobSubmitter = null;
 
     public boolean initialize() throws OrchestratorException {
-        try {
-            /* Initializing the OrchestratorConfiguration object */
-            OrchestratorConfiguration orchestratorConfiguration = OrchestratorUtils.loadOrchestratorConfiguration();
-
-            /* initializing the Orchestratorcontext object */
-            airavataRegistry = AiravataRegistryFactory.getRegistry(new Gateway("default"), new AiravataUser("admin"));
-            // todo move this code to gfac service mode Jobsubmitter,
-            // todo this is ugly, SHOULD fix these isEmbedded mode code from Orchestrator
-            if (!orchestratorConfiguration.isEmbeddedMode()) {
-                Map<String, Integer> gfacNodeList = airavataRegistry.getGFACNodeList();
-                if (gfacNodeList.size() == 0) {
-                    String error = "No GFAC instances available in the system, Can't initialize Orchestrator";
-                    logger.error(error);
-                    throw new OrchestratorException(error);
-                }
-                Set<String> uriList = gfacNodeList.keySet();
-                Iterator<String> iterator = uriList.iterator();
-                List<GFACInstance> gfacInstanceList = new ArrayList<GFACInstance>();
-                while (iterator.hasNext()) {
-                    String uri = iterator.next();
-                    Integer integer = gfacNodeList.get(uri);
-                    gfacInstanceList.add(new GFACInstance(uri, integer));
-                }
-            }
-            orchestratorContext = new OrchestratorContext();
-            orchestratorContext.setOrchestratorConfiguration(orchestratorConfiguration);
-            orchestratorConfiguration.setAiravataAPI(getAiravataAPI());
-            orchestratorContext.setRegistry(airavataRegistry);
-            /* Starting submitter thread pool */
-
+        	super.initialize();
             // we have a thread to run normal new jobs except to monitor hanged jobs
             if (orchestratorConfiguration.getThreadPoolSize() != 0) {
                 executor = Executors.newFixedThreadPool(orchestratorConfiguration.getThreadPoolSize() + 1);
@@ -113,19 +76,6 @@ public class PullBasedOrchestrator imple
                     throw new OrchestratorException(error, e);
                 }
             }
-        } catch (RegistryException e) {
-            logger.error("Failed to initializing Orchestrator");
-            OrchestratorException orchestratorException = new OrchestratorException(e);
-            throw orchestratorException;
-        } catch (AiravataConfigurationException e) {
-            logger.error("Failed to initializing Orchestrator");
-            OrchestratorException orchestratorException = new OrchestratorException(e);
-            throw orchestratorException;
-        } catch (IOException e) {
-            logger.error("Failed to initializing Orchestrator - Error parsing orchestrator.properties");
-            OrchestratorException orchestratorException = new OrchestratorException(e);
-            throw orchestratorException;
-        }
         return true;
     }
 
@@ -135,26 +85,7 @@ public class PullBasedOrchestrator imple
 
     }
 
-    //todo decide whether to return an error or do what
-	 //FIXME: (MEP) as posted on dev list, I think this should return a JobRequest with the experimentID set. This would simplify some of the validation in EmbeddedGFACJobSubmitter's launcGfacWithJobRequest--just throw the job away if the JobRequest is incomplete or malformed.
-    public String createExperiment(ExperimentRequest request) throws OrchestratorException {
-        //todo use a consistent method to create the experiment ID
-		  //FIXME: (MEP) Should you trust the user to do this?  What if the same experimentID is sent twice by the same gateway?
-        String experimentID = request.getUserExperimentID();
-        if(experimentID == null){
-        	experimentID = UUID.randomUUID().toString(); 
-        }
-        try {
-            airavataRegistry.storeExperiment(request.getUserName(), experimentID, request.getApplicationName(), request.getJobRequest());
-        } catch (RegistryException e) {
-            //todo put more meaningful error  message
-            logger.error("Failed to create experiment for the request from " + request.getUserName());
-            throw new OrchestratorException(e);
-        }
-        return experimentID;
-    }
-
-    public boolean launchExperiment(JobRequest request) throws OrchestratorException {
+       public boolean launchExperiment(JobRequest request) throws OrchestratorException {
         // validate the jobRequest first
         if (!OrchestratorUtils.validateJobRequest(request)) {
             logger.error("Invalid Job request sent, Experiment creation failed");
@@ -244,19 +175,4 @@ public class PullBasedOrchestrator imple
         }
         return true;
     }
-
-    private AiravataAPI getAiravataAPI() {
-        if (airavataAPI == null) {
-            try {
-                String systemUserName = ServerSettings.getSystemUser();
-                String gateway = ServerSettings.getSystemUserGateway();
-                airavataAPI = AiravataAPIFactory.getAPI(gateway, systemUserName);
-            } catch (ApplicationSettingsException e) {
-                logger.error("Unable to read the properties file", e);
-            } catch (AiravataAPIInvocationException e) {
-                logger.error("Unable to create Airavata API", e);
-            }
-        }
-        return airavataAPI;
-    }
 }

Added: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java?rev=1560501&view=auto
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java (added)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java Wed Jan 22 20:28:29 2014
@@ -0,0 +1,58 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.orchestrator.core;
+
+import org.apache.airavata.orchestrator.core.exception.OrchestratorException;
+import org.apache.airavata.registry.api.JobRequest;
+
+public class SimpleOrchestratorImpl extends AbstractOrchestrator{
+
+	@Override
+	public boolean initialize() throws OrchestratorException {
+		super.initialize();
+		return false;
+	}
+
+	@Override
+	public boolean launchExperiment(JobRequest request) throws OrchestratorException {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean cancelExperiment(String experimentID) throws OrchestratorException {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public void startJobSubmitter() throws OrchestratorException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void shutdown() throws OrchestratorException {
+		// TODO Auto-generated method stub
+		
+	}
+
+}

Added: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties?rev=1560501&view=auto
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties (added)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties Wed Jan 22 20:28:29 2014
@@ -0,0 +1,23 @@
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+airavata.server.url=http://localhost:8080/airavata/services/registry
+airavata.server.user=admin
+gateway.name=default

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties Wed Jan 22 20:28:29 2014
@@ -1,3 +1,22 @@
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
 job.submitter=org.apache.airavata.orchestrator.core.impl.EmbeddedGFACJobSubmitter
 submitter.interval=10000
 threadpool.size=10

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java Wed Jan 22 20:28:29 2014
@@ -42,7 +42,7 @@ public class AbstractOrchestratorTest ex
         gatewayResource = (GatewayResource) ResourceUtils.getGateway("default");
         workerResource = (WorkerResource) ResourceUtils.getWorker(gatewayResource.getGatewayName(), "admin");
         userResource = (UserResource) gatewayResource.create(ResourceType.USER);
-        orchestratorDataResource = (OrchestratorDataResource) gatewayResource.create(ResourceType.ORCHESTRATOR_DATA);
+        orchestratorDataResource = (OrchestratorDataResource) gatewayResource.create(ResourceType.ORCHESTRATOR);
         userResource.setUserName("admin");
         userResource.setPassword("admin");
     }

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java Wed Jan 22 20:28:29 2014
@@ -61,7 +61,7 @@ public class SimpleOrchestratorTest exte
     public void noUserIDTest() throws Exception {
         ExperimentRequest experimentRequest = new ExperimentRequest();
         //experimentRequest.setUserExperimentID("test-" + UUID.randomUUID().toString());
-        experimentRequest.setUserName("orchestrator");
+        experimentRequest.setSubmitterUserName("orchestrator");
 
         String systemExpID = orchestrator.createExperiment(experimentRequest);
 
@@ -81,7 +81,7 @@ public class SimpleOrchestratorTest exte
     public void userIDTest() throws Exception {
         ExperimentRequest experimentRequest = new ExperimentRequest();
         experimentRequest.setUserExperimentID("test-" + UUID.randomUUID().toString());
-        experimentRequest.setUserName("orchestrator");
+        experimentRequest.setSubmitterUserName("orchestrator");
 
         String systemExpID = orchestrator.createExperiment(experimentRequest);
 

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java Wed Jan 22 20:28:29 2014
@@ -119,7 +119,7 @@ public class TestWithStoredDescriptors e
     public void noDescriptorTest() throws Exception {
         ExperimentRequest experimentRequest = new ExperimentRequest();
         experimentRequest.setUserExperimentID("test-" + UUID.randomUUID().toString());
-        experimentRequest.setUserName("orchestrator");
+        experimentRequest.setSubmitterUserName("orchestrator");
 
         String systemExpID = orchestrator.createExperiment(experimentRequest);
 

Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql Wed Jan 22 20:28:29 2014
@@ -265,7 +265,7 @@ CREATE TABLE Execution_Error
        FOREIGN KEY (experiment_ID) REFERENCES Experiment_Data(experiment_ID) ON DELETE CASCADE
 );
 
-create table Orchestrator_Data
+create table Orchestrator
 (
         experiment_ID varchar(255) NOT NULL,
         username varchar(255),
@@ -274,7 +274,9 @@ create table Orchestrator_Data
         gfacEPR varchar(255),
         applicationName varchar(255),
         jobRequest CLOB,
-        PRIMARY KEY (experiment_ID)
+        submitted_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        status_update_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+		PRIMARY KEY (experiment_ID)
 );
 
 

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java Wed Jan 22 20:28:29 2014
@@ -40,6 +40,6 @@ public enum ResourceType {
     EXECUTION_ERROR,
     GFAC_JOB_DATA,
     GFAC_JOB_STATUS,
-    ORCHESTRATOR_DATA
+    ORCHESTRATOR
 
 }

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java Wed Jan 22 20:28:29 2014
@@ -315,15 +315,15 @@ public class ResourceUtils {
         List<Resource> resourceList = new ArrayList<Resource>();
         EntityManager em = ResourceUtils.getEntityManager();
         em.getTransaction().begin();
-        QueryGenerator generator = new QueryGenerator(AbstractResource.ORCHESTRATORDATA);
+        QueryGenerator generator = new QueryGenerator(AbstractResource.ORCHESTRATOR);
         generator.setParameter(AbstractResource.OrchestratorDataConstants.STATUS, status);
         Query q = generator.selectQuery(em);
         List<?> results = q.getResultList();
         if (results.size() != 0) {
             for (Object result : results) {
-                Orchestrator_Data orchestratorData = (Orchestrator_Data) result;
+                Orchestrator orchestratorData = (Orchestrator) result;
                 OrchestratorDataResource orchestratorDataResource = (OrchestratorDataResource)
-                        Utils.getResource(ResourceType.ORCHESTRATOR_DATA, orchestratorData);
+                        Utils.getResource(ResourceType.ORCHESTRATOR, orchestratorData);
                 resourceList.add(orchestratorDataResource);
             }
         }

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=1560501&r1=1560500&r2=1560501&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 Wed Jan 22 20:28:29 2014
@@ -2611,7 +2611,7 @@ public class AiravataJPARegistry extends
 
     public AiravataJobState getState(String experimentID) throws RegistryException {
         GatewayResource gateway = jpa.getGateway();
-        OrchestratorDataResource resource = (OrchestratorDataResource)gateway.get(ResourceType.ORCHESTRATOR_DATA, experimentID);
+        OrchestratorDataResource resource = (OrchestratorDataResource)gateway.get(ResourceType.ORCHESTRATOR, experimentID);
         AiravataJobState airavataJobState = new AiravataJobState();
         airavataJobState.setJobState(AiravataJobState.State.valueOf(resource.getStatus()));
         return airavataJobState;
@@ -2645,7 +2645,7 @@ public class AiravataJPARegistry extends
      */
     public JobRequest fetchAcceptedJob(String experimentID) throws RegistryException {
         GatewayResource gatewayResource = jpa.getGateway();
-        OrchestratorDataResource orchestratorResource = (OrchestratorDataResource)gatewayResource.get(ResourceType.ORCHESTRATOR_DATA, experimentID);
+        OrchestratorDataResource orchestratorResource = (OrchestratorDataResource)gatewayResource.get(ResourceType.ORCHESTRATOR, experimentID);
         JobRequest jobRequest = new JobRequest();
         jobRequest.setUserName(orchestratorResource.getUserName());
         jobRequest.setSystemExperimentID(orchestratorResource.getExperimentID());
@@ -2670,7 +2670,7 @@ public class AiravataJPARegistry extends
     public boolean resetHangedJob(String experimentID) throws RegistryException {
         try {
             GatewayResource gatewayResource = jpa.getGateway();
-            OrchestratorDataResource orchestratorResource = (OrchestratorDataResource)gatewayResource.get(ResourceType.ORCHESTRATOR_DATA, experimentID);
+            OrchestratorDataResource orchestratorResource = (OrchestratorDataResource)gatewayResource.get(ResourceType.ORCHESTRATOR, experimentID);
             orchestratorResource.setStatus(AiravataJobState.State.SUBMITTED.toString());
             orchestratorResource.save();
             return true;

Copied: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java (from r1560407, airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java)
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java?p2=airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java&p1=airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java&r1=1560407&r2=1560501&rev=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java Wed Jan 22 20:28:29 2014
@@ -1,5 +1,27 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
 package org.apache.airavata.persistance.registry.jpa.model;
 
+import java.sql.Timestamp;
+
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
@@ -7,8 +29,8 @@ import javax.persistence.Lob;
 import javax.persistence.Table;
 
 @Entity
-@Table(name = "Orchestrator_Data")
-public class Orchestrator_Data {
+@Table(name = "Orchestrator")
+public class Orchestrator {
 	
 	@Id
     private String experiment_ID;
@@ -19,6 +41,8 @@ public class Orchestrator_Data {
 	private String applicationName;
 	@Lob
 	private String jobRequest;
+    private Timestamp  submitted_time;
+    private Timestamp  status_update_time;
 	
 	public String getExperiment_ID() {
 		return experiment_ID;
@@ -63,6 +87,18 @@ public class Orchestrator_Data {
 	public void setJobRequest(String jobRequest) {
 		this.jobRequest = jobRequest;
 	}
+	public Timestamp getSubmittedTime() {
+		return submitted_time;
+	}
+	public void setSubmittedTime(Timestamp submitted_time) {
+		this.submitted_time = submitted_time;
+	}
+	public Timestamp getStatusUpdateTime() {
+		return status_update_time;
+	}
+	public void setStatusUpdateTime(Timestamp status_update_time) {
+		this.status_update_time = status_update_time;
+	}
 	
 
 }

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java Wed Jan 22 20:28:29 2014
@@ -45,7 +45,7 @@ public abstract class AbstractResource i
 	public static final String EXECUTION_ERROR = "Execution_Error";
 	public static final String GFAC_JOB_DATA = "GFac_Job_Data";
 	public static final String GFAC_JOB_STATUS = "GFac_Job_Status";
-	public static final String ORCHESTRATORDATA = "Orchestrator_Data";
+	public static final String ORCHESTRATOR = "Orchestrator";
 
 	// Gateway Table
 	public final class GatewayConstants {

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java Wed Jan 22 20:28:29 2014
@@ -132,7 +132,7 @@ public class GatewayResource extends Abs
                 WorkerResource workerResource = new WorkerResource();
                 workerResource.setGateway(this);
                 return workerResource;
-            case ORCHESTRATOR_DATA:
+            case ORCHESTRATOR:
                 OrchestratorDataResource orchestratorDataResource = new OrchestratorDataResource();
                 orchestratorDataResource.setGateway(this);
                 return orchestratorDataResource;
@@ -194,8 +194,8 @@ public class GatewayResource extends Abs
                 q = generator.deleteQuery(em);
                 q.executeUpdate();
                 break;
-            case ORCHESTRATOR_DATA:
-                generator = new QueryGenerator(ORCHESTRATORDATA);
+            case ORCHESTRATOR:
+                generator = new QueryGenerator(ORCHESTRATOR);
                 generator.setParameter(OrchestratorDataConstants.EXPERIMENT_ID, name);
                 q = generator.deleteQuery(em);
                 q.executeUpdate();
@@ -287,13 +287,13 @@ public class GatewayResource extends Abs
                 em.getTransaction().commit();
                 em.close();
                 return applicationDescriptorResource;
-            case ORCHESTRATOR_DATA:
-                generator = new QueryGenerator(ORCHESTRATORDATA);
+            case ORCHESTRATOR:
+                generator = new QueryGenerator(ORCHESTRATOR);
                 generator.setParameter(OrchestratorDataConstants.EXPERIMENT_ID, name);
                 q = generator.selectQuery(em);
-                Orchestrator_Data orchData = (Orchestrator_Data) q.getSingleResult();
+                Orchestrator orchData = (Orchestrator) q.getSingleResult();
                 OrchestratorDataResource orchestratorDataResource =
-                        (OrchestratorDataResource)Utils.getResource(ResourceType.ORCHESTRATOR_DATA, orchData);
+                        (OrchestratorDataResource)Utils.getResource(ResourceType.ORCHESTRATOR, orchData);
                 em.getTransaction().commit();
                 em.close();
                 return orchestratorDataResource;
@@ -429,13 +429,13 @@ public class GatewayResource extends Abs
 		        	resourceList.add(userResource);
 		        }
 		        break;
-            case ORCHESTRATOR_DATA:
-                generator = new QueryGenerator(ORCHESTRATORDATA);
+            case ORCHESTRATOR:
+                generator = new QueryGenerator(ORCHESTRATOR);
                 q = generator.selectQuery(em);
                 for (Object o : q.getResultList()) {
-                    Orchestrator_Data orchData = (Orchestrator_Data) o;
+                    Orchestrator orchData = (Orchestrator) o;
                     OrchestratorDataResource orchestratorDataResource =
-                            (OrchestratorDataResource)Utils.getResource(ResourceType.ORCHESTRATOR_DATA, orchData);
+                            (OrchestratorDataResource)Utils.getResource(ResourceType.ORCHESTRATOR, orchData);
                     resourceList.add(orchestratorDataResource);
                 }
                 break;
@@ -516,6 +516,11 @@ public class GatewayResource extends Abs
                 Experiment existingExp = em.find(Experiment.class, name.toString());
                 em.close();
                 return existingExp != null;
+            case ORCHESTRATOR:
+                em = ResourceUtils.getEntityManager();
+                Orchestrator existingOrchestrator = em.find(Orchestrator.class, name.toString());
+                em.close();
+                return existingOrchestrator != null;   
             default:
                 logger.error("Unsupported resource type for gateway resource.", new IllegalArgumentException());
                 throw new IllegalArgumentException("Unsupported resource type for gateway resource.");
@@ -772,7 +777,7 @@ public class GatewayResource extends Abs
     }
     
     public OrchestratorDataResource createOrchestratorData(String experimentID){
-    	OrchestratorDataResource dataResource = (OrchestratorDataResource)create(ResourceType.ORCHESTRATOR_DATA);
+    	OrchestratorDataResource dataResource = (OrchestratorDataResource)create(ResourceType.ORCHESTRATOR);
     	dataResource.setExperimentID(experimentID);
     	return dataResource;
     }

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java Wed Jan 22 20:28:29 2014
@@ -1,17 +1,34 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
 package org.apache.airavata.persistance.registry.jpa.resources;
 
-import java.util.ArrayList;
+import java.sql.Timestamp;
 import java.util.List;
 
 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.Experiment;
-import org.apache.airavata.persistance.registry.jpa.model.Orchestrator_Data;
-import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
+import org.apache.airavata.persistance.registry.jpa.model.Orchestrator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -26,6 +43,8 @@ public class OrchestratorDataResource ex
 	private String gfacEPR;
 	private String jobRequest;
 	private GatewayResource gateway;
+    private Timestamp submittedTime;
+    private Timestamp statusUpdateTime;
 
 	public String getExperimentID() {
 		return experimentID;
@@ -91,6 +110,22 @@ public class OrchestratorDataResource ex
 		this.gateway = gateway;
 	}
 
+	public Timestamp getSubmittedTime() {
+		return submittedTime;
+	}
+
+	public void setSubmittedTime(Timestamp submittedTime) {
+		this.submittedTime = submittedTime;
+	}
+
+	public Timestamp getStatusUpdateTime() {
+		return statusUpdateTime;
+	}
+
+	public void setStatusUpdateTime(Timestamp statusUpdateTime) {
+		this.statusUpdateTime = statusUpdateTime;
+	}
+
 	@Override
 	public Resource create(ResourceType type) {
         log.error("Unsupported resource type for orchestrator resource.", new IllegalArgumentException());
@@ -118,30 +153,34 @@ public class OrchestratorDataResource ex
 	@Override
 	public void save() {
 		EntityManager em = ResourceUtils.getEntityManager();
-		Orchestrator_Data existingOrchestratorData = em.find(Orchestrator_Data.class,
+		Orchestrator existingOrchestrator = em.find(Orchestrator.class,
 				experimentID);
 		em.close();
 		em = ResourceUtils.getEntityManager();
 		em.getTransaction().begin();
-		Orchestrator_Data orchestratorData = new Orchestrator_Data();
-		orchestratorData.setExperiment_ID(experimentID);
-		orchestratorData.setUserName(userName);
-		orchestratorData.setGfacEPR(gfacEPR);
-		orchestratorData.setState(state);
-		orchestratorData.setStatus(status);
-		orchestratorData.setApplicationName(applicationName);
-		orchestratorData.setJobRequest(jobRequest);
-		if (existingOrchestratorData != null) {
-			existingOrchestratorData.setExperiment_ID(experimentID);
-			existingOrchestratorData.setUserName(userName);
-			existingOrchestratorData.setState(state);
-			existingOrchestratorData.setStatus(status);
-			existingOrchestratorData.setGfacEPR(gfacEPR);
-			existingOrchestratorData.setApplicationName(applicationName);
-			existingOrchestratorData.setJobRequest(jobRequest);
-			orchestratorData = em.merge(existingOrchestratorData);
+		Orchestrator orchestrator = new Orchestrator();
+		orchestrator.setExperiment_ID(experimentID);
+		orchestrator.setUserName(userName);
+		orchestrator.setGfacEPR(gfacEPR);
+		orchestrator.setState(state);
+		orchestrator.setStatus(status);
+		orchestrator.setApplicationName(applicationName);
+		orchestrator.setJobRequest(jobRequest);
+		orchestrator.setSubmittedTime(submittedTime);
+		orchestrator.setStatusUpdateTime(statusUpdateTime);
+		if (existingOrchestrator != null) {
+			existingOrchestrator.setExperiment_ID(experimentID);
+			existingOrchestrator.setUserName(userName);
+			existingOrchestrator.setState(state);
+			existingOrchestrator.setStatus(status);
+			existingOrchestrator.setGfacEPR(gfacEPR);
+			existingOrchestrator.setApplicationName(applicationName);
+			existingOrchestrator.setJobRequest(jobRequest);
+			existingOrchestrator.setSubmittedTime(submittedTime);
+			existingOrchestrator.setStatusUpdateTime(statusUpdateTime);
+			orchestrator = em.merge(existingOrchestrator);
 		} else {
-			em.persist(orchestratorData);
+			em.persist(orchestrator);
 		}
 		em.getTransaction().commit();
 		em.close();

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java Wed Jan 22 20:28:29 2014
@@ -331,9 +331,9 @@ public class Utils {
                     logger.error("Object should be a GFac Job Status type.", new IllegalArgumentException());
                     throw new IllegalArgumentException("Object should be a GFac Job Status.");
                 }
-            case ORCHESTRATOR_DATA:
-            	if(o instanceof Orchestrator_Data){
-            		return createOrchestratorData((Orchestrator_Data)o);
+            case ORCHESTRATOR:
+            	if(o instanceof Orchestrator){
+            		return createOrchestratorData((Orchestrator)o);
             	}else{
             		 logger.error("Object should be orchestrator data.", new IllegalArgumentException());
                      throw new IllegalArgumentException("Object should be orchestrator data.");
@@ -652,7 +652,7 @@ public class Utils {
         return gFacJobStatusResource;
     }
 
-    private static Resource createOrchestratorData(Orchestrator_Data data){
+    private static Resource createOrchestratorData(Orchestrator data){
     	OrchestratorDataResource dataResource = new OrchestratorDataResource();
     	dataResource.setExperimentID(data.getExperiment_ID());
     	dataResource.setUserName(data.getUserName());
@@ -660,6 +660,8 @@ public class Utils {
     	dataResource.setStatus(data.getStatus());
     	dataResource.setGfacEPR(data.getGfacEPR());
     	dataResource.setJobRequest(data.getJobRequest());
+    	dataResource.setSubmittedTime(data.getSubmittedTime());
+    	dataResource.setStatusUpdateTime(data.getStatusUpdateTime());
     	return dataResource;
     }
 //    public static byte[] getByteArray(String content){

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml Wed Jan 22 20:28:29 2014
@@ -42,7 +42,7 @@
 		<class>org.apache.airavata.persistance.registry.jpa.model.Execution_Error</class>
 		<class>org.apache.airavata.persistance.registry.jpa.model.GFac_Job_Data</class>
 		<class>org.apache.airavata.persistance.registry.jpa.model.GFac_Job_Status</class>
-		<class>org.apache.airavata.persistance.registry.jpa.model.Orchestrator_Data</class>
+		<class>org.apache.airavata.persistance.registry.jpa.model.Orchestrator</class>
         <!--properties>
             <property name="openjpa.ConnectionURL"
                       value="jdbc:mysql://localhost:3306/persitant_data" />

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql Wed Jan 22 20:28:29 2014
@@ -265,7 +265,7 @@ CREATE TABLE Execution_Error
        FOREIGN KEY (experiment_ID) REFERENCES Experiment_Data(experiment_ID) ON DELETE CASCADE
 );
 
-create table Orchestrator_Data
+create table Orchestrator
 (
         experiment_ID varchar(255) NOT NULL,
         username varchar(255),
@@ -274,6 +274,8 @@ create table Orchestrator_Data
         gfacEPR varchar(255),
         applicationName varchar(255),
         jobRequest CLOB,
+        submitted_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        status_update_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
         PRIMARY KEY (experiment_ID)
 );
 

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql Wed Jan 22 20:28:29 2014
@@ -262,7 +262,7 @@ CREATE TABLE Execution_Error
        FOREIGN KEY (experiment_ID) REFERENCES Experiment_Data(experiment_ID) ON DELETE CASCADE
 );
 
-create table Orchestrator_Data
+create table Orchestrator
 (
         experiment_ID varchar(255) NOT NULL,
         username varchar(255),
@@ -271,7 +271,9 @@ create table Orchestrator_Data
         gfacEPR varchar(255),
         applicationName varchar(255),
         jobRequest LONGTEXT,
-        PRIMARY KEY (experiment_ID)
+        submitted_time TIMESTAMP DEFAULT now(),
+        status_update_time TIMESTAMP DEFAULT now() on update now(),
+		PRIMARY KEY (experiment_ID)
 );
 
 

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java Wed Jan 22 20:28:29 2014
@@ -16,7 +16,7 @@ public class OrchestratorDataResourceTes
 	    public void setUp() throws Exception {
 	        super.setUp();
 	        gatewayResource = super.getGatewayResource();
-		    dataResource = (OrchestratorDataResource) gatewayResource.create(ResourceType.ORCHESTRATOR_DATA);
+		    dataResource = (OrchestratorDataResource) gatewayResource.create(ResourceType.ORCHESTRATOR);
 	      
 	   }
 
@@ -27,7 +27,7 @@ public class OrchestratorDataResourceTes
 	        dataResource.save();
 	        assertNotNull("Orchestrator data resource created successfully", dataResource);
 	        // Get saved data
-	        assertNotNull("Orchestrator data resource get successfully", gatewayResource.get(ResourceType.ORCHESTRATOR_DATA, experimentID));
+	        assertNotNull("Orchestrator data resource get successfully", gatewayResource.get(ResourceType.ORCHESTRATOR, experimentID));
 	    }
 
 	    @Override

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql Wed Jan 22 20:28:29 2014
@@ -266,7 +266,7 @@ CREATE TABLE Execution_Error
        FOREIGN KEY (experiment_ID) REFERENCES Experiment_Data(experiment_ID) ON DELETE CASCADE
 );
 
-create table Orchestrator_Data
+create table Orchestrator
 (
         experiment_ID varchar(255) NOT NULL,
         username varchar(255),
@@ -275,7 +275,9 @@ create table Orchestrator_Data
         gfacEPR varchar(255),
         applicationName varchar(255),
         jobRequest CLOB,
-        PRIMARY KEY (experiment_ID)
+        submitted_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        status_update_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+		PRIMARY KEY (experiment_ID)
 );
 -- CREATE TABLE openjpa_sequence_table
 -- (