Author: mattmann
Date: Sat Aug  2 20:17:53 2014
New Revision: 1615361

URL: http://svn.apache.org/r1615361
Log:
- fix for OODT-726 Create MetFilter Task Example

Added:
    
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/FilterTask.java
    
oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/examples/TestFilterTask.java
Modified:
    oodt/trunk/CHANGES.txt

Modified: oodt/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/oodt/trunk/CHANGES.txt?rev=1615361&r1=1615360&r2=1615361&view=diff
==============================================================================
--- oodt/trunk/CHANGES.txt (original)
+++ oodt/trunk/CHANGES.txt Sat Aug  2 20:17:53 2014
@@ -4,6 +4,8 @@ Apache OODT Change Log
 Release 0.7 - Current Development
 --------------------------------------------
 
+* OODT-726 Create MetFilter Task Example (mattmann)
+
 * OODT-724 Crawler action bean config refers to WORKFLOWMGR_URL (mattmann)
 
 * OODT-723 Fix File Manager unit tests (step 3) - fix test class in 
'validation'

Added: 
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/FilterTask.java
URL: 
http://svn.apache.org/viewvc/oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/FilterTask.java?rev=1615361&view=auto
==============================================================================
--- 
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/FilterTask.java
 (added)
+++ 
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/FilterTask.java
 Sat Aug  2 20:17:53 2014
@@ -0,0 +1,90 @@
+/**
+ * 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.oodt.cas.workflow.examples;
+
+import java.util.Arrays;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.workflow.structs.WorkflowTaskConfiguration;
+import org.apache.oodt.cas.workflow.structs.WorkflowTaskInstance;
+import 
org.apache.oodt.cas.workflow.structs.exceptions.WorkflowTaskInstanceException;
+
+/**
+ * Filters dynamic {@link Metadata} from the provided metadata in the
+ * {@link #run(Metadata, WorkflowTaskConfiguration)} method.
+ * 
+ * The config parameter in {@link #run(Metadata, WorkflowTaskConfiguration)}
+ * defines metadata parameters to remove and rename via the following
+ * directives:
+ * 
+ * <ul>
+ * <li>Remove_Key - a comma separated list of keys to remove</li>
+ * <li>Rename_[Key] - set the value of this property to the new name of the
+ * [Key] parameter. E.g., having a key in the task configuration named
+ * Rename_Filename with value set to Prior_Filename will rename the key in the
+ * dynamic metadata named Filename to the new name of Prior_Filename, 
preserving
+ * its prior value.</li>
+ * </ul>
+ * 
+ * Note that the Rename keys will be evaluated first, before the Remove_Key
+ * configuration parameter is evaluated.
+ * 
+ */
+public class FilterTask implements WorkflowTaskInstance {
+
+       private final static String REMOVE_KEY = "Remove_Key";
+       private static final Logger LOG = Logger.getLogger(FilterTask.class
+                       .getName());
+
+       @Override
+       public void run(Metadata metadata, WorkflowTaskConfiguration config)
+                       throws WorkflowTaskInstanceException {
+
+               // evaluate renames
+               for (Object configKey : config.getProperties().keySet()) {
+                       String configKeyName = (String) configKey;
+                       if (configKeyName.startsWith("Rename")) {
+                               String renameOrigKeyName = 
configKeyName.split("_")[1];
+                               String renameKeyName = 
config.getProperty(configKeyName);
+                               LOG.log(Level.INFO,
+                                               "Renaming key: [" + 
renameOrigKeyName + "] to ["
+                                                               + renameKeyName 
+ "]: values: "
+                                                               + 
metadata.getAllMetadata(renameOrigKeyName));
+                               metadata.addMetadata(renameKeyName,
+                                               
metadata.getAllMetadata(renameOrigKeyName));
+                               metadata.removeMetadata(renameOrigKeyName);
+                       }
+               }
+
+               // evaluate removes
+               if (config.getProperties().containsKey(REMOVE_KEY)) {
+                       String removeMetKeyNames = 
config.getProperty(REMOVE_KEY);
+                       for (String keyName : 
Arrays.asList(removeMetKeyNames.split(","))) {
+                               LOG.log(Level.INFO,
+                                               "Removing key from workflow 
metadata: [" + keyName
+                                                               + "]: values: "
+                                                               + 
metadata.getAllMetadata(keyName));
+                               metadata.removeMetadata(keyName);
+                       }
+               }
+
+       }
+
+}

Added: 
oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/examples/TestFilterTask.java
URL: 
http://svn.apache.org/viewvc/oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/examples/TestFilterTask.java?rev=1615361&view=auto
==============================================================================
--- 
oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/examples/TestFilterTask.java
 (added)
+++ 
oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/examples/TestFilterTask.java
 Sat Aug  2 20:17:53 2014
@@ -0,0 +1,110 @@
+/**
+ * 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.oodt.cas.workflow.examples;
+
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.workflow.structs.WorkflowTaskConfiguration;
+import 
org.apache.oodt.cas.workflow.structs.exceptions.WorkflowTaskInstanceException;
+
+import junit.framework.TestCase;
+
+/**
+ * Test harness for FilterTask.
+ * 
+ */
+public class TestFilterTask extends TestCase {
+
+       private FilterTask task;
+       private Metadata dynMet;
+       private WorkflowTaskConfiguration config;
+       private static final String prodDateTime = "2014-04-07T00:00:00.000Z";
+       private static final String filename = "foo.txt";
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see junit.framework.TestCase#setUp()
+        */
+       @Override
+       protected void setUp() throws Exception {
+               super.setUp();
+               task = new FilterTask();
+               dynMet = new Metadata();
+               dynMet.addMetadata("Filename", filename);
+               dynMet.addMetadata("ProductionDateTime", prodDateTime);
+               config = new WorkflowTaskConfiguration();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see junit.framework.TestCase#tearDown()
+        */
+       @Override
+       protected void tearDown() throws Exception {
+               super.tearDown();
+               task = null;
+               dynMet = null;
+               config = null;
+       }
+
+       public void testRemove() {
+               config.addConfigProperty("Remove_Key", "Filename");
+               try {
+                       task.run(dynMet, config);
+               } catch (WorkflowTaskInstanceException e) {
+                       e.printStackTrace();
+                       fail(e.getMessage());
+               }
+               assertNotNull(dynMet);
+               assertFalse(dynMet.containsKey("Filename"));
+       }
+
+       public void testRename() {
+               config.addConfigProperty("Rename_ProductionDateTime",
+                               "Prior_ProductionDateTime");
+               try {
+                       task.run(dynMet, config);
+               } catch (WorkflowTaskInstanceException e) {
+                       e.printStackTrace();
+                       fail(e.getMessage());
+               }
+               assertNotNull(dynMet);
+               assertFalse(dynMet.containsKey("ProductionDateTime"));
+               assertTrue(dynMet.containsKey("Prior_ProductionDateTime"));
+               assertEquals(
+                               "Value: [" + 
dynMet.getMetadata("Prior_ProductionDateTime")
+                                               + "] was not equal to: [" + 
prodDateTime + "]",
+                               prodDateTime, 
dynMet.getMetadata("Prior_ProductionDateTime"));
+       }
+
+       public void testRemoveAfterRename() {
+               config.addConfigProperty("Rename_Filename", "FooName");
+               config.addConfigProperty("Remove_Key", "FooName");
+               try {
+                       task.run(dynMet, config);
+               } catch (WorkflowTaskInstanceException e) {
+                       e.printStackTrace();
+                       fail(e.getMessage());
+               }
+               assertNotNull(dynMet);
+               assertFalse(dynMet.containsKey("Filename"));
+               assertFalse(dynMet.containsKey("FooName"));
+       }
+
+}


Reply via email to