airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From samin...@apache.org
Subject svn commit: r1405183 - in /airavata/trunk/modules: airavata-client/src/main/java/org/apache/airavata/client/api/ airavata-client/src/main/java/org/apache/airavata/client/impl/ registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance...
Date Fri, 02 Nov 2012 22:22:07 GMT
Author: samindaw
Date: Fri Nov  2 22:22:07 2012
New Revision: 1405183

URL: http://svn.apache.org/viewvc?rev=1405183&view=rev
Log:
add functions to the API to return workflow inputs, return all workflows (published &
private), work with published workflows from airavata api, search experiments by their name

Added:
    airavata/trunk/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/wf/WorkflowData.java
  (with props)
Modified:
    airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowManager.java
    airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowManagerImpl.java
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
    airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java

Modified: airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowManager.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowManager.java?rev=1405183&r1=1405182&r2=1405183&view=diff
==============================================================================
--- airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowManager.java
(original)
+++ airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/WorkflowManager.java
Fri Nov  2 22:22:07 2012
@@ -22,8 +22,11 @@
 package org.apache.airavata.client.api;
 
 import java.util.List;
+import java.util.Map;
 
 import org.apache.airavata.workflow.model.wf.Workflow;
+import org.apache.airavata.workflow.model.wf.WorkflowData;
+import org.apache.airavata.workflow.model.wf.WorkflowInput;
 
 public interface WorkflowManager {
 
@@ -184,6 +187,29 @@ public interface WorkflowManager {
      * @param templateID
      * @return
      */
-    public List<String> getWorkflowServiceNodeIDs(String templateID) throws AiravataAPIInvocationException;;
+    public List<String> getWorkflowServiceNodeIDs(String templateID) throws AiravataAPIInvocationException;
+    
 
+    
+    
+    //---------------------------------------------------------------------------------
+    
+    
+	public boolean isPublishedWorkflowExists(String workflowName) throws AiravataAPIInvocationException;
+	public void publishWorkflow(String workflowName, String publishWorkflowName) throws AiravataAPIInvocationException;
+	public void publishWorkflow(String workflowName) throws AiravataAPIInvocationException;
+	
+	public String getPublishedWorkflowGraphXML(String workflowName) throws AiravataAPIInvocationException;
+	public Workflow getPublishedWorkflow(String workflowName) throws AiravataAPIInvocationException;
+	public List<String> getPublishedWorkflowNames() throws AiravataAPIInvocationException;
+	public Map<String,Workflow> getPublishedWorkflows() throws AiravataAPIInvocationException;
+	
+	public void removePublishedWorkflow(String workflowName)throws AiravataAPIInvocationException;
+
+    public List<WorkflowInput> getWorkflowInputs(String workflowName) throws AiravataAPIInvocationException,
Exception;
+    
+    public List<WorkflowInput> getWorkflowInputs(WorkflowData workflowData) throws
AiravataAPIInvocationException, Exception;
+    
+    public List<WorkflowData> getAllWorkflows() throws AiravataAPIInvocationException;
+    
 }

Modified: airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowManagerImpl.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowManagerImpl.java?rev=1405183&r1=1405182&r2=1405183&view=diff
==============================================================================
--- airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowManagerImpl.java
(original)
+++ airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/WorkflowManagerImpl.java
Fri Nov  2 22:22:07 2012
@@ -22,15 +22,18 @@
 package org.apache.airavata.client.impl;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.airavata.client.AiravataClient;
 import org.apache.airavata.client.api.AiravataAPIInvocationException;
 import org.apache.airavata.client.api.WorkflowManager;
-import org.apache.airavata.registry.api.exception.RegistryException;
 import org.apache.airavata.common.utils.XMLUtil;
+import org.apache.airavata.registry.api.exception.RegistryException;
 import org.apache.airavata.workflow.model.wf.Workflow;
+import org.apache.airavata.workflow.model.wf.WorkflowData;
+import org.apache.airavata.workflow.model.wf.WorkflowInput;
 
 public class WorkflowManagerImpl implements WorkflowManager {
 	private AiravataClient client;
@@ -213,4 +216,117 @@ public class WorkflowManagerImpl impleme
         return getWorkflow(templateID).getWorkflowServiceNodeIDs();
 	}
 
+	@Override
+	public boolean isPublishedWorkflowExists(String workflowName)
+			throws AiravataAPIInvocationException {
+		try {
+			return getClient().getRegistry().isPublishedWorkflowExists(workflowName);
+		} catch (RegistryException e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public void publishWorkflow(String workflowName, String publishWorkflowName)
+			throws AiravataAPIInvocationException {
+		try {
+			getClient().getRegistry().publishWorkflow(workflowName, publishWorkflowName);
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public void publishWorkflow(String workflowName)
+			throws AiravataAPIInvocationException {
+		try {
+			getClient().getRegistry().publishWorkflow(workflowName);
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public String getPublishedWorkflowGraphXML(String workflowName)
+			throws AiravataAPIInvocationException {
+		try {
+			return getClient().getRegistry().getPublishedWorkflowGraphXML(workflowName);
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+	
+	@Override
+	public Workflow getPublishedWorkflow(String workflowName)
+			throws AiravataAPIInvocationException {
+		return getWorkflowFromString(getPublishedWorkflowGraphXML(workflowName));
+	}
+
+	@Override
+	public List<String> getPublishedWorkflowNames()
+			throws AiravataAPIInvocationException {
+		try {
+			return getClient().getRegistry().getPublishedWorkflowNames();
+		} catch (RegistryException e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public Map<String, Workflow> getPublishedWorkflows()
+			throws AiravataAPIInvocationException {
+		try {
+			Map<String, Workflow> workflows=new HashMap<String, Workflow>();
+			Map<String, String> publishedWorkflows = getClient().getRegistry().getPublishedWorkflows();
+			for (String name : publishedWorkflows.keySet()) {
+				workflows.put(name, getWorkflowFromString(publishedWorkflows.get(name)));
+			}
+			return workflows;
+		} catch (RegistryException e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public void removePublishedWorkflow(String workflowName)
+			throws AiravataAPIInvocationException {
+		try {
+			getClient().getRegistry().removePublishedWorkflow(workflowName);
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public List<WorkflowInput> getWorkflowInputs(String workflowName) throws AiravataAPIInvocationException,
Exception {
+		return getWorkflow(workflowName).getWorkflowInputs();
+	}
+
+	@Override
+	public List<WorkflowInput> getWorkflowInputs(WorkflowData workflowData) throws AiravataAPIInvocationException,
Exception {
+		if (workflowData.isPublished()){
+			return getWorkflowFromString(getClient().getRegistry().getPublishedWorkflowGraphXML(workflowData.getName())).getWorkflowInputs();
+		}else{
+			return getWorkflowInputs(workflowData.getName());
+		}
+	}
+
+	@Override
+	public List<WorkflowData> getAllWorkflows() throws AiravataAPIInvocationException
{
+		List<WorkflowData> list = new ArrayList<WorkflowData>();
+		List<String> workflowTemplateIds = getWorkflowTemplateIds();
+		try {
+			for (String id : workflowTemplateIds) {
+				list.add(new WorkflowData(id,null,false));
+			}
+			List<String> publishedWorkflowNames = getClient().getRegistry().getPublishedWorkflowNames();
+			for (String id : publishedWorkflowNames) {
+				list.add(new WorkflowData(id,null,false));
+			}
+			return list;
+		} catch (RegistryException e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
 }

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=1405183&r1=1405182&r2=1405183&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
Fri Nov  2 22:22:07 2012
@@ -22,27 +22,43 @@ package org.apache.airavata.persistance.
 
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.sql.*;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
 
-import org.apache.airavata.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.ResourceUtils;
-import org.apache.airavata.persistance.registry.jpa.resources.*;
+import org.apache.airavata.persistance.registry.jpa.resources.ApplicationDescriptorResource;
+import org.apache.airavata.persistance.registry.jpa.resources.ConfigurationResource;
+import org.apache.airavata.persistance.registry.jpa.resources.ExperimentDataResource;
+import org.apache.airavata.persistance.registry.jpa.resources.ExperimentDataRetriever;
+import org.apache.airavata.persistance.registry.jpa.resources.ExperimentMetadataResource;
+import org.apache.airavata.persistance.registry.jpa.resources.ExperimentResource;
+import org.apache.airavata.persistance.registry.jpa.resources.GatewayResource;
+import org.apache.airavata.persistance.registry.jpa.resources.GramDataResource;
+import org.apache.airavata.persistance.registry.jpa.resources.HostDescriptorResource;
+import org.apache.airavata.persistance.registry.jpa.resources.NodeDataResource;
+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.UserWorkflowResource;
+import org.apache.airavata.persistance.registry.jpa.resources.WorkerResource;
+import org.apache.airavata.persistance.registry.jpa.resources.WorkflowDataResource;
 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.RegistryException;
 import org.apache.airavata.registry.api.exception.UnimplementedRegistryOperationException;
 import org.apache.airavata.registry.api.exception.gateway.DescriptorAlreadyExistsException;
 import org.apache.airavata.registry.api.exception.gateway.DescriptorDoesNotExistsException;
@@ -1387,4 +1403,19 @@ public class AiravataJPARegistry extends
 	}
 
 
+	@Override
+	public List<ExperimentData> searchExperiments(String user, String experimentNameRegex)
+			throws RegistryException {
+		Pattern pattern = Pattern.compile(experimentNameRegex);
+		List<ExperimentData> filteredExperiments=new ArrayList<ExperimentData>();
+		List<ExperimentData> allExperimentMetaInformation = getAllExperimentMetaInformation(user);
+		for (ExperimentData experimentData : allExperimentMetaInformation) {
+			if (experimentData.getExperimentName()!=null && pattern.matcher(experimentData.getExperimentName()).find()){
+				filteredExperiments.add(experimentData);
+			}
+		}
+		return filteredExperiments;
+	}
+
+
 }

Modified: airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java?rev=1405183&r1=1405182&r2=1405183&view=diff
==============================================================================
--- airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java
(original)
+++ airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java
Fri Nov  2 22:22:07 2012
@@ -262,6 +262,8 @@ public interface ProvenanceRegistry exte
 	public ExperimentData getExperimentMetaInformation(String experimentId)throws RegistryException;
 	
 	public List<ExperimentData> getAllExperimentMetaInformation(String user)throws RegistryException;
+	
+	public List<ExperimentData> searchExperiments(String user, String experimentNameRegex)throws
RegistryException;
     
     /**
      * Return experiment ids of experiments launched by the given user
@@ -326,4 +328,5 @@ public interface ProvenanceRegistry exte
     public void updateWorkflowNodeType(WorkflowInstanceNode node, WorkflowNodeType type)
throws RegistryException;
     
     public void addWorkflowInstanceNode(String workflowInstance, String nodeId) throws RegistryException;
+    
 }
\ No newline at end of file

Added: airavata/trunk/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/wf/WorkflowData.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/wf/WorkflowData.java?rev=1405183&view=auto
==============================================================================
--- airavata/trunk/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/wf/WorkflowData.java
(added)
+++ airavata/trunk/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/wf/WorkflowData.java
Fri Nov  2 22:22:07 2012
@@ -0,0 +1,66 @@
+/*
+ *
+ * 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.workflow.model.wf;
+
+public class WorkflowData {
+	private String graphXML;
+	private boolean published;
+	private String name;
+	private boolean lazyLoaded;
+	
+	public WorkflowData(String name, String graphXml, boolean published) {
+		setName(name);
+		setGraphXML(graphXml);
+		setPublished(published);
+		setLazyLoaded(graphXml==null);
+	}
+	
+	public String getGraphXML() throws Exception {
+		if (isLazyLoaded()){
+			throw new Exception("This workflow data is lazy loaded. Please use the API to retrieve
the workflow graph!!!");
+		}
+		return graphXML;
+	}
+	public void setGraphXML(String graphXML) {
+		this.graphXML = graphXML;
+	}
+	public boolean isPublished() {
+		return published;
+	}
+	public void setPublished(boolean published) {
+		this.published = published;
+	}
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public boolean isLazyLoaded() {
+		return lazyLoaded;
+	}
+
+	private void setLazyLoaded(boolean lazyLoaded) {
+		this.lazyLoaded = lazyLoaded;
+	}
+}

Propchange: airavata/trunk/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/wf/WorkflowData.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message