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;
+ }
+
+}