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() {