org.apache.tika.xmp
Class XMPMetadata

java.lang.Object
  extended by org.apache.tika.metadata.Metadata
      extended by org.apache.tika.xmp.XMPMetadata
All Implemented Interfaces:
Serializable, ClimateForcast, CreativeCommons, Geographic, HttpHeaders, Message, MSOffice, TIFF, TikaMetadataKeys, TikaMimeKeys

public class XMPMetadata
extends Metadata

Provides a conversion of the Metadata map from Tika to the XMP data model by also providing the Metadata API for clients to ease transition. But clients can also work directly on the XMP data model, by getting the XMPMeta reference from this class. Usually the instance would be initialized by providing the Metadata object that had been returned from Tika-core which populates the XMP data model with all properties that can be converted. This class is not serializable!

See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.apache.tika.metadata.Metadata
CONTRIBUTOR, COVERAGE, CREATOR, DATE, DESCRIPTION, FORMAT, IDENTIFIER, LANGUAGE, MODIFIED, NAMESPACE_PREFIX_DELIMITER, PUBLISHER, RELATION, RIGHTS, SOURCE, SUBJECT, TITLE, TYPE
 
Fields inherited from interface org.apache.tika.metadata.CreativeCommons
LICENSE_LOCATION, LICENSE_URL, WORK_TYPE
 
Fields inherited from interface org.apache.tika.metadata.Geographic
ALTITUDE, LATITUDE, LONGITUDE
 
Fields inherited from interface org.apache.tika.metadata.HttpHeaders
CONTENT_DISPOSITION, CONTENT_ENCODING, CONTENT_LANGUAGE, CONTENT_LENGTH, CONTENT_LOCATION, CONTENT_MD5, CONTENT_TYPE, LAST_MODIFIED, LOCATION
 
Fields inherited from interface org.apache.tika.metadata.Message
MESSAGE_BCC, MESSAGE_CC, MESSAGE_FROM, MESSAGE_RECIPIENT_ADDRESS, MESSAGE_TO
 
Fields inherited from interface org.apache.tika.metadata.MSOffice
APPLICATION_NAME, APPLICATION_VERSION, AUTHOR, CATEGORY, CHARACTER_COUNT, CHARACTER_COUNT_WITH_SPACES, COMMENTS, COMPANY, CONTENT_STATUS, CREATION_DATE, EDIT_TIME, IMAGE_COUNT, KEYWORDS, LAST_AUTHOR, LAST_PRINTED, LAST_SAVED, LINE_COUNT, MANAGER, NOTES, OBJECT_COUNT, PAGE_COUNT, PARAGRAPH_COUNT, PRESENTATION_FORMAT, REVISION_NUMBER, SECURITY, SLIDE_COUNT, TABLE_COUNT, TEMPLATE, TOTAL_TIME, USER_DEFINED_METADATA_NAME_PREFIX, VERSION, WORD_COUNT
 
Fields inherited from interface org.apache.tika.metadata.ClimateForcast
ACKNOWLEDGEMENT, COMMAND_LINE, COMMENT, CONTACT, CONVENTIONS, EXPERIMENT_ID, HISTORY, INSTITUTION, MODEL_NAME_ENGLISH, PROGRAM_ID, PROJECT_ID, REALIZATION, REFERENCES, TABLE_ID
 
Fields inherited from interface org.apache.tika.metadata.TIFF
BITS_PER_SAMPLE, EQUIPMENT_MAKE, EQUIPMENT_MODEL, EXPOSURE_TIME, F_NUMBER, FLASH_FIRED, FOCAL_LENGTH, IMAGE_LENGTH, IMAGE_WIDTH, ISO_SPEED_RATINGS, ORIENTATION, ORIGINAL_DATE, RESOLUTION_HORIZONTAL, RESOLUTION_UNIT, RESOLUTION_VERTICAL, SAMPLES_PER_PIXEL, SOFTWARE
 
Fields inherited from interface org.apache.tika.metadata.TikaMetadataKeys
PROTECTED, RESOURCE_NAME_KEY
 
Fields inherited from interface org.apache.tika.metadata.TikaMimeKeys
MIME_TYPE_MAGIC, TIKA_MIME_FILE
 
Constructor Summary
XMPMetadata()
          Initializes with an empty XMP packet
XMPMetadata(Metadata meta)
           
XMPMetadata(Metadata meta, String mimetype)
          Initializes the data by converting the Metadata information to XMP.
 
Method Summary
 void add(String name, String value)
          As this API could only possibly work for simple properties in XMP, it just calls the set method, which replaces any existing value
static void deleteNamespace(String namespaceURI)
          Deletes a namespace from the registry.
 boolean equals(Object o)
          This method is not implemented, yet.
 String get(Property property)
          Returns the value (if any) of the identified metadata property.
 String get(String name)
          Returns the value of a simple property or the first one of an array.
 Date getDate(Property property)
          Returns the value of the identified Date based metadata property.
 Integer getInt(Property property)
          Returns the value of the identified Integer based metadata property.
static String getNamespacePrefix(String namespaceURI)
          Obtain the prefix for a registered namespace URI.
static Map<String,String> getNamespaces()
           
static String getNamespaceURI(String namespacePrefix)
          Obtain the URI for a registered namespace prefix.
static Map<String,String> getPrefixes()
           
 String[] getValues(Property property)
          Get the values associated to a metadata name.
 String[] getValues(String name)
          Returns the value of a simple property or all if the property is an array and the elements are of simple type.
 com.adobe.xmp.XMPMeta getXMPData()
          Provides direct access to the XMP data model, in case a client prefers to work directly on it instead of using the Metadata API
 boolean isMultiValued(Property property)
          Returns true if named value is multivalued.
 boolean isMultiValued(String name)
          Checks if the named property is an array.
 String[] names()
          For XMP it is not clear what that API should return, therefor not implemented
 void process(Metadata meta)
           
 void process(Metadata meta, String mimetype)
          Converts the Metadata information to XMP.
static String registerNamespace(String namespaceURI, String suggestedPrefix)
          Register a namespace URI with a suggested prefix.
 void remove(Property property)
           
 void remove(String name)
          Removes the given property from the XMP data.
 void set(Property property, Date date)
          Sets the date value of the identified metadata property.
 void set(Property property, double value)
          Sets the real or rational value of the identified metadata property.
 void set(Property property, int value)
          Sets the integer value of the identified metadata property.
 void set(Property property, String value)
          Sets the value of the identified metadata property.
 void set(Property property, String[] values)
          Sets array properties.
 void set(String name, String value)
          Sets the given property.
 void setAll(Properties properties)
          It will set all simple and array properties that have QName keys in registered namespaces.
 int size()
          Returns the number of top-level namespaces
 String toString()
          Serializes the XMP data in compact form without packet wrapper
 
Methods inherited from class org.apache.tika.metadata.Metadata
add
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

XMPMetadata

public XMPMetadata()
Initializes with an empty XMP packet


XMPMetadata

public XMPMetadata(Metadata meta)
            throws TikaException
Throws:
TikaException
See Also:
But the mimetype is retrieved from the metadata map.

XMPMetadata

public XMPMetadata(Metadata meta,
                   String mimetype)
            throws TikaException
Initializes the data by converting the Metadata information to XMP. If a mimetype is provided, a specific converter can be used, that converts all available metadata. If there is no mimetype provided or no specific converter available a generic conversion is done which will convert only those properties that are in known namespaces and are using the correct prefixes

Parameters:
meta - the Metadata information from Tika-core
mimetype - mimetype information
Throws:
In - case an error occured during conversion
TikaException
Method Detail

process

public void process(Metadata meta)
             throws TikaException
Throws:
TikaException
See Also:
But the mimetype is retrieved from the metadata map.

process

public void process(Metadata meta,
                    String mimetype)
             throws TikaException
Converts the Metadata information to XMP. If a mimetype is provided, a specific converter can be used, that converts all available metadata. If there is no mimetype provided or no specific converter available a generic conversion is done which will convert only those properties that are in known namespaces and are using the correct prefixes

Parameters:
meta - the Metadata information from Tika-core
mimetype - mimetype information
Throws:
In - case an error occured during conversion
TikaException

getXMPData

public com.adobe.xmp.XMPMeta getXMPData()
Provides direct access to the XMP data model, in case a client prefers to work directly on it instead of using the Metadata API

Returns:
the "internal" XMP data object

registerNamespace

public static String registerNamespace(String namespaceURI,
                                       String suggestedPrefix)
                                throws com.adobe.xmp.XMPException
Register a namespace URI with a suggested prefix. It is not an error if the URI is already registered, no matter what the prefix is. If the URI is not registered but the suggested prefix is in use, a unique prefix is created from the suggested one. The actual registeed prefix is always returned. The function result tells if the registered prefix is the suggested one. Note: No checking is presently done on either the URI or the prefix.

Parameters:
namespaceURI - The URI for the namespace. Must be a valid XML URI.
suggestedPrefix - The suggested prefix to be used if the URI is not yet registered. Must be a valid XML name.
Returns:
Returns the registered prefix for this URI, is equal to the suggestedPrefix if the namespace hasn't been registered before, otherwise the existing prefix.
Throws:
com.adobe.xmp.XMPException - If the parameters are not accordingly set

getNamespacePrefix

public static String getNamespacePrefix(String namespaceURI)
Obtain the prefix for a registered namespace URI. It is not an error if the namespace URI is not registered.

Parameters:
namespaceURI - The URI for the namespace. Must not be null or the empty string.
Returns:
Returns the prefix registered for this namespace URI or null.

getNamespaceURI

public static String getNamespaceURI(String namespacePrefix)
Obtain the URI for a registered namespace prefix. It is not an error if the namespace prefix is not registered.

Parameters:
namespacePrefix - The prefix for the namespace. Must not be null or the empty string.
Returns:
Returns the URI registered for this prefix or null.

getNamespaces

public static Map<String,String> getNamespaces()
Returns:
Returns the registered prefix/namespace-pairs as map, where the keys are the namespaces and the values are the prefixes.

getPrefixes

public static Map<String,String> getPrefixes()
Returns:
Returns the registered namespace/prefix-pairs as map, where the keys are the prefixes and the values are the namespaces.

deleteNamespace

public static void deleteNamespace(String namespaceURI)
Deletes a namespace from the registry.

Does nothing if the URI is not registered, or if the namespaceURI parameter is null or the empty string.

Note: Not yet implemented.

Parameters:
namespaceURI - The URI for the namespace.

isMultiValued

public boolean isMultiValued(Property property)
Description copied from class: Metadata
Returns true if named value is multivalued.

Overrides:
isMultiValued in class Metadata
Parameters:
property - metadata property
Returns:
true is named value is multivalued, false if single value or null
See Also:
isMultiValued(java.lang.String)

isMultiValued

public boolean isMultiValued(String name)
Checks if the named property is an array.

Overrides:
isMultiValued in class Metadata
Parameters:
name - name of metadata
Returns:
true is named value is multivalued, false if single value or null
See Also:
Metadata.isMultiValued(java.lang.String)

names

public String[] names()
For XMP it is not clear what that API should return, therefor not implemented

Overrides:
names in class Metadata
Returns:
Metadata names

get

public String get(String name)
Returns the value of a simple property or the first one of an array. The given name must contain a namespace prefix of a registered namespace.

Overrides:
get in class Metadata
Parameters:
name - of the metadata.
Returns:
the value associated to the specified metadata name.
See Also:
Metadata.get(java.lang.String)

get

public String get(Property property)
Description copied from class: Metadata
Returns the value (if any) of the identified metadata property.

Overrides:
get in class Metadata
Parameters:
property - property definition
Returns:
property value, or null if the property is not set
See Also:
get(java.lang.String)

getInt

public Integer getInt(Property property)
Description copied from class: Metadata
Returns the value of the identified Integer based metadata property.

Overrides:
getInt in class Metadata
Parameters:
property - simple integer property definition
Returns:
property value as a Integer, or null if the property is not set, or not a valid Integer
See Also:
get(java.lang.String)

getDate

public Date getDate(Property property)
Description copied from class: Metadata
Returns the value of the identified Date based metadata property.

Overrides:
getDate in class Metadata
Parameters:
property - simple date property definition
Returns:
property value as a Date, or null if the property is not set, or not a valid Date
See Also:
get(java.lang.String)

getValues

public String[] getValues(Property property)
Description copied from class: Metadata
Get the values associated to a metadata name.

Overrides:
getValues in class Metadata
Parameters:
property - of the metadata.
Returns:
the values associated to a metadata name.
See Also:
getValues(java.lang.String)

getValues

public String[] getValues(String name)
Returns the value of a simple property or all if the property is an array and the elements are of simple type. The given name must contain a namespace prefix of a registered namespace.

Overrides:
getValues in class Metadata
Parameters:
name - of the metadata.
Returns:
the values associated to a metadata name.
See Also:
Metadata.getValues(java.lang.String)

add

public void add(String name,
                String value)
As this API could only possibly work for simple properties in XMP, it just calls the set method, which replaces any existing value

Overrides:
add in class Metadata
Parameters:
name - the metadata name.
value - the metadata value.
See Also:
Metadata.add(java.lang.String, java.lang.String)

set

public void set(String name,
                String value)
Sets the given property. If the property already exists, it is overwritten. Only simple properties that use a registered prefix are stored in the XMP.

Overrides:
set in class Metadata
Parameters:
name - the metadata name.
value - the metadata value.
See Also:
Metadata.set(java.lang.String, java.lang.String)

set

public void set(Property property,
                String value)
Description copied from class: Metadata
Sets the value of the identified metadata property.

Overrides:
set in class Metadata
Parameters:
property - property definition
value - property value
See Also:
set(java.lang.String, java.lang.String)

set

public void set(Property property,
                int value)
Description copied from class: Metadata
Sets the integer value of the identified metadata property.

Overrides:
set in class Metadata
Parameters:
property - simple integer property definition
value - property value
See Also:
set(java.lang.String, java.lang.String)

set

public void set(Property property,
                double value)
Description copied from class: Metadata
Sets the real or rational value of the identified metadata property.

Overrides:
set in class Metadata
Parameters:
property - simple real or simple rational property definition
value - property value
See Also:
set(java.lang.String, java.lang.String)

set

public void set(Property property,
                Date date)
Description copied from class: Metadata
Sets the date value of the identified metadata property.

Overrides:
set in class Metadata
Parameters:
property - simple integer property definition
date - property value
See Also:
set(java.lang.String, java.lang.String)

set

public void set(Property property,
                String[] values)
Sets array properties. If the property already exists, it is overwritten. Only array properties that use a registered prefix are stored in the XMP.

Overrides:
set in class Metadata
Parameters:
property - property definition
values - property values
See Also:
Metadata.set(org.apache.tika.metadata.Property, java.lang.String[])

setAll

public void setAll(Properties properties)
It will set all simple and array properties that have QName keys in registered namespaces.

Overrides:
setAll in class Metadata
Parameters:
properties - properties to copy from
See Also:
Metadata.setAll(java.util.Properties)

remove

public void remove(Property property)
See Also:
remove(java.lang.String)

remove

public void remove(String name)
Removes the given property from the XMP data. If it is a complex property the whole subtree is removed

Overrides:
remove in class Metadata
Parameters:
name - metadata name to remove
See Also:
Metadata.remove(java.lang.String)

size

public int size()
Returns the number of top-level namespaces

Overrides:
size in class Metadata
Returns:
number of metadata names

equals

public boolean equals(Object o)
This method is not implemented, yet. It is very tedious to check for semantic equality of XMP packets

Overrides:
equals in class Metadata

toString

public String toString()
Serializes the XMP data in compact form without packet wrapper

Overrides:
toString in class Metadata
See Also:
Metadata.toString()


Copyright © 2007-2012 The Apache Software Foundation. All Rights Reserved.