You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2012/05/17 21:09:49 UTC

svn commit: r1339804 - in /tika/trunk/tika-core/src: main/java/org/apache/tika/metadata/Metadata.java main/java/org/apache/tika/sax/XHTMLContentHandler.java test/java/org/apache/tika/metadata/TestMetadata.java

Author: nick
Date: Thu May 17 19:09:48 2012
New Revision: 1339804

URL: http://svn.apache.org/viewvc?rev=1339804&view=rev
Log:
TIKA-928 Patch from Ray Gauss to improve metadata properties setting/getting

Modified:
    tika/trunk/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java
    tika/trunk/tika-core/src/main/java/org/apache/tika/sax/XHTMLContentHandler.java
    tika/trunk/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java

Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java?rev=1339804&r1=1339803&r2=1339804&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java Thu May 17 19:09:48 2012
@@ -37,7 +37,7 @@ import org.apache.tika.metadata.Property
  * A multi-valued metadata container.
  */
 public class Metadata implements CreativeCommons, Geographic, HttpHeaders,
-        IPTC, Message, MSOffice, ClimateForcast, TIFF, TikaMetadataKeys, TikaMimeKeys,
+        Message, MSOffice, ClimateForcast, TIFF, TikaMetadataKeys, TikaMimeKeys,
         Serializable {
 
     /** Serial version UID */
@@ -178,6 +178,17 @@ public class Metadata implements Creativ
     /**
      * Returns true if named value is multivalued.
      * 
+     * @param property
+     *          metadata property
+     * @return true is named value is multivalued, false if single value or null
+     */
+    public boolean isMultiValued(final Property property) {
+        return metadata.get(property.getName()) != null && metadata.get(property.getName()).length > 1;
+    }
+    
+    /**
+     * Returns true if named value is multivalued.
+     * 
      * @param name
      *          name of metadata
      * @return true is named value is multivalued, false if single value or null
@@ -271,6 +282,17 @@ public class Metadata implements Creativ
             return null;
         }
     }
+    
+    /**
+     * Get the values associated to a metadata name.
+     * 
+     * @param property
+     *          of the metadata.
+     * @return the values associated to a metadata name.
+     */
+    public String[] getValues(final Property property) {
+        return _getValues(property.getName());
+    }
 
     /**
      * Get the values associated to a metadata name.
@@ -422,11 +444,11 @@ public class Metadata implements Creativ
      * @param value    property value
      */
     public void set(Property property, int value) {
-        if(property.getPropertyType() != Property.PropertyType.SIMPLE) {
-            throw new PropertyTypeException(Property.PropertyType.SIMPLE, property.getPropertyType());
+        if(property.getPrimaryProperty().getPropertyType() != Property.PropertyType.SIMPLE) {
+            throw new PropertyTypeException(Property.PropertyType.SIMPLE, property.getPrimaryProperty().getPropertyType());
         }
-        if(property.getValueType() != Property.ValueType.INTEGER) {
-            throw new PropertyTypeException(Property.ValueType.INTEGER, property.getValueType());
+        if(property.getPrimaryProperty().getValueType() != Property.ValueType.INTEGER) {
+            throw new PropertyTypeException(Property.ValueType.INTEGER, property.getPrimaryProperty().getValueType());
         }
         set(property, Integer.toString(value));
     }
@@ -439,12 +461,12 @@ public class Metadata implements Creativ
      * @param value    property value
      */
     public void set(Property property, double value) {
-        if(property.getPropertyType() != Property.PropertyType.SIMPLE) {
-            throw new PropertyTypeException(Property.PropertyType.SIMPLE, property.getPropertyType());
+        if(property.getPrimaryProperty().getPropertyType() != Property.PropertyType.SIMPLE) {
+            throw new PropertyTypeException(Property.PropertyType.SIMPLE, property.getPrimaryProperty().getPropertyType());
         }
-        if(property.getValueType() != Property.ValueType.REAL &&
-              property.getValueType() != Property.ValueType.RATIONAL) {
-            throw new PropertyTypeException(Property.ValueType.REAL, property.getValueType());
+        if(property.getPrimaryProperty().getValueType() != Property.ValueType.REAL &&
+              property.getPrimaryProperty().getValueType() != Property.ValueType.RATIONAL) {
+            throw new PropertyTypeException(Property.ValueType.REAL, property.getPrimaryProperty().getValueType());
         }
         set(property, Double.toString(value));
     }
@@ -457,11 +479,11 @@ public class Metadata implements Creativ
      * @param date     property value
      */
     public void set(Property property, Date date) {
-        if(property.getPropertyType() != Property.PropertyType.SIMPLE) {
-            throw new PropertyTypeException(Property.PropertyType.SIMPLE, property.getPropertyType());
+        if(property.getPrimaryProperty().getPropertyType() != Property.PropertyType.SIMPLE) {
+            throw new PropertyTypeException(Property.PropertyType.SIMPLE, property.getPrimaryProperty().getPropertyType());
         }
-        if(property.getValueType() != Property.ValueType.DATE) {
-            throw new PropertyTypeException(Property.ValueType.DATE, property.getValueType());
+        if(property.getPrimaryProperty().getValueType() != Property.ValueType.DATE) {
+            throw new PropertyTypeException(Property.ValueType.DATE, property.getPrimaryProperty().getValueType());
         }
         set(property, formatDate(date));
     }

Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/sax/XHTMLContentHandler.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/sax/XHTMLContentHandler.java?rev=1339804&r1=1339803&r2=1339804&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/sax/XHTMLContentHandler.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/sax/XHTMLContentHandler.java Thu May 17 19:09:48 2012
@@ -22,6 +22,7 @@ import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.TikaCoreProperties;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
@@ -173,7 +174,7 @@ public class XHTMLContentHandler extends
             }
             
             super.startElement(XHTML, "title", "title", EMPTY_ATTRIBUTES);
-            String title = metadata.get(Metadata.TITLE);
+            String title = metadata.get(TikaCoreProperties.TITLE);
             if (title != null && title.length() > 0) {
                 char[] titleChars = title.toCharArray();
                 super.characters(titleChars, 0, titleChars.length);

Modified: tika/trunk/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java?rev=1339804&r1=1339803&r2=1339804&view=diff
==============================================================================
--- tika/trunk/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java (original)
+++ tika/trunk/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java Thu May 17 19:09:48 2012
@@ -333,9 +333,9 @@ public class TestMetadata extends TestCa
     public void testGetSetDateUnspecifiedTimezone() {
         Metadata meta = new Metadata();    
         
-        meta.set(Metadata.DATE, "1970-01-01T00:00:01");
+        meta.set(TikaCoreProperties.DATE, "1970-01-01T00:00:01");
         assertEquals("should return string without time zone specifier because zone is not known",
-        		"1970-01-01T00:00:01", meta.get(Metadata.DATE));
+        		"1970-01-01T00:00:01", meta.get(TikaCoreProperties.DATE));
     }
     
     public void testCompositeProperty() {