You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2012/09/08 20:40:11 UTC

svn commit: r1382340 - in /incubator/airavata/trunk/modules: commons/registry-api/src/main/java/org/apache/airavata/registry/api/ commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/descriptor/ commons/registry-api/src/main/ja...

Author: samindaw
Date: Sat Sep  8 18:40:10 2012
New Revision: 1382340

URL: http://svn.apache.org/viewvc?rev=1382340&view=rev
Log:
new reg api integration

Added:
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java
      - copied, changed from r1382215, incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataProvenanceRegistry.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/
      - copied from r1382311, incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/descriptor/
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java   (with props)
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java   (with props)
Removed:
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataProvenanceRegistry.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/descriptor/
Modified:
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataExperiment.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/DescriptorRegistry.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProjectsRegistry.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/PublishedWorkflowRegistry.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/UserWorkflowRegistry.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkspaceProject.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorAlreadyExistsException.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorDoesNotExistsException.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/MalformedDescriptorException.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java
    incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAResourceAccessor.java
    incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
    incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationDescriptorResource.java
    incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java
    incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
    incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java
    incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/PublishWorkflowResource.java
    incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataExperiment.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataExperiment.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataExperiment.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataExperiment.java Sat Sep  8 18:40:10 2012
@@ -27,6 +27,9 @@ public class AiravataExperiment {
 	private String experimentId;
 	private Date submittedDate;
 	private AiravataUser user;
+	private WorkspaceProject project;
+	private Gateway gateway;
+	
 	public String getExperimentId() {
 		return experimentId;
 	}
@@ -45,4 +48,16 @@ public class AiravataExperiment {
 	public void setUser(AiravataUser user) {
 		this.user = user;
 	}
+	public Gateway getGateway() {
+		return gateway;
+	}
+	public void setGateway(Gateway gateway) {
+		this.gateway = gateway;
+	}
+	public WorkspaceProject getProject() {
+		return project;
+	}
+	public void setProject(WorkspaceProject project) {
+		this.project = project;
+	}
 }

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java Sat Sep  8 18:40:10 2012
@@ -22,7 +22,7 @@
 package org.apache.airavata.registry.api;
 
 
-public abstract class AiravataRegistry2 implements DescriptorRegistry, ProjectsRegistry, PublishedWorkflowRegistry, UserWorkflowRegistry, ConfigurationRegistry, AiravataProvenanceRegistry{
+public abstract class AiravataRegistry2 implements DescriptorRegistry, ProjectsRegistry, PublishedWorkflowRegistry, UserWorkflowRegistry, ConfigurationRegistry, ProvenanceRegistry{
 	private Gateway gateway;
 	private AiravataUser user;
 	

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/DescriptorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/DescriptorRegistry.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/DescriptorRegistry.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/DescriptorRegistry.java Sat Sep  8 18:40:10 2012
@@ -28,9 +28,9 @@ import org.apache.airavata.common.regist
 import org.apache.airavata.commons.gfac.type.ApplicationDeploymentDescription;
 import org.apache.airavata.commons.gfac.type.HostDescription;
 import org.apache.airavata.commons.gfac.type.ServiceDescription;
-import org.apache.airavata.registry.api.exception.descriptor.DescriptorAlreadyExistsException;
-import org.apache.airavata.registry.api.exception.descriptor.DescriptorDoesNotExistsException;
-import org.apache.airavata.registry.api.exception.descriptor.MalformedDescriptorException;
+import org.apache.airavata.registry.api.exception.gateway.DescriptorAlreadyExistsException;
+import org.apache.airavata.registry.api.exception.gateway.DescriptorDoesNotExistsException;
+import org.apache.airavata.registry.api.exception.gateway.MalformedDescriptorException;
 
 public interface DescriptorRegistry extends AiravataSubRegistry {
 	

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProjectsRegistry.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProjectsRegistry.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProjectsRegistry.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProjectsRegistry.java Sat Sep  8 18:40:10 2012
@@ -24,19 +24,25 @@ package org.apache.airavata.registry.api
 import java.util.Date;
 import java.util.List;
 
+import org.apache.airavata.common.registry.api.exception.RegistryException;
+import org.apache.airavata.registry.api.exception.worker.ExperimentDoesNotExistsException;
+import org.apache.airavata.registry.api.exception.worker.WorkspaceProjectAlreadyExistsException;
+import org.apache.airavata.registry.api.exception.worker.WorkspaceProjectDoesNotExistsException;
+
 public interface ProjectsRegistry extends AiravataSubRegistry {
 	
 	//------------Project management
-	public void addWorkspaceProject(WorkspaceProject project);
-	public void updateWorkspaceProject(WorkspaceProject project);
-	public void deleteWorkspaceProject(String projectName);
-	public WorkspaceProject getWorkspaceProject(String projectName);
+	public void addWorkspaceProject(WorkspaceProject project) throws WorkspaceProjectAlreadyExistsException, RegistryException;
+	public void updateWorkspaceProject(WorkspaceProject project) throws WorkspaceProjectDoesNotExistsException, RegistryException;
+	public void deleteWorkspaceProject(String projectName) throws WorkspaceProjectDoesNotExistsException, RegistryException;
+	public WorkspaceProject getWorkspaceProject(String projectName) throws WorkspaceProjectDoesNotExistsException, RegistryException;
+	public List<WorkspaceProject> getWorkspaceProjects() throws RegistryException;
 	
 	//------------Experiment management
-	public void createExperiment(String projectName, AiravataExperiment experiment);
-	public void removeExperiment(String experimentId);
-	public List<AiravataExperiment> getExperiments();
-	public List<AiravataExperiment> getExperiments(String projectName);
-	public List<AiravataExperiment> getExperiments(Date from, Date to);
-	public List<AiravataExperiment> getExperiments(String projectName, Date from, Date to);
+	public void addExperiment(String projectName, AiravataExperiment experiment) throws WorkspaceProjectDoesNotExistsException, ExperimentDoesNotExistsException;
+	public void removeExperiment(String experimentId) throws ExperimentDoesNotExistsException;
+	public List<AiravataExperiment> getExperiments() throws RegistryException;
+	public List<AiravataExperiment> getExperiments(String projectName)throws RegistryException;
+	public List<AiravataExperiment> getExperiments(Date from, Date to)throws RegistryException;
+	public List<AiravataExperiment> getExperiments(String projectName, Date from, Date to) throws RegistryException;
 }

Copied: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java (from r1382215, incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataProvenanceRegistry.java)
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java?p2=incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java&p1=incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataProvenanceRegistry.java&r1=1382215&r2=1382340&rev=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataProvenanceRegistry.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java Sat Sep  8 18:40:10 2012
@@ -28,7 +28,7 @@ import org.apache.airavata.common.regist
 import org.apache.airavata.registry.api.workflow.*;
 import org.apache.airavata.registry.api.workflow.WorkflowInstanceStatus.ExecutionStatus;
 
-public interface AiravataProvenanceRegistry extends AiravataSubRegistry{
+public interface ProvenanceRegistry extends AiravataSubRegistry{
 
 	/*------------------------------------------- Experiment data ---------------------------------------------*/
     /**

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/PublishedWorkflowRegistry.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/PublishedWorkflowRegistry.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/PublishedWorkflowRegistry.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/PublishedWorkflowRegistry.java Sat Sep  8 18:40:10 2012
@@ -21,14 +21,24 @@
 
 package org.apache.airavata.registry.api;
 
+import java.util.List;
+import java.util.Map;
+
+import org.apache.airavata.common.registry.api.exception.RegistryException;
+import org.apache.airavata.registry.api.exception.gateway.PublishedWorkflowAlreadyExistsException;
+import org.apache.airavata.registry.api.exception.gateway.PublishedWorkflowDoesNotExistsException;
+import org.apache.airavata.registry.api.exception.worker.UserWorkflowDoesNotExistsException;
+
 
 public interface PublishedWorkflowRegistry extends AiravataSubRegistry {
 	
-	public void publishWorkflow(String workflowName, String publishWorkflowName);
-	public void publishWorkflow(String workflowName);
+	public void publishWorkflow(String workflowName, String publishWorkflowName) throws PublishedWorkflowAlreadyExistsException, UserWorkflowDoesNotExistsException, RegistryException;
+	public void publishWorkflow(String workflowName) throws PublishedWorkflowAlreadyExistsException, UserWorkflowDoesNotExistsException, RegistryException;
 	
-	public String getPublishedWorkflowGraphXML(String workflowName);
-	public ResourceMetadata getPublishedWorkflowMetadata(String workflowName);
+	public String getPublishedWorkflowGraphXML(String workflowName) throws PublishedWorkflowDoesNotExistsException, RegistryException;
+	public List<String> getPublishedWorkflowNames() throws RegistryException;
+	public Map<String,String> getPublishedWorkflows() throws RegistryException;
+	public ResourceMetadata getPublishedWorkflowMetadata(String workflowName) throws RegistryException;
 	
-	public void removePublishedWorkflow(String workflowName);
+	public void removePublishedWorkflow(String workflowName)throws PublishedWorkflowDoesNotExistsException, RegistryException;
 }

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/UserWorkflowRegistry.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/UserWorkflowRegistry.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/UserWorkflowRegistry.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/UserWorkflowRegistry.java Sat Sep  8 18:40:10 2012
@@ -21,14 +21,18 @@
 
 package org.apache.airavata.registry.api;
 
+import org.apache.airavata.common.registry.api.exception.RegistryException;
+import org.apache.airavata.registry.api.exception.worker.UserWorkflowAlreadyExistsException;
+import org.apache.airavata.registry.api.exception.worker.UserWorkflowDoesNotExistsException;
+
 
 public interface UserWorkflowRegistry extends AiravataSubRegistry {
 	
-	public void addWorkflow(String workflowName, String workflowGraphXml);
-	public void updateWorkflow(String workflowName, String workflowGraphXml);
+	public void addWorkflow(String workflowName, String workflowGraphXml) throws UserWorkflowAlreadyExistsException, RegistryException;
+	public void updateWorkflow(String workflowName, String workflowGraphXml) throws UserWorkflowDoesNotExistsException, RegistryException;
 	
-	public String getWorkflowGraphXML(String workflowName);
-	public ResourceMetadata getWorkflowMetadata(String workflowName);	
+	public String getWorkflowGraphXML(String workflowName) throws UserWorkflowDoesNotExistsException, RegistryException;
+	public ResourceMetadata getWorkflowMetadata(String workflowName) throws RegistryException;	
 	
-	public void removeWorkflow(String workflowName);
+	public void removeWorkflow(String workflowName) throws UserWorkflowDoesNotExistsException, RegistryException;
 }

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkspaceProject.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkspaceProject.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkspaceProject.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkspaceProject.java Sat Sep  8 18:40:10 2012
@@ -50,7 +50,7 @@ public class WorkspaceProject{
 	}
 	
 	public void createExperiment(AiravataExperiment experiment){
-		getProjectsRegistry().createExperiment(getProjectName(), experiment);
+		getProjectsRegistry().addExperiment(getProjectName(), experiment);
 	}
 	
 	public List<AiravataExperiment> getExperiments(){

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorAlreadyExistsException.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorAlreadyExistsException.java?rev=1382340&r1=1382311&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorAlreadyExistsException.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorAlreadyExistsException.java Sat Sep  8 18:40:10 2012
@@ -19,7 +19,7 @@
  *
  */
 
-package org.apache.airavata.registry.api.exception.descriptor;
+package org.apache.airavata.registry.api.exception.gateway;
 
 import org.apache.airavata.common.registry.api.exception.RegistryException;
 

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorDoesNotExistsException.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorDoesNotExistsException.java?rev=1382340&r1=1382311&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorDoesNotExistsException.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/DescriptorDoesNotExistsException.java Sat Sep  8 18:40:10 2012
@@ -19,7 +19,7 @@
  *
  */
 
-package org.apache.airavata.registry.api.exception.descriptor;
+package org.apache.airavata.registry.api.exception.gateway;
 
 import org.apache.airavata.common.registry.api.exception.RegistryException;
 

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/MalformedDescriptorException.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/MalformedDescriptorException.java?rev=1382340&r1=1382311&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/MalformedDescriptorException.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/gateway/MalformedDescriptorException.java Sat Sep  8 18:40:10 2012
@@ -19,7 +19,7 @@
  *
  */
 
-package org.apache.airavata.registry.api.exception.descriptor;
+package org.apache.airavata.registry.api.exception.gateway;
 
 import org.apache.airavata.common.registry.api.exception.RegistryException;
 

Added: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java?rev=1382340&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java (added)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java Sat Sep  8 18:40:10 2012
@@ -0,0 +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.registry.api.exception.worker;
+
+import org.apache.airavata.common.registry.api.exception.RegistryException;
+
+public class WorkspaceProjectAlreadyExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public WorkspaceProjectAlreadyExistsException(String projectName) {
+		super("The workspace project "+projectName+" already exists!!!");
+	}
+
+}

Propchange: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectAlreadyExistsException.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java?rev=1382340&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java (added)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java Sat Sep  8 18:40:10 2012
@@ -0,0 +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.registry.api.exception.worker;
+
+import org.apache.airavata.common.registry.api.exception.RegistryException;
+
+public class WorkspaceProjectDoesNotExistsException extends RegistryException {
+
+	private static final long serialVersionUID = -8006347245307495767L;
+
+	public WorkspaceProjectDoesNotExistsException(String projectName) {
+		super("The workspace project "+projectName+" does not exists!!!");
+	}
+
+}

Propchange: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/exception/worker/WorkspaceProjectDoesNotExistsException.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java Sat Sep  8 18:40:10 2012
@@ -47,7 +47,7 @@ import org.apache.airavata.commons.gfac.
 import org.apache.airavata.commons.gfac.type.ServiceDescription;
 import org.apache.airavata.commons.gfac.wsdl.WSDLConstants;
 import org.apache.airavata.commons.gfac.wsdl.WSDLGenerator;
-import org.apache.airavata.registry.api.AiravataProvenanceRegistry;
+import org.apache.airavata.registry.api.ProvenanceRegistry;
 import org.apache.airavata.registry.api.Axis2Registry;
 import org.apache.airavata.registry.api.DataRegistry;
 import org.apache.airavata.registry.api.exception.DeploymentDescriptionRetrieveException;
@@ -93,7 +93,7 @@ public class AiravataJCRRegistry extends
     public static final String WORKFLOW_USER_PROPERTY = "User";
     public static final String NOTIFICATION_STORE = "User";
     
-    private AiravataProvenanceRegistry provenanceRegistry;
+    private ProvenanceRegistry provenanceRegistry;
     private static Logger log = LoggerFactory.getLogger(AiravataJCRRegistry.class);
 
     public AiravataJCRRegistry(URI repositoryURI, String className,
@@ -1583,7 +1583,7 @@ public class AiravataJCRRegistry extends
         return true;
 	}
 
-	private AiravataProvenanceRegistry getProvenanceRegistry() {
+	private ProvenanceRegistry getProvenanceRegistry() {
 		return provenanceRegistry;
 	}
 	
@@ -1599,7 +1599,7 @@ public class AiravataJCRRegistry extends
                 String provenanceClass = "class.provenance.registry.accessor";
                 String provRegAccessorClass = properties.getProperty(provenanceClass, null);
                 if (provRegAccessorClass != null) {
-                    Class<AiravataProvenanceRegistry> provenanceRegistryClass = (Class<AiravataProvenanceRegistry>) getClass().getClassLoader().loadClass(provRegAccessorClass);
+                    Class<ProvenanceRegistry> provenanceRegistryClass = (Class<ProvenanceRegistry>) getClass().getClassLoader().loadClass(provRegAccessorClass);
                     provenanceRegistry = provenanceRegistryClass.getConstructor(String.class).newInstance(getUsername());
                 }
 			} catch (ClassNotFoundException e) {

Modified: incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAResourceAccessor.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAResourceAccessor.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAResourceAccessor.java (original)
+++ incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAResourceAccessor.java Sat Sep  8 18:40:10 2012
@@ -22,32 +22,31 @@
 package org.apache.airavata.persistance.registry.jpa;
 
 import org.apache.airavata.persistance.registry.jpa.resources.GatewayResource;
-import org.apache.airavata.persistance.registry.jpa.resources.ProjectResource;
+import org.apache.airavata.persistance.registry.jpa.resources.WorkerResource;
 import org.apache.airavata.registry.api.AiravataRegistry2;
 
 public class JPAResourceAccessor {
 	private AiravataRegistry2 registry=null;
 	private GatewayResource gatewayResource;
 	private ResourceUtils resourceUtils = new ResourceUtils();
-	
+	private WorkerResource workerResource;
+
 	public JPAResourceAccessor(AiravataRegistry2 registry) {
 		this.registry=registry;
 		gatewayResource = new GatewayResource();
 		gatewayResource.setGatewayName(this.registry.getGateway().getGatewayName());
+		workerResource = new WorkerResource(registry.getUser().getUserName(), getGateway());
 	}
 	
 	public GatewayResource getGateway(){
 		return gatewayResource;
 	}
 	
-	public ProjectResource createProject(String name){
-		ProjectResource prj = (ProjectResource)getGateway().create(ResourceType.PROJECT);
-		prj.setUserName(registry.getUser().getUserName());
-		prj.setName(name);
-		return prj;
-	}
-	
 	public ResourceUtils root(){
 		return resourceUtils;
 	}
+	
+	public WorkerResource getWorker(){
+		return workerResource;
+	}
 }

Modified: incubator/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/incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java (original)
+++ incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java Sat Sep  8 18:40:10 2012
@@ -30,15 +30,11 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.persistence.EntityManagerFactory;
-
 import org.apache.airavata.common.registry.api.exception.RegistryException;
 import org.apache.airavata.commons.gfac.type.ApplicationDeploymentDescription;
 import org.apache.airavata.commons.gfac.type.HostDescription;
 import org.apache.airavata.commons.gfac.type.ServiceDescription;
 import org.apache.airavata.persistance.registry.jpa.JPAResourceAccessor;
-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.resources.ApplicationDescriptorResource;
 import org.apache.airavata.persistance.registry.jpa.resources.ConfigurationResource;
@@ -48,17 +44,25 @@ import org.apache.airavata.persistance.r
 import org.apache.airavata.persistance.registry.jpa.resources.ProjectResource;
 import org.apache.airavata.persistance.registry.jpa.resources.PublishWorkflowResource;
 import org.apache.airavata.persistance.registry.jpa.resources.ServiceDescriptorResource;
-import org.apache.airavata.persistance.registry.jpa.resources.UserResource;
 import org.apache.airavata.persistance.registry.jpa.resources.UserWorkflowResource;
+import org.apache.airavata.persistance.registry.jpa.resources.WorkerResource;
 import org.apache.airavata.registry.api.AiravataExperiment;
 import org.apache.airavata.registry.api.AiravataRegistry2;
 import org.apache.airavata.registry.api.AiravataUser;
+import org.apache.airavata.registry.api.Gateway;
 import org.apache.airavata.registry.api.ResourceMetadata;
 import org.apache.airavata.registry.api.WorkspaceProject;
 import org.apache.airavata.registry.api.exception.UnimplementedRegistryOperationException;
-import org.apache.airavata.registry.api.exception.descriptor.DescriptorAlreadyExistsException;
-import org.apache.airavata.registry.api.exception.descriptor.DescriptorDoesNotExistsException;
-import org.apache.airavata.registry.api.exception.descriptor.MalformedDescriptorException;
+import org.apache.airavata.registry.api.exception.gateway.DescriptorAlreadyExistsException;
+import org.apache.airavata.registry.api.exception.gateway.DescriptorDoesNotExistsException;
+import org.apache.airavata.registry.api.exception.gateway.MalformedDescriptorException;
+import org.apache.airavata.registry.api.exception.gateway.PublishedWorkflowAlreadyExistsException;
+import org.apache.airavata.registry.api.exception.gateway.PublishedWorkflowDoesNotExistsException;
+import org.apache.airavata.registry.api.exception.worker.ExperimentDoesNotExistsException;
+import org.apache.airavata.registry.api.exception.worker.UserWorkflowAlreadyExistsException;
+import org.apache.airavata.registry.api.exception.worker.UserWorkflowDoesNotExistsException;
+import org.apache.airavata.registry.api.exception.worker.WorkspaceProjectAlreadyExistsException;
+import org.apache.airavata.registry.api.exception.worker.WorkspaceProjectDoesNotExistsException;
 import org.apache.airavata.registry.api.workflow.WorkflowExecution;
 import org.apache.airavata.registry.api.workflow.WorkflowIOData;
 import org.apache.airavata.registry.api.workflow.WorkflowInstanceStatus;
@@ -73,8 +77,6 @@ import org.slf4j.LoggerFactory;
 public class AiravataJPARegistry extends AiravataRegistry2{
     private final static Logger logger = LoggerFactory.getLogger(AiravataJPARegistry.class);
     private JPAResourceAccessor jpa;
-    private static final String PERSISTENCE_UNIT_NAME = "airavata_registry";
-	private EntityManagerFactory factory;
 
     @Override
     protected void initialize() {
@@ -443,76 +445,106 @@ public class AiravataJPARegistry extends
 
     /**---------------------------------Project Registry----------------------------------**/
 
-    public void addWorkspaceProject(WorkspaceProject project) {
-        GatewayResource gatewayResource = jpa.getGateway();
-        ProjectResource resource = (ProjectResource)gatewayResource.create(ResourceType.PROJECT);
-        resource.setName(project.getProjectName());
-        //todo fix the IDs to Names
-//        resource.setUserID(getUser().getUserName());
-        resource.save();
-    }
-
-    public void updateWorkspaceProject(WorkspaceProject project) {
-        addWorkspaceProject(project);
-    }
-
-    public void deleteWorkspaceProject(String projectName) {
-        GatewayResource gatewayResource = jpa.getGateway();
-        gatewayResource.remove(ResourceType.PROJECT,projectName);
-    }
-
-    public WorkspaceProject getWorkspaceProject(String projectName) {
-        GatewayResource gatewayResource = jpa.getGateway();
-        ProjectResource resource = (ProjectResource)gatewayResource.get(ResourceType.PROJECT, projectName);
-        WorkspaceProject workspaceProject = new WorkspaceProject(projectName, this);
-        return workspaceProject;
-    }
-
-    public void createExperiment(String projectName, AiravataExperiment experiment) {
-        GatewayResource gatewayResource = jpa.getGateway();
-        ExperimentResource resource = (ExperimentResource)gatewayResource.create(ResourceType.EXPERIMENT);
-        resource.setExpID(experiment.getExperimentId());
-        resource.setSubmittedDate(new java.sql.Date(experiment.getSubmittedDate().getTime()));
-        resource.save();
-    }
-
-    public void removeExperiment(String experimentId) {
-        GatewayResource gatewayResource = jpa.getGateway();
-        gatewayResource.remove(ResourceType.EXPERIMENT, experimentId);
-    }
-
-    public List<AiravataExperiment> getExperiments() {
-        UserResource userResource = new UserResource();
-        userResource.setUserName(getUser().getUserName());
-        List<Resource> resources = userResource.get(ResourceType.EXPERIMENT);
-        List<AiravataExperiment> result = new ArrayList<AiravataExperiment>();
-        for(Resource resource:resources) {
-            AiravataExperiment airavataExperiment = new AiravataExperiment();
-            airavataExperiment.setExperimentId(((ExperimentResource) resource).getExpID());
-            airavataExperiment.setUser(getUser());
-            airavataExperiment.setSubmittedDate(new java.sql.Date(((ExperimentResource) resource).getSubmittedDate().getTime()));
-            result.add(airavataExperiment);
+    public void addWorkspaceProject(WorkspaceProject project) throws WorkspaceProjectAlreadyExistsException {
+    	WorkerResource worker = jpa.getWorker();
+		if (worker.isProjectExists(project.getProjectName())){
+        	throw new WorkspaceProjectAlreadyExistsException(project.getProjectName());
         }
-        return result;
+		ProjectResource projectResource = worker.createProject(project.getProjectName());
+		projectResource.save();
+    }
+
+    public void updateWorkspaceProject(WorkspaceProject project) throws WorkspaceProjectDoesNotExistsException {
+    	WorkerResource worker = jpa.getWorker();
+		if (!worker.isProjectExists(project.getProjectName())){
+        	throw new WorkspaceProjectDoesNotExistsException(project.getProjectName());
+        }
+		ProjectResource projectResource = worker.getProject(project.getProjectName());
+		projectResource.save();
     }
 
-    public List<AiravataExperiment> getExperiments(String projectName) {
-        ProjectResource projectResource = new ProjectResource();
-        projectResource.setName(projectName);
-        List<Resource> resources = projectResource.get(ResourceType.EXPERIMENT);
-        List<AiravataExperiment> result = new ArrayList<AiravataExperiment>();
-        for(Resource resource:resources) {
-            AiravataExperiment airavataExperiment = new AiravataExperiment();
-            airavataExperiment.setExperimentId(((ExperimentResource) resource).getExpID());
-            airavataExperiment.setUser(getUser());
-            airavataExperiment.setSubmittedDate(new java.sql.Date(((ExperimentResource) resource).getSubmittedDate().getTime()));
-            result.add(airavataExperiment);
+    public void deleteWorkspaceProject(String projectName) throws WorkspaceProjectDoesNotExistsException {
+    	WorkerResource worker = jpa.getWorker();
+		if (!worker.isProjectExists(projectName)){
+        	throw new WorkspaceProjectDoesNotExistsException(projectName);
         }
-        return result;  //To change body of implemented methods use File | Settings | File Templates.
+		worker.removeProject(projectName);
+    }
+
+    public WorkspaceProject getWorkspaceProject(String projectName) throws WorkspaceProjectDoesNotExistsException {
+    	WorkerResource worker = jpa.getWorker();
+		if (!worker.isProjectExists(projectName)){
+        	throw new WorkspaceProjectDoesNotExistsException(projectName);
+        }
+		ProjectResource projectResource = worker.getProject(projectName);
+		return new WorkspaceProject(projectResource.getName(), this);
+    }
+    
+    public List<WorkspaceProject> getWorkspaceProjects() throws RegistryException{
+    	WorkerResource worker = jpa.getWorker();
+    	List<WorkspaceProject> projects=new ArrayList<WorkspaceProject>();
+    	List<ProjectResource> projectResouces = worker.getProjects();
+    	for (ProjectResource resource : projectResouces) {
+			projects.add(new WorkspaceProject(resource.getName(), this));
+		}
+    	return projects;
     }
 
-    public List<AiravataExperiment> getExperiments(Date from, Date to) {
-        List<AiravataExperiment> experiments = getExperiments();
+    public void addExperiment(String projectName, AiravataExperiment experiment) throws WorkspaceProjectDoesNotExistsException, ExperimentDoesNotExistsException {
+    	WorkspaceProject workspaceProject = getWorkspaceProject(projectName);
+    	ProjectResource project = jpa.getWorker().getProject(workspaceProject.getProjectName());
+		String experimentId = experiment.getExperimentId();
+		if (project.isExperimentExists(experimentId)){
+        	throw new ExperimentDoesNotExistsException(experimentId);
+        }
+		ExperimentResource experimentResource = project.createExperiment(experimentId);
+		experimentResource.setSubmittedDate(new java.sql.Date(experiment.getSubmittedDate().getTime()));
+		experimentResource.save();
+    }
+
+    public void removeExperiment(String experimentId) throws ExperimentDoesNotExistsException {
+    	WorkerResource worker = jpa.getWorker();
+    	if (!worker.isExperimentExists(experimentId)){
+        	throw new ExperimentDoesNotExistsException(experimentId);
+    	}
+    	worker.removeExperiment(experimentId);
+    }
+
+    public List<AiravataExperiment> getExperiments() throws RegistryException{
+    	WorkerResource worker = jpa.getWorker();
+    	List<AiravataExperiment> result=new ArrayList<AiravataExperiment>();
+    	List<ExperimentResource> experiments = worker.getExperiments();
+    	for (ExperimentResource resource : experiments) {
+			AiravataExperiment e = createAiravataExperimentObj(resource);
+			result.add(e);
+		}
+        return result;
+    }
+
+	private AiravataExperiment createAiravataExperimentObj(
+			ExperimentResource resource) {
+		AiravataExperiment e = new AiravataExperiment();
+		e.setExperimentId(resource.getExpID());
+		e.setUser(new AiravataUser(resource.getWorker().getUser()));
+		e.setSubmittedDate(new Date(resource.getSubmittedDate().getTime()));
+		e.setGateway(new Gateway(resource.getGateway().getGatewayName()));
+		e.setProject(new WorkspaceProject(resource.getProject().getName(), this));
+		return e;
+	}
+
+    public List<AiravataExperiment> getExperiments(String projectName)throws RegistryException {
+    	ProjectResource project = jpa.getWorker().getProject(projectName);
+    	List<ExperimentResource> experiments = project.getExperiments();
+    	List<AiravataExperiment> result=new ArrayList<AiravataExperiment>();
+    	for (ExperimentResource resource : experiments) {
+			AiravataExperiment e = createAiravataExperimentObj(resource);
+			result.add(e);
+		}
+        return result;
+    }
+
+    public List<AiravataExperiment> getExperiments(Date from, Date to)throws RegistryException {
+    	List<AiravataExperiment> experiments = getExperiments();
         List<AiravataExperiment> newExperiments = new ArrayList<AiravataExperiment>();
         for(AiravataExperiment exp:experiments){
             Date submittedDate = exp.getSubmittedDate();
@@ -520,10 +552,10 @@ public class AiravataJPARegistry extends
                 newExperiments.add(exp);
             }
         }
-        return newExperiments;  //To change body of implemented methods use File | Settings | File Templates.
+        return newExperiments;
     }
 
-    public List<AiravataExperiment> getExperiments(String projectName, Date from, Date to) {
+    public List<AiravataExperiment> getExperiments(String projectName, Date from, Date to)throws RegistryException {
         List<AiravataExperiment> experiments = getExperiments(projectName);
         List<AiravataExperiment> newExperiments = new ArrayList<AiravataExperiment>();
         for (AiravataExperiment exp : experiments) {
@@ -535,73 +567,109 @@ public class AiravataJPARegistry extends
         return newExperiments;
     }
 
-    public void publishWorkflow(String workflowName, String publishWorkflowName) {
-        UserResource userResource = new UserResource();
-        userResource.setUserName(getUser().getUserName());
-        UserWorkflowResource resource = (UserWorkflowResource)userResource.get(ResourceType.USER_WORKFLOW, workflowName);
-        GatewayResource gatewayResource = jpa.getGateway();
-        PublishWorkflowResource resource1 = (PublishWorkflowResource)gatewayResource.create(ResourceType.PUBLISHED_WORKFLOW);
-        resource1.setContent(resource.getContent());
-        resource1.setPublishedDate(new java.sql.Date(Calendar.getInstance().getTime().getTime()));
-        resource1.setName(publishWorkflowName);
-        //todo have to set version
+    /**---------------------------------Published Workflow Registry----------------------------------
+     * @throws PublishedWorkflowAlreadyExistsException 
+     * @throws UserWorkflowDoesNotExistsException **/
+    
+    public void publishWorkflow(String workflowName, String publishWorkflowName) throws PublishedWorkflowAlreadyExistsException, UserWorkflowDoesNotExistsException {
+    	GatewayResource gateway = jpa.getGateway();
+    	String workflowGraphXML = getWorkflowGraphXML(workflowName);
+    	if (gateway.isPublishedWorkflowExists(publishWorkflowName)){
+    		throw new PublishedWorkflowAlreadyExistsException(publishWorkflowName);
+    	}
+    	PublishWorkflowResource publishedWorkflow = gateway.createPublishedWorkflow(publishWorkflowName);
+    	publishedWorkflow.setCreatedUser(getUser().getUserName());
+    	publishedWorkflow.setContent(workflowGraphXML);
+    	publishedWorkflow.setPublishedDate(new java.sql.Date(Calendar.getInstance().getTime().getTime()));
+    	publishedWorkflow.save();
     }
 
-    public void publishWorkflow(String workflowName) {
-        UserResource userResource = new UserResource();
-        userResource.setUserName(getUser().getUserName());
-        UserWorkflowResource resource = (UserWorkflowResource)userResource.get(ResourceType.USER_WORKFLOW, workflowName);
-        GatewayResource gatewayResource = jpa.getGateway();
-        PublishWorkflowResource resource1 = (PublishWorkflowResource)gatewayResource.create(ResourceType.PUBLISHED_WORKFLOW);
-        resource1.setContent(resource.getContent());
-        resource1.setPublishedDate(new java.sql.Date(Calendar.getInstance().getTime().getTime()));
-        //todo is this right ????
-        resource1.setName(workflowName);
+    public void publishWorkflow(String workflowName) throws PublishedWorkflowAlreadyExistsException, UserWorkflowDoesNotExistsException {
+    	publishWorkflow(workflowName, workflowName);
     }
 
-    public String getPublishedWorkflowGraphXML(String workflowName) {
-        GatewayResource gatewayResource = jpa.getGateway();
-        PublishWorkflowResource resource1 = (PublishWorkflowResource) gatewayResource.get(ResourceType.PUBLISHED_WORKFLOW, workflowName);
-        return resource1.getContent();
+    public String getPublishedWorkflowGraphXML(String workflowName) throws PublishedWorkflowDoesNotExistsException {
+        GatewayResource gateway = jpa.getGateway();
+        if (!gateway.isPublishedWorkflowExists(workflowName)){
+        	throw new PublishedWorkflowDoesNotExistsException(workflowName);
+        }
+        return gateway.getPublishedWorkflow(workflowName).getContent();
     }
+    
+	public List<String> getPublishedWorkflowNames() throws RegistryException{
+		GatewayResource gateway = jpa.getGateway();
+		List<String> result=new ArrayList<String>();
+    	List<PublishWorkflowResource> publishedWorkflows = gateway.getPublishedWorkflows();
+    	for (PublishWorkflowResource resource : publishedWorkflows) {
+			result.add(resource.getName());
+		}
+    	return result;
+	}
 
-    public ResourceMetadata getPublishedWorkflowMetadata(String workflowName) {
-        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    public Map<String,String> getPublishedWorkflows() throws RegistryException{
+    	GatewayResource gateway = jpa.getGateway();
+    	Map<String,String> result=new HashMap<String, String>();
+    	List<PublishWorkflowResource> publishedWorkflows = gateway.getPublishedWorkflows();
+    	for (PublishWorkflowResource resource : publishedWorkflows) {
+			result.put(resource.getName(), resource.getContent());
+		}
+    	return result;
     }
 
-    public void removePublishedWorkflow(String workflowName) {
-        GatewayResource gatewayResource = jpa.getGateway();
-        gatewayResource.remove(ResourceType.PUBLISHED_WORKFLOW, workflowName);
+    public void removePublishedWorkflow(String workflowName) throws PublishedWorkflowDoesNotExistsException {
+        GatewayResource gateway = jpa.getGateway();
+        if (!gateway.isPublishedWorkflowExists(workflowName)){
+        	throw new PublishedWorkflowDoesNotExistsException(workflowName);
+        }
+        gateway.removePublishedWorkflow(workflowName);
+    }
+    
+    public ResourceMetadata getPublishedWorkflowMetadata(String workflowName) throws RegistryException {
+    	//TODO
+        throw new UnimplementedRegistryOperationException();
     }
 
-    public void addWorkflow(String workflowName, String workflowGraphXml) {
-        ProjectResource projectResource = new ProjectResource();
-        UserWorkflowResource resource = (UserWorkflowResource)projectResource.create(ResourceType.USER_WORKFLOW);
-        resource.setName(workflowName);
-        resource.setContent(workflowGraphXml);
-        resource.setLastUpdateDate(new java.sql.Date(Calendar.getInstance().getTime().getTime()));
-        resource.save();
+    /**---------------------------------Project Registry----------------------------------**/
+
+    public void addWorkflow(String workflowName, String workflowGraphXml) throws UserWorkflowAlreadyExistsException {
+    	WorkerResource worker = jpa.getWorker();
+		if (worker.isWorkflowTemplateExists(workflowName)){
+        	throw new UserWorkflowAlreadyExistsException(workflowName);
+        }
+		UserWorkflowResource workflowResource = worker.createWorkflowTemplate(workflowName);
+		workflowResource.setContent(workflowGraphXml);
+		workflowResource.save();
     }
 
-    public void updateWorkflow(String workflowName, String workflowGraphXml) {
-         addWorkflow(workflowName,workflowGraphXml);
+    public void updateWorkflow(String workflowName, String workflowGraphXml) throws UserWorkflowDoesNotExistsException {
+    	WorkerResource worker = jpa.getWorker();
+		if (!worker.isWorkflowTemplateExists(workflowName)){
+        	throw new UserWorkflowDoesNotExistsException(workflowName);
+        }
+		UserWorkflowResource workflowResource = worker.createWorkflowTemplate(workflowName);
+		workflowResource.setContent(workflowGraphXml);
+		workflowResource.save();
     }
 
-    public String getWorkflowGraphXML(String workflowName) {
-        GatewayResource gatewayResource = jpa.getGateway();
-        UserResource resource = (UserResource)gatewayResource.get(ResourceType.USER_WORKFLOW, getUser().getUserName());
-        UserWorkflowResource resource1 = (UserWorkflowResource) resource.get(ResourceType.USER_WORKFLOW, workflowName);
-        return resource1.getContent();
+    public String getWorkflowGraphXML(String workflowName) throws UserWorkflowDoesNotExistsException {
+    	WorkerResource worker = jpa.getWorker();
+		if (!worker.isWorkflowTemplateExists(workflowName)){
+        	throw new UserWorkflowDoesNotExistsException(workflowName);
+        }
+		return worker.getWorkflowTemplate(workflowName).getContent();
     }
 
-    public ResourceMetadata getWorkflowMetadata(String workflowName) {
-        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    public ResourceMetadata getWorkflowMetadata(String workflowName) throws UnimplementedRegistryOperationException {
+    	//TODO
+        throw new UnimplementedRegistryOperationException();
     }
 
-    public void removeWorkflow(String workflowName) {
-        GatewayResource gatewayResource = jpa.getGateway();
-        UserResource resource = (UserResource)gatewayResource.get(ResourceType.USER_WORKFLOW, getUser().getUserName());
-        resource.remove(ResourceType.USER_WORKFLOW, workflowName);
+    public void removeWorkflow(String workflowName) throws UserWorkflowDoesNotExistsException {
+    	WorkerResource worker = jpa.getWorker();
+		if (!worker.isWorkflowTemplateExists(workflowName)){
+        	throw new UserWorkflowDoesNotExistsException(workflowName);
+        }
+		worker.removeWorkflowTemplate(workflowName);
     }
 
     public void setAiravataRegistry(AiravataRegistry2 registry) {

Modified: incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationDescriptorResource.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationDescriptorResource.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationDescriptorResource.java (original)
+++ incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ApplicationDescriptorResource.java Sat Sep  8 18:40:10 2012
@@ -35,7 +35,11 @@ public class ApplicationDescriptorResour
     private String content;
     private String hostDescName;
     private String serviceDescName;
-
+    
+    public ApplicationDescriptorResource(String name) {
+        this.setName(name);
+    }
+    
     public ApplicationDescriptorResource(String name, String gatewayName, String hostDescName, String serviceDescName) {
         this.setName(name);
         this.gatewayName = gatewayName;

Modified: incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java (original)
+++ incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentResource.java Sat Sep  8 18:40:10 2012
@@ -20,33 +20,35 @@
 */
 package org.apache.airavata.persistance.registry.jpa.resources;
 
+import java.sql.Date;
+import java.util.ArrayList;
+import java.util.List;
+
+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.model.Experiment;
+import org.apache.airavata.persistance.registry.jpa.model.Gateway;
 import org.apache.airavata.persistance.registry.jpa.model.Project;
 import org.apache.airavata.persistance.registry.jpa.model.Users;
 
-import javax.persistence.Query;
-import java.sql.Date;
-import java.util.ArrayList;
-import java.util.List;
-
 public class ExperimentResource extends AbstractResource {
-    private int projectID;
-    private String userName;
+    private WorkerResource worker;
     private String expID;
     private Date submittedDate;
-    private String gatewayName;
+    private GatewayResource gateway;
+    private ProjectResource project;
 
     public ExperimentResource() {
     }
 
     public ExperimentResource(String expID) {
-        this.expID = expID;
+        this.setExpID(expID);
     }
 
     public int getProjectID() {
-        return projectID;
+        return project.getId();
     }
 
     public String getExpID() {
@@ -57,30 +59,10 @@ public class ExperimentResource extends 
         return submittedDate;
     }
 
-    public void setProjectID(int projectID) {
-        this.projectID = projectID;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
     public void setSubmittedDate(Date submittedDate) {
         this.submittedDate = submittedDate;
     }
 
-    public String getGatewayName() {
-        return gatewayName;
-    }
-
-    public void setGatewayName(String gatewayName) {
-        this.gatewayName = gatewayName;
-    }
-
     public Resource create(ResourceType type) {
         throw new UnsupportedOperationException();
     }
@@ -109,8 +91,13 @@ public class ExperimentResource extends 
         q.setParameter("exp_ID", keys[0]);
         Experiment experiment = (Experiment)q.getSingleResult();
         ExperimentResource experimentResource = new ExperimentResource(experiment.getExperiment_ID());
-        experimentResource.setUserName(experiment.getUser().getUser_name());
-        experimentResource.setProjectID(experiment.getProject().getProject_ID());
+        experimentResource.setGateway(getGateway());
+        experimentResource.setWorker(getWorker());
+        ProjectResource projectResource = new ProjectResource(experiment.getProject().getProject_ID());
+        projectResource.setGateway(getGateway());
+        projectResource.setWorker(getWorker());
+        projectResource.setName(experiment.getProject().getProject_name());
+        experimentResource.setProject(projectResource);
         experimentResource.setSubmittedDate(experiment.getSubmitted_date());
         end();
         list.add(experimentResource);
@@ -125,13 +112,16 @@ public class ExperimentResource extends 
     public void save() {
         begin();
         Experiment experiment = new Experiment();
-        experiment.setExperiment_ID(expID);
+        experiment.setExperiment_ID(getExpID());
         Project project = new Project();
-        project.setProject_ID(projectID);
+        project.setProject_ID(this.project.getId());
         experiment.setProject(project);
         Users user = new Users();
-        user.setUser_name(userName);
+        user.setUser_name(getWorker().getUser());
         experiment.setUser(user);
+        Gateway gateway = new Gateway();
+        gateway.setGateway_name(getGateway().getGatewayName());
+		experiment.setGateway(gateway);
         experiment.setSubmitted_date(submittedDate);
         em.persist(experiment);
         end();
@@ -139,11 +129,35 @@ public class ExperimentResource extends 
 
     }
 
-    public void save(boolean isAppendable) {
-
-    }
-
     public boolean isExists(ResourceType type, Object name) {
         throw new UnsupportedOperationException();
     }
+
+	public void setExpID(String expID) {
+		this.expID = expID;
+	}
+
+	public GatewayResource getGateway() {
+		return gateway;
+	}
+
+	public void setGateway(GatewayResource gateway) {
+		this.gateway = gateway;
+	}
+
+	public WorkerResource getWorker() {
+		return worker;
+	}
+
+	public void setWorker(WorkerResource worker) {
+		this.worker = worker;
+	}
+
+	public ProjectResource getProject() {
+		return project;
+	}
+
+	public void setProject(ProjectResource project) {
+		this.project = project;
+	}
 }

Modified: incubator/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/incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java (original)
+++ incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java Sat Sep  8 18:40:10 2012
@@ -40,6 +40,13 @@ public class GatewayResource extends Abs
     private String gatewayName;
     private String owner;
 
+    public GatewayResource(String gatewayName) {
+    	setGatewayName(gatewayName);
+	}
+    
+    public GatewayResource() {
+	}
+    
     public String getGatewayName() {
         return gatewayName;
     }
@@ -59,19 +66,19 @@ public class GatewayResource extends Abs
     public Resource create(ResourceType type) {
         if (type == ResourceType.PROJECT) {
             ProjectResource projectResource = new ProjectResource();
-            projectResource.setGatewayName(gatewayName);
+            projectResource.setGateway(this);
             return projectResource;
         } else if (type == ResourceType.USER) {
             UserResource userResource = new UserResource();
-            userResource.setGatewayName(gatewayName);
+            userResource.setGatewayName(this.getGatewayName());
             return userResource;
         } else if (type == ResourceType.PUBLISHED_WORKFLOW) {
             PublishWorkflowResource publishWorkflowResource = new PublishWorkflowResource();
-            publishWorkflowResource.setGatewayName(gatewayName);
+            publishWorkflowResource.setGateway(this);
             return publishWorkflowResource;
         }else if(type == ResourceType.USER_WORKFLOW){
             UserWorkflowResource userWorkflowResource = new UserWorkflowResource();
-            userWorkflowResource.setGatewayname(gatewayName);
+            userWorkflowResource.setGateway(this);
             return userWorkflowResource;
         }else if (type == ResourceType.HOST_DESCRIPTOR) {
             HostDescriptorResource hostDescriptorResource = new HostDescriptorResource();
@@ -87,7 +94,7 @@ public class GatewayResource extends Abs
             return applicationDescriptorResource;
         } else if(type == ResourceType.EXPERIMENT){
             ExperimentResource experimentResource =new ExperimentResource();
-            experimentResource.setGatewayName(gatewayName);
+            experimentResource.setGateway(this);
             return experimentResource;
         }else {
             return null;
@@ -153,7 +160,7 @@ public class GatewayResource extends Abs
 //            end();
 //            return projectResource;
 //        } else
-            if (type == ResourceType.USER) {
+        if (type == ResourceType.USER) {
             Query q = em.createQuery("SELECT p FROM Gateway_Worker p WHERE p.user_name = :username and p.gateway_name =:gate_name");
             q.setParameter("username", name);
             q.setParameter("gate_name", gatewayName);
@@ -168,7 +175,8 @@ public class GatewayResource extends Abs
             q.setParameter("pub_workflow_name", name);
             q.setParameter("gate_name", gatewayName);
             Published_Workflow ePub_workflow = (Published_Workflow) q.getSingleResult();
-            PublishWorkflowResource publishWorkflowResource = new PublishWorkflowResource(ePub_workflow.getPublish_workflow_name());
+            PublishWorkflowResource publishWorkflowResource = new PublishWorkflowResource(this);
+            publishWorkflowResource.setName(ePub_workflow.getPublish_workflow_name());
             publishWorkflowResource.setContent(ePub_workflow.getWorkflow_content());
             publishWorkflowResource.setPublishedDate(ePub_workflow.getPublished_date());
             publishWorkflowResource.setVersion(ePub_workflow.getVersion());
@@ -194,27 +202,26 @@ public class GatewayResource extends Abs
             hostDescriptorResource.setContent(eHostDesc.getHost_descriptor_xml());
             end();
             return hostDescriptorResource;
-//        }
-//        else if (type == ResourceType.APPLICATION_DESCRIPTOR) {
-//            Query q = em.createQuery("SELECT p FROM Application_Descriptor p WHERE p.application_descriptor_ID = :app_desc_id and p.gateway_name =:gate_name");
-//            q.setParameter("app_desc_id", name);
-//            q.setParameter("gate_name", gatewayName);
-//            Application_Descriptor eappDesc = (Application_Descriptor) q.getSingleResult();
-//            ApplicationDescriptorResource applicationDescriptorResource = new ApplicationDescriptorResource(eappDesc.getApplication_descriptor_ID());
-//            applicationDescriptorResource.setGatewayName(eappDesc.getGateway().getGateway_name());
-//            applicationDescriptorResource.setContent(eappDesc.getApplication_descriptor_xml());
-//            applicationDescriptorResource.setHostDescName(eappDesc.getHost_descriptor_ID());
-//            applicationDescriptorResource.setServiceDescName(eappDesc.getService_descriptor_ID());
-//            end();
-//            return applicationDescriptorResource;
+        } else if (type == ResourceType.APPLICATION_DESCRIPTOR) {
+            Query q = em.createQuery("SELECT p FROM Application_Descriptor p WHERE p.application_descriptor_ID = :app_desc_id and p.gateway_name =:gate_name");
+            q.setParameter("app_desc_id", name);
+            q.setParameter("gate_name", gatewayName);
+            Application_Descriptor eappDesc = (Application_Descriptor) q.getSingleResult();
+            ApplicationDescriptorResource applicationDescriptorResource = new ApplicationDescriptorResource(eappDesc.getApplication_descriptor_ID());
+            applicationDescriptorResource.setGatewayName(eappDesc.getGateway().getGateway_name());
+            applicationDescriptorResource.setContent(eappDesc.getApplication_descriptor_xml());
+            applicationDescriptorResource.setHostDescName(eappDesc.getHost_descriptor_ID());
+            applicationDescriptorResource.setServiceDescName(eappDesc.getService_descriptor_ID());
+            end();
+            return applicationDescriptorResource;
         } else if(type == ResourceType.EXPERIMENT){
             Query q = em.createQuery("SELECT p FROM Experiment p WHERE p.experiment_ID = :ex_ID and p.gateway_name =:gate_name");
             q.setParameter("ex_ID", name);
             q.setParameter("gate_name", gatewayName);
             Experiment experiment = (Experiment)q.getSingleResult();
             ExperimentResource experimentResource = new ExperimentResource(experiment.getExperiment_ID());
-            experimentResource.setUserName(experiment.getUser().getUser_name());
-            experimentResource.setGatewayName(gatewayName);
+            experimentResource.setWorker(new WorkerResource(experiment.getUser().getUser_name(),this));
+            experimentResource.setGateway(this);
             experimentResource.setSubmittedDate(experiment.getSubmitted_date());
             return experimentResource;
         } else {
@@ -237,7 +244,7 @@ public class GatewayResource extends Abs
                 for (Object result : results) {
                     Project project = (Project) result;
                     ProjectResource projectResource = new ProjectResource(project.getProject_ID());
-                    projectResource.setGatewayName(gatewayName);
+                    projectResource.setGateway(this);
                     projectResource.setName(project.getProject_name());
                     resourceList.add(projectResource);
                 }
@@ -260,12 +267,12 @@ public class GatewayResource extends Abs
         else if (type == ResourceType.PUBLISHED_WORKFLOW) {
             Query q = em.createQuery("SELECT p FROM Published_Workflow p WHERE p.gateway_name =:gate_name");
             q.setParameter("gate_name", gatewayName);
-            List results = q.getResultList();
+            List<?> results = q.getResultList();
             if (results.size() != 0) {
                 for (Object result : results) {
                     Published_Workflow publishedWorkflow = (Published_Workflow) result;
-                    PublishWorkflowResource publishWorkflowResource = new PublishWorkflowResource(publishedWorkflow.getPublish_workflow_name());
-                    publishWorkflowResource.setGatewayName(gatewayName);
+                    PublishWorkflowResource publishWorkflowResource = new PublishWorkflowResource(this);
+                    publishWorkflowResource.setName(publishedWorkflow.getPublish_workflow_name());
                     publishWorkflowResource.setContent(publishedWorkflow.getWorkflow_content());
                     publishWorkflowResource.setPublishedDate(publishedWorkflow.getPublished_date());
                     publishWorkflowResource.setVersion(publishedWorkflow.getVersion());
@@ -320,10 +327,12 @@ public class GatewayResource extends Abs
                 for (Object result : results) {
                     Experiment experiment = (Experiment) result;
                     ExperimentResource experimentResource = new ExperimentResource(experiment.getExperiment_ID());
-                    experimentResource.setGatewayName(gatewayName);
-                    experimentResource.setUserName(experiment.getUser().getUser_name());
+                    experimentResource.setGateway(this);
+                    experimentResource.setWorker(new WorkerResource(experiment.getUser().getUser_name(),this));
                     experimentResource.setSubmittedDate(experiment.getSubmitted_date());
-                    experimentResource.setProjectID(experiment.getProject().getProject_ID());
+                    ProjectResource project = new ProjectResource(experimentResource.getWorker(),this,experiment.getProject().getProject_ID());
+                    project.setName(experiment.getProject().getProject_name());
+					experimentResource.setProject(project);
                     resourceList.add(experimentResource);
                 }
             }
@@ -506,5 +515,34 @@ public class GatewayResource extends Abs
         end();
         return resourceList;
     }
+    
+    public boolean isPublishedWorkflowExists(String workflowTemplateName){
+    	return isExists(ResourceType.PUBLISHED_WORKFLOW, workflowTemplateName);
+    }
+    
+    public PublishWorkflowResource createPublishedWorkflow(String workflowTemplateName){
+    	PublishWorkflowResource publishedWorkflowResource = (PublishWorkflowResource)create(ResourceType.PUBLISHED_WORKFLOW);
+    	publishedWorkflowResource.setName(workflowTemplateName);
+    	publishedWorkflowResource.setPath("/");
+    	publishedWorkflowResource.setVersion("1.0");
+    	return publishedWorkflowResource;
+    }
+    
+    public PublishWorkflowResource getPublishedWorkflow(String workflowTemplateName){
+    	return (PublishWorkflowResource)get(ResourceType.PUBLISHED_WORKFLOW,workflowTemplateName);
+    }
+    
+    public List<PublishWorkflowResource> getPublishedWorkflows(){
+    	List<PublishWorkflowResource> result=new ArrayList<PublishWorkflowResource>();
+    	List<Resource> list = get(ResourceType.PUBLISHED_WORKFLOW);
+    	for (Resource resource : list) {
+			result.add((PublishWorkflowResource) resource);
+		}
+    	return result;
+    }
+    
+    public void removePublishedWorkflow(String workflowTemplateName){
+    	remove(ResourceType.PUBLISHED_WORKFLOW, workflowTemplateName);
+    }
 }
 

Modified: incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java (original)
+++ incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ProjectResource.java Sat Sep  8 18:40:10 2012
@@ -54,8 +54,9 @@ public class ProjectResource extends Abs
     public Resource create(ResourceType type) {
         if (type == ResourceType.EXPERIMENT) {
             ExperimentResource experimentResource = new ExperimentResource();
+            experimentResource.setGateway(getGateway());
             experimentResource.setProjectID(id);
-            experimentResource.setUserName(getWorker().getUser());
+            experimentResource.setWorker(getWorker());
             return experimentResource;
         } else {
             return null;
@@ -88,8 +89,9 @@ public class ProjectResource extends Abs
             Experiment experiment = (Experiment) q.getSingleResult();
             ExperimentResource experimentResource = new ExperimentResource(experiment.getExperiment_ID());
             experimentResource.setProjectID(experiment.getProject().getProject_ID());
-            experiment.setSubmitted_date(experiment.getSubmitted_date());
-            experiment.setUser(experiment.getUser());
+            experimentResource.setWorker(getWorker());
+            experimentResource.setGateway(getGateway());
+            experimentResource.setSubmittedDate(experiment.getSubmitted_date());
             end();
             return experimentResource;
         }
@@ -121,13 +123,14 @@ public class ProjectResource extends Abs
         if (type == ResourceType.EXPERIMENT) {
             Query q = em.createQuery("SELECT p FROM Experiment p WHERE p.project_ID =:proj_ID");
             q.setParameter("proj_ID", id);
-            List results = q.getResultList();
+            List<?> results = q.getResultList();
             if (results.size() != 0) {
                 for (Object result : results) {
                     Experiment experiment = (Experiment) result;
                     ExperimentResource experimentResource = new ExperimentResource(experiment.getExperiment_ID());
                     experimentResource.setProjectID(experiment.getProject().getProject_ID());
-                    experimentResource.setUserName(experiment.getUser().getUser_name());
+                    experimentResource.setGateway(new GatewayResource(experiment.getGateway().getGateway_name()));
+                    experimentResource.setWorker(new WorkerResource(experiment.getUser().getUser_name(), experimentResource.getGateway()));
                     experimentResource.setSubmittedDate(experiment.getSubmitted_date());
                     resourceList.add(experimentResource);
                 }
@@ -180,5 +183,31 @@ public class ProjectResource extends Abs
 		this.gateway = gateway;
 	}
 
+	public boolean isExperimentExists(String experimentId){
+		return isExists(ResourceType.EXPERIMENT, experimentId);
+	}
+	
+	public ExperimentResource createExperiment(String experimentId){
+		ExperimentResource experimentResource = (ExperimentResource)create(ResourceType.EXPERIMENT);
+		experimentResource.setExpID(experimentId);
+		return experimentResource;
+	}
+	
+	public ExperimentResource getExperiment(String experimentId){
+		return (ExperimentResource)get(ResourceType.EXPERIMENT,experimentId);
+	}
+	
+	public List<ExperimentResource> getExperiments(){
+		List<Resource> list = get(ResourceType.EXPERIMENT);
+		List<ExperimentResource> result=new ArrayList<ExperimentResource>();
+		for (Resource resource : list) {
+			result.add((ExperimentResource) resource);
+		}
+		return result;
+	}
+	
+	public void removeExperiment(String experimentId){
+		remove(ResourceType.EXPERIMENT, experimentId);
+	}
 
 }

Modified: incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/PublishWorkflowResource.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/PublishWorkflowResource.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/PublishWorkflowResource.java (original)
+++ incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/PublishWorkflowResource.java Sat Sep  8 18:40:10 2012
@@ -35,15 +35,15 @@ public class PublishWorkflowResource ext
     private String version;
     private Date publishedDate;
     private String content;
-    private String gatewayName;
+    private GatewayResource gateway;
     private String createdUser;
     private String path;
 
     public PublishWorkflowResource() {
     }
 
-    public PublishWorkflowResource(String name) {
-        this.name = name;
+    public PublishWorkflowResource(GatewayResource gateway) {
+        this.gateway = gateway;
     }
 
     public String getCreatedUser() {
@@ -90,14 +90,6 @@ public class PublishWorkflowResource ext
         this.content = content;
     }
 
-    public String getGatewayName() {
-        return gatewayName;
-    }
-
-    public void setGatewayName(String gatewayName) {
-        this.gatewayName = gatewayName;
-    }
-
     public Resource create(ResourceType type) {
         throw new UnsupportedOperationException();
     }
@@ -122,7 +114,7 @@ public class PublishWorkflowResource ext
         q.setParameter("pub_wf_name", keys[1]);
         Published_Workflow publishedWorkflow = (Published_Workflow)q.getSingleResult();
         PublishWorkflowResource publishWorkflowResource = new PublishWorkflowResource();
-        publishWorkflowResource.setGatewayName(publishedWorkflow.getGateway().getGateway_name());
+        publishWorkflowResource.setGateway(new GatewayResource(publishedWorkflow.getGateway().getGateway_name()));
         publishWorkflowResource.setContent(publishedWorkflow.getWorkflow_content());
         publishWorkflowResource.setPublishedDate(publishedWorkflow.getPublished_date());
         publishWorkflowResource.setVersion(publishedWorkflow.getVersion());
@@ -138,12 +130,12 @@ public class PublishWorkflowResource ext
     public void save() {
         begin();
         Published_Workflow publishedWorkflow = new Published_Workflow();
-        publishedWorkflow.setPublish_workflow_name(name);
+        publishedWorkflow.setPublish_workflow_name(getName());
         publishedWorkflow.setPublished_date(publishedDate);
         publishedWorkflow.setVersion(version);
         publishedWorkflow.setWorkflow_content(content);
         Gateway gateway = new Gateway();
-        gateway.setGateway_name(gatewayName);
+        gateway.setGateway_name(this.gateway.getGatewayName());
         publishedWorkflow.setGateway(gateway);
         em.persist(gateway);
         end();
@@ -156,4 +148,16 @@ public class PublishWorkflowResource ext
     public boolean isExists(ResourceType type, Object name) {
         throw new UnsupportedOperationException();
     }
+
+	public GatewayResource getGateway() {
+		return gateway;
+	}
+
+	public void setGateway(GatewayResource gateway) {
+		this.gateway = gateway;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
 }

Modified: incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java?rev=1382340&r1=1382339&r2=1382340&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java (original)
+++ incubator/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java Sat Sep  8 18:40:10 2012
@@ -28,6 +28,7 @@ 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.model.Experiment;
 import org.apache.airavata.persistance.registry.jpa.model.Project;
 import org.apache.airavata.persistance.registry.jpa.model.User_Workflow;
 
@@ -79,6 +80,12 @@ public class WorkerResource extends Abst
 	            q.setParameter("gate_name", gateway.getGatewayName());
 	            q.executeUpdate();
 	            break;
+			case EXPERIMENT:
+	            q = em.createQuery("Delete p FROM Experiment p WHERE p.user_name = :usr_name and p.experiment_ID = :ex_name");
+	            q.setParameter("usr_name", getUser());
+	            q.setParameter("ex_name", name);
+	            q.executeUpdate();
+	            break;
 			default:
 				break;
 		}
@@ -116,6 +123,23 @@ public class WorkerResource extends Abst
 	            userWorkflowResource.setLastUpdateDate(userWorkflow.getLast_updated_date());
 	            result=userWorkflowResource;
 	            break;
+			case EXPERIMENT:
+				q = em.createQuery("SELECT p FROM Experiment p WHERE p.gateway_name = :gateway_name and p.user_name = :usr_name and p.experiment_ID = :ex_name");
+	            q.setParameter("usr_name", getUser());
+	            q.setParameter("ex_name", name);
+	            q.setParameter("gateway_name", gateway.getGatewayName());
+	            Experiment experiment = (Experiment) q.getSingleResult();
+	            ExperimentResource experimentResource = new ExperimentResource(experiment.getExperiment_ID());
+	            ProjectResource projectResource1 = new ProjectResource(experiment.getProject().getProject_ID());
+                projectResource1.setGateway(gateway);
+                projectResource1.setWorker(this);
+                projectResource1.setName(experiment.getProject().getProject_name());
+            	experimentResource.setProject(projectResource1);
+	            experimentResource.setWorker(this);
+	            experimentResource.setGateway(gateway);
+	            experimentResource.setSubmittedDate(experiment.getSubmitted_date());
+	            result=experimentResource;
+				break;
 			default:
 				break;
 		}
@@ -145,9 +169,8 @@ public class WorkerResource extends Abst
 				}
 				break;
 			case USER_WORKFLOW:
-				q = em.createQuery("SELECT p FROM User_Workflow p WHERE p.owner = :usr_name and p.gateway_name =:gate_name");
-	            q.setParameter("user_name", getUser());
-	            q.setParameter("gate_name", gateway.getGatewayName());
+				q = em.createQuery("SELECT p FROM Experiment p WHERE p.project_ID = :proj_id and p.user_name = :usr_name and p.experiment_ID = :ex_name");
+	            q.setParameter("usr_name", getUser());
 	            for (Object o : q.getResultList()) {
 		            User_Workflow userWorkflow = (User_Workflow) o;
 		            UserWorkflowResource userWorkflowResource = new UserWorkflowResource(gateway, this, userWorkflow.getTemplate_name());
@@ -156,6 +179,24 @@ public class WorkerResource extends Abst
 		            result.add(userWorkflowResource);
 	            }
 	            break;
+			case EXPERIMENT:
+				q = em.createQuery("SELECT p FROM Experiment p WHERE p.gateway_name = :gateway_name and p.user_name = :usr_name and p.experiment_ID = :ex_name");
+	            q.setParameter("usr_name", getUser());
+	            q.setParameter("gateway_name", gateway.getGatewayName());
+	            for (Object o : q.getResultList()) {
+	            	Experiment experiment = (Experiment) o;
+	            	ExperimentResource experimentResource = new ExperimentResource(experiment.getExperiment_ID());
+	            	experimentResource.setGateway(gateway);
+	            	experimentResource.setWorker(this);
+	            	ProjectResource projectResource = new ProjectResource(experiment.getProject().getProject_ID());
+	                projectResource.setGateway(gateway);
+	                projectResource.setWorker(this);
+	                projectResource.setName(experiment.getProject().getProject_name());
+	            	experimentResource.setProject(projectResource);
+	            	experimentResource.setSubmittedDate(experiment.getSubmitted_date());
+		            result.add(experimentResource);
+	            }
+	            break;
 			default:
 				break;
 		}
@@ -176,4 +217,79 @@ public class WorkerResource extends Abst
 		this.user = user;
 	}
 
+	
+	public boolean isProjectExists(String name){
+		return isExists(ResourceType.PROJECT, name);
+	}
+	
+	public ProjectResource createProject(String name){
+		ProjectResource project=(ProjectResource)create(ResourceType.PROJECT);
+		project.setName(name);
+		return project;
+	}
+	
+	public ProjectResource getProject(String name){
+		return (ProjectResource)get(ResourceType.PROJECT, name);
+	}
+	
+	public void removeProject(String name){
+		remove(ResourceType.PROJECT, name);
+	}
+	
+	public List<ProjectResource> getProjects(){
+		List<ProjectResource> result=new ArrayList<ProjectResource>();
+		List<Resource> list = get(ResourceType.PROJECT);
+		for (Resource resource : list) {
+			result.add((ProjectResource) resource);
+		}
+		return result;
+	}
+	
+	public boolean isWorkflowTemplateExists(String templateName){
+		return isExists(ResourceType.USER_WORKFLOW, templateName);
+	}
+	
+	public UserWorkflowResource createWorkflowTemplate(String templateName){
+		UserWorkflowResource workflow=(UserWorkflowResource)create(ResourceType.USER_WORKFLOW);
+		workflow.setName(templateName);
+		return workflow;
+	}
+	
+	public UserWorkflowResource getWorkflowTemplate(String templateName){
+		return (UserWorkflowResource)get(ResourceType.USER_WORKFLOW, templateName);
+	}
+	
+	public void removeWorkflowTemplate(String templateName){
+		remove(ResourceType.USER_WORKFLOW, templateName);
+	}
+	
+	public List<UserWorkflowResource> getWorkflowTemplates(){
+		List<UserWorkflowResource> result=new ArrayList<UserWorkflowResource>();
+		List<Resource> list = get(ResourceType.USER_WORKFLOW);
+		for (Resource resource : list) {
+			result.add((UserWorkflowResource) resource);
+		}
+		return result;
+	}
+	
+	public boolean isExperimentExists(String name){
+		return isExists(ResourceType.EXPERIMENT, name);
+	}
+	
+	public ExperimentResource getExperiment(String name){
+		return (ExperimentResource)get(ResourceType.EXPERIMENT, name);
+	}
+	
+	public List<ExperimentResource> getExperiments(){
+		List<ExperimentResource> result=new ArrayList<ExperimentResource>();
+		List<Resource> list = get(ResourceType.EXPERIMENT);
+		for (Resource resource : list) {
+			result.add((ExperimentResource) resource);
+		}
+		return result;
+	}
+	
+	public void removeExperiment(String experimentId){
+		remove(ResourceType.EXPERIMENT, experimentId);
+	}
 }