Author: mattmann
Date: Sat Jun 22 17:29:43 2013
New Revision: 1495761

URL: http://svn.apache.org/r1495761
Log:
- fix for OODT-639: Add a versioner based on Product Type Metadata

Added:
    
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/versioning/ProductTypeMetVersioner.java
    
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/versioning/TestProductTypeMetVersioner.java
Modified:
    oodt/trunk/CHANGES.txt
    oodt/trunk/filemgr/src/main/resources/examples/core/product-types.xml
    oodt/trunk/filemgr/src/main/resources/examples/geo/product-types.xml
    oodt/trunk/filemgr/src/main/resources/examples/trace/product-types.xml

Modified: oodt/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/oodt/trunk/CHANGES.txt?rev=1495761&r1=1495760&r2=1495761&view=diff
==============================================================================
--- oodt/trunk/CHANGES.txt (original)
+++ oodt/trunk/CHANGES.txt Sat Jun 22 17:29:43 2013
@@ -4,6 +4,8 @@ Apache OODT Change Log
 Release 0.6 - Current Development
 --------------------------------------------
 
+* OODT-639 Add a versioner based on Product Type Metadata (mattmann)
+
 * OODT-638 Include more provenance metadata in trace product type (mattmann)
 
 * OODT-637 Geo Product Type policy includes duplicative elements (mattmann)

Added: 
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/versioning/ProductTypeMetVersioner.java
URL: 
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/versioning/ProductTypeMetVersioner.java?rev=1495761&view=auto
==============================================================================
--- 
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/versioning/ProductTypeMetVersioner.java
 (added)
+++ 
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/versioning/ProductTypeMetVersioner.java
 Sat Jun 22 17:29:43 2013
@@ -0,0 +1,56 @@
+/**
+ * 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.filemgr.versioning;
+
+//OODT imports
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.filemgr.structs.exceptions.VersioningException;
+import org.apache.oodt.cas.metadata.Metadata;
+
+/**
+ * 
+ * A simple versioner that lets a user define the filePathSpec needed by the
+ * {@link MetadataBasedFileVersioner} in a Product's ProductType metadata. Use
+ * the key name filePathSpec, and then provide it for easily configurable use 
of
+ * the {@link MetadataBasedFileVersioner}.
+ * 
+ * @author mattmann
+ * @version $Revision$
+ * 
+ */
+public class ProductTypeMetVersioner extends MetadataBasedFileVersioner {
+
+  public ProductTypeMetVersioner() {
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.oodt.cas.filemgr.versioning.MetadataBasedFileVersioner#
+   * createDataStoreReferences(org.apache.oodt.cas.filemgr.structs.Product,
+   * org.apache.oodt.cas.metadata.Metadata)
+   */
+  @Override
+  public void createDataStoreReferences(Product product, Metadata metadata)
+      throws VersioningException {
+    setFilePathSpec(product.getProductType().getTypeMetadata()
+        .getMetadata("filePathSpec"));
+    super.createDataStoreReferences(product, metadata);
+  }
+
+}

Modified: oodt/trunk/filemgr/src/main/resources/examples/core/product-types.xml
URL: 
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/resources/examples/core/product-types.xml?rev=1495761&r1=1495760&r2=1495761&view=diff
==============================================================================
--- oodt/trunk/filemgr/src/main/resources/examples/core/product-types.xml 
(original)
+++ oodt/trunk/filemgr/src/main/resources/examples/core/product-types.xml Sat 
Jun 22 17:29:43 2013
@@ -39,6 +39,13 @@
         <key>ProductType</key>
         <val>GenericFile</val>
       </keyval>
+      <!-- if you are using the 
org.apache.oodt.cas.filemgr.versioning.ProductTypeMetVersioner 
+           you can set a met key like below to define your filePathSpec
+      <keyval>
+        <key>filePathSpec</key>
+        <val>/[Filename]</val>
+      </keyval>
+      -->
     </metadata>
     <metExtractors>
       <extractor

Modified: oodt/trunk/filemgr/src/main/resources/examples/geo/product-types.xml
URL: 
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/resources/examples/geo/product-types.xml?rev=1495761&r1=1495760&r2=1495761&view=diff
==============================================================================
--- oodt/trunk/filemgr/src/main/resources/examples/geo/product-types.xml 
(original)
+++ oodt/trunk/filemgr/src/main/resources/examples/geo/product-types.xml Sat 
Jun 22 17:29:43 2013
@@ -40,6 +40,13 @@
         <key>ProductType</key>
         <val>LocationAwareProduct</val>
       </keyval>
+      <!-- if you are using the 
org.apache.oodt.cas.filemgr.versioning.ProductTypeMetVersioner 
+           you can set a met key like below to define your filePathSpec
+      <keyval>
+        <key>filePathSpec</key>
+        <val>/[Filename]</val>
+      </keyval>
+      -->      
     </metadata>
     <metExtractors>
       <extractor

Modified: oodt/trunk/filemgr/src/main/resources/examples/trace/product-types.xml
URL: 
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/resources/examples/trace/product-types.xml?rev=1495761&r1=1495760&r2=1495761&view=diff
==============================================================================
--- oodt/trunk/filemgr/src/main/resources/examples/trace/product-types.xml 
(original)
+++ oodt/trunk/filemgr/src/main/resources/examples/trace/product-types.xml Sat 
Jun 22 17:29:43 2013
@@ -25,7 +25,29 @@
      turn off trimming (now done by default), include the following attribute 
with your                                                                       
      
      description definition: trim="false"                                      
                                                                                
     
      -->
-    <description>A traceable product for use in PCS Pedigree 
Testing.</description>
+    <description>A traceable product for use in provenance and algorithm 
execution.</description>
+    <!--
+      Global aggregate product type metadata: you can declare this in the
+      same way you'd wire together a CAS met file, even using multiple values
+      per key.
+      
+      This metadata can be looked up via the Product Type API, and also used
+      in browsers and so forth to display global metadata about the collection
+      of Products part of this product type.
+    -->
+    <metadata>
+      <keyval>
+        <key>ProductType</key>
+        <val>LocationAwareProduct</val>
+      </keyval>
+      <!-- if you are using the 
org.apache.oodt.cas.filemgr.versioning.ProductTypeMetVersioner 
+           you can set a met key like below to define your filePathSpec
+      <keyval>
+        <key>filePathSpec</key>
+        <val>/[Filename]</val>
+      </keyval>
+      -->      
+    </metadata>
     <metExtractors>
       <extractor
         
class="org.apache.oodt.cas.filemgr.metadata.extractors.CoreMetExtractor">

Added: 
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/versioning/TestProductTypeMetVersioner.java
URL: 
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/versioning/TestProductTypeMetVersioner.java?rev=1495761&view=auto
==============================================================================
--- 
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/versioning/TestProductTypeMetVersioner.java
 (added)
+++ 
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/versioning/TestProductTypeMetVersioner.java
 Sat Jun 22 17:29:43 2013
@@ -0,0 +1,65 @@
+/**
+ * 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.filemgr.versioning;
+
+//OODT imports
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.filemgr.structs.Reference;
+import org.apache.oodt.cas.metadata.Metadata;
+
+//Junit imports
+import junit.framework.TestCase;
+
+/**
+ * 
+ * Test harness for ProductTypeMetVersioner.
+ * 
+ * @author mattmann
+ * @version $Revision$
+ * 
+ */
+public class TestProductTypeMetVersioner extends TestCase {
+
+  private static final String expected = 
"file:/data/archive/130622/somefile.txt";
+
+  public void testVersion() {
+    Metadata met = new Metadata();
+    met.addMetadata("Filename", "somefile.txt");
+    met.addMetadata("AcquisitionDate", "130622");
+    Product prod = Product.getDefaultFlatProduct("foo", "urn:sometype:foo");
+    prod.getProductType().setProductRepositoryPath("file:///data/archive");
+    prod.getProductType().getTypeMetadata()
+        .addMetadata("filePathSpec", "/[AcquisitionDate]/[Filename]");
+    prod.getProductReferences().add(
+        new Reference("file:///data/staging/somefile.txt", null, 4L));
+    ProductTypeMetVersioner versioner = new ProductTypeMetVersioner();
+    try {
+      versioner.createDataStoreReferences(prod, met);
+    } catch (Exception e) {
+      fail(e.getMessage());
+    }
+
+    assertNotNull(prod);
+    assertNotNull(prod.getProductReferences());
+    assertEquals(1, prod.getProductReferences().size());
+    assertEquals(expected, prod.getProductReferences().get(0)
+        .getDataStoreReference());
+
+  }
+
+}


Reply via email to