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