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/07/11 09:52:11 UTC

svn commit: r1360044 - in /incubator/airavata/trunk/samples/provenance-registry-handler: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/airavata/ src/main/java/org/apache/airavata/samples/ src/mai...

Author: samindaw
Date: Wed Jul 11 07:52:11 2012
New Revision: 1360044

URL: http://svn.apache.org/viewvc?rev=1360044&view=rev
Log:
adding provenance handler sample

Added:
    incubator/airavata/trunk/samples/provenance-registry-handler/
    incubator/airavata/trunk/samples/provenance-registry-handler/pom.xml
    incubator/airavata/trunk/samples/provenance-registry-handler/src/
    incubator/airavata/trunk/samples/provenance-registry-handler/src/main/
    incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/
    incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/
    incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/
    incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/airavata/
    incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/airavata/samples/
    incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/airavata/samples/registry/
    incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/airavata/samples/registry/proveranance/
    incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/airavata/samples/registry/proveranance/CustomProvenanceDataHandler.java

Added: incubator/airavata/trunk/samples/provenance-registry-handler/pom.xml
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/provenance-registry-handler/pom.xml?rev=1360044&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/provenance-registry-handler/pom.xml (added)
+++ incubator/airavata/trunk/samples/provenance-registry-handler/pom.xml Wed Jul 11 07:52:11 2012
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--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. -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <groupId>org.apache.airavata</groupId>
+        <artifactId>airavata</artifactId>
+        <version>0.4-incubating-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>provenance-registry-handler</artifactId>
+    <packaging>jar</packaging>
+    <name>Provenance Registry Handler Sample</name>
+    <url>http://incubator.apache.org/airavata/</url>
+
+    <!-- Edit the following properties. -->
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${surefire.version}</version>
+                <configuration>
+                    <includes>
+                        <include>**/*Suite.java</include>
+                    </includes>
+                    <excludes>
+                        <exclude>**/*Test.java</exclude>
+                        <exclude>**/*Tests.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+
+        <!-- AIRAVATA modules -->
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-registry-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-gfac-schema-utils</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-common-registry-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+</project>

Added: incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/airavata/samples/registry/proveranance/CustomProvenanceDataHandler.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/airavata/samples/registry/proveranance/CustomProvenanceDataHandler.java?rev=1360044&view=auto
==============================================================================
--- incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/airavata/samples/registry/proveranance/CustomProvenanceDataHandler.java (added)
+++ incubator/airavata/trunk/samples/provenance-registry-handler/src/main/java/org/apache/airavata/samples/registry/proveranance/CustomProvenanceDataHandler.java Wed Jul 11 07:52:11 2012
@@ -0,0 +1,285 @@
+package org.apache.airavata.samples.registry.proveranance;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.airavata.common.registry.api.exception.RegistryException;
+import org.apache.airavata.commons.gfac.type.ActualParameter;
+import org.apache.airavata.registry.api.AiravataProvenanceRegistry;
+import org.apache.airavata.registry.api.impl.WorkflowExecutionImpl;
+import org.apache.airavata.registry.api.workflow.WorkflowExecution;
+import org.apache.airavata.registry.api.workflow.WorkflowIOData;
+import org.apache.airavata.registry.api.workflow.WorkflowInstance;
+import org.apache.airavata.registry.api.workflow.WorkflowInstanceStatus;
+import org.apache.airavata.registry.api.workflow.WorkflowInstanceStatus.ExecutionStatus;
+import org.apache.airavata.registry.api.workflow.WorkflowServiceIOData;
+
+public class CustomProvenanceDataHandler extends AiravataProvenanceRegistry {
+	private Map<String,List<WorkflowServiceIOData>> iData=new HashMap<String, List<WorkflowServiceIOData>>();
+	private Map<String,List<WorkflowServiceIOData>> oData=new HashMap<String, List<WorkflowServiceIOData>>();
+	
+	private Map<String,String> metadata=new HashMap<String, String>();
+	private Map<String,String> users=new HashMap<String, String>();
+	
+	private Map<String,WorkflowInstanceStatus> status=new HashMap<String, WorkflowInstanceStatus>();
+	private Map<String,List<ActualParameter>> output=new HashMap<String, List<ActualParameter>>();
+	private Map<String,Map<String,String>> outputValue=new HashMap<String, Map<String,String>>();
+
+	private Map<String,String> name=new HashMap<String, String>();
+	
+	private List<WorkflowServiceIOData> getData(String expId,Map<String,List<WorkflowServiceIOData>> data){
+		if (!data.containsKey(expId)){
+			data.put(expId, new ArrayList<WorkflowServiceIOData>());
+		}
+		return data.get(expId);
+	}
+	
+	private WorkflowInstanceStatus getStatus(String expId){
+		if (status.containsKey(expId)){
+			return status.get(expId);
+		}
+		return null;
+	}
+	
+	private String getUser(String expId){
+		return getString(expId,users);
+	}
+	
+	private String getMetadata(String expId){
+		return getString(expId,metadata);
+	}
+	
+	private String getName(String expId){
+		return getString(expId,name);
+	}
+	
+	private String getString(String expId,Map<String,String> data){
+		if (data.containsKey(expId)){
+			return data.get(expId);
+		}
+		return null;
+	}
+	
+	private List<ActualParameter> getOutput(String expId){
+		if (!output.containsKey(expId)){
+			output.put(expId, new ArrayList<ActualParameter>());
+		}
+		return output.get(expId);
+	}
+	
+	private Map<String,String> getOutputValues(String expId){
+		if (!outputValue.containsKey(expId)){
+			outputValue.put(expId, new HashMap<String,String>());
+		}
+		return outputValue.get(expId);
+	}
+	
+	private List<WorkflowServiceIOData> getIData(String expId){
+		return getData(expId,iData);
+	}
+	
+	private List<WorkflowServiceIOData> getOData(String expId){
+		return getData(expId,oData);
+	}
+	
+	public CustomProvenanceDataHandler(String user) {
+		super(user);
+	}
+
+	private String makeId(WorkflowServiceIOData data){
+		return data.getExperimentId()+":"+data.getWorkflowId()+":"+data.getNodeId();
+	}
+	
+	@Override
+	public String saveOutput(String workflowId, List<ActualParameter> parameters)
+			throws RegistryException {
+		output.put(workflowId,parameters);
+		return workflowId;
+	}
+
+	@Override
+	public List<ActualParameter> loadOutput(String workflowId)
+			throws RegistryException {
+		return getOutput(workflowId);
+	}
+
+	@Override
+	public boolean saveWorkflowExecutionServiceInput(
+			WorkflowServiceIOData workflowInputData) throws RegistryException {
+		getIData(makeId(workflowInputData)).add(workflowInputData);
+		return true;
+	}
+
+	@Override
+	public boolean saveWorkflowExecutionServiceOutput(
+			WorkflowServiceIOData workflowOutputData) throws RegistryException {
+		getOData(makeId(workflowOutputData)).add(workflowOutputData);
+		return true;
+	}
+
+	@Override
+	public List<WorkflowServiceIOData> searchWorkflowExecutionServiceInput(
+			String experimentIdRegEx, String workflowNameRegEx,
+			String nodeNameRegEx) throws RegistryException {
+		//right now just returning the first element
+		return iData.values().iterator().next();
+	}
+
+	@Override
+	public List<WorkflowServiceIOData> searchWorkflowExecutionServiceOutput(
+			String experimentIdRegEx, String workflowNameRegEx,
+			String nodeNameRegEx) throws RegistryException {
+		//right now just returning the first element
+		return oData.values().iterator().next();
+	}
+
+	@Override
+	public boolean saveWorkflowExecutionName(String experimentId,
+			String workflowIntanceName) throws RegistryException {
+		name.put(experimentId, workflowIntanceName);
+		return true;
+	}
+
+	@Override
+	public boolean saveWorkflowExecutionStatus(String experimentId,
+			WorkflowInstanceStatus status) throws RegistryException {
+		this.status.put(experimentId, status);
+		return true;
+	}
+
+	@Override
+	public boolean saveWorkflowExecutionStatus(String experimentId,
+			ExecutionStatus status) throws RegistryException {
+		this.status.put(experimentId, new WorkflowInstanceStatus(new WorkflowInstance(experimentId,experimentId),status));
+		return true;
+	}
+
+	@Override
+	public WorkflowInstanceStatus getWorkflowExecutionStatus(String experimentId)
+			throws RegistryException {
+		return getStatus(experimentId);
+	}
+
+	@Override
+	public boolean saveWorkflowExecutionOutput(String experimentId,
+			String outputNodeName, String output) throws RegistryException {
+		getOutputValues(experimentId).put(outputNodeName, output);
+		return true;
+	}
+
+	@Override
+	public boolean saveWorkflowExecutionOutput(String experimentId,
+			WorkflowIOData data) throws RegistryException {
+		getOutputValues(experimentId).put(data.getNodeId(), data.getValue());
+		return false;
+	}
+
+	@Override
+	public WorkflowIOData getWorkflowExecutionOutput(String experimentId,
+			String outputNodeName) throws RegistryException {
+		if (getOutputValues(experimentId).containsKey(outputNodeName)){
+			return new WorkflowIOData(outputNodeName, getOutputValues(experimentId).get(outputNodeName));
+		}
+		return null;
+	}
+
+	@Override
+	public List<WorkflowIOData> getWorkflowExecutionOutput(String experimentId)
+			throws RegistryException {
+		List<WorkflowIOData> result=new ArrayList<WorkflowIOData>();
+		Map<String, String> outputValues = getOutputValues(experimentId);
+		for (String v : outputValues.keySet()) {
+			result.add(new WorkflowIOData(v,outputValues.get(v)));
+		}
+		return result;
+	}
+
+	@Override
+	public String[] getWorkflowExecutionOutputNames(String exeperimentId)
+			throws RegistryException {
+		return getOutputValues(exeperimentId).keySet().toArray(new String[]{});
+	}
+
+	@Override
+	public boolean saveWorkflowExecutionUser(String experimentId, String user)
+			throws RegistryException {
+		users.put(experimentId, user);
+		return true;
+	}
+
+	@Override
+	public String getWorkflowExecutionUser(String experimentId)
+			throws RegistryException {
+		return getUser(experimentId);
+	}
+
+	@Override
+	public String getWorkflowExecutionName(String experimentId)
+			throws RegistryException {
+		return getName(experimentId);
+	}
+
+	@Override
+	public WorkflowExecution getWorkflowExecution(String experimentId)
+			throws RegistryException {
+		WorkflowExecutionImpl w = new WorkflowExecutionImpl();
+		w.setExperimentId(experimentId);
+		w.setWorkflowInstanceName(getWorkflowExecutionName(experimentId));
+		w.setExecutionStatus(getWorkflowExecutionStatus(experimentId));
+		w.setMetadata(getWorkflowExecutionMetadata(experimentId));
+		w.setOutput(getWorkflowExecutionOutput(experimentId));
+		w.setServiceInput(searchWorkflowExecutionServiceInput(experimentId, ".*", ".*"));
+		w.setServiceOutput(searchWorkflowExecutionServiceOutput(experimentId, ".*", ".*"));
+		w.setUser(getWorkflowExecutionUser(experimentId));
+		w.setTopic(experimentId);
+		return w;
+	}
+
+	@Override
+	public List<String> getWorkflowExecutionIdByUser(String user)
+			throws RegistryException {
+		//proper filtering needs to be done based on given the user
+		return Arrays.asList(status.keySet().toArray(new String[]{}));
+	}
+
+	@Override
+	public List<WorkflowExecution> getWorkflowExecutionByUser(String user)
+			throws RegistryException {
+		List<WorkflowExecution> result=new ArrayList<WorkflowExecution>();
+		List<String> workflowExecutionIdByUser = getWorkflowExecutionIdByUser(user);
+		for (String id : workflowExecutionIdByUser) {
+			result.add(getWorkflowExecution(id));
+		}
+		return result;
+	}
+
+	@Override
+	public List<WorkflowExecution> getWorkflowExecutionByUser(String user,
+			int pageSize, int pageNo) throws RegistryException {
+		List<WorkflowExecution> result=new ArrayList<WorkflowExecution>();
+		List<String> workflowExecutionIdByUser = getWorkflowExecutionIdByUser(user);
+		int startIndex=pageSize*(pageNo-1);
+		int endIndex=startIndex+pageSize-1;
+		for(int i=startIndex;i<workflowExecutionIdByUser.size() && i<=endIndex;i++){
+			result.add(getWorkflowExecution(workflowExecutionIdByUser.get(i)));
+		}
+		return result;
+	}
+
+	@Override
+	public String getWorkflowExecutionMetadata(String experimentId)
+			throws RegistryException {
+		return getMetadata(experimentId);
+	}
+
+	@Override
+	public boolean saveWorkflowExecutionMetadata(String experimentId,
+			String metadata) throws RegistryException {
+		this.metadata.put(experimentId, metadata);
+		return true;
+	}
+
+}