org.apache.jempbox.xmp

Class XMPMetadata

public class XMPMetadata extends Object

This class represents the top level XMP data structure and gives access to the various schemas that are available as part of the XMP specification.

Version: $Revision: 1.10 $

Author: Ben Litchfield

Field Summary
protected Stringencoding
The encoding of the XMP document.
static StringENCODING_UTF16BE
Supported encoding for persisted XML.
static StringENCODING_UTF16LE
Supported encoding for persisted XML.
static StringENCODING_UTF8
Supported encoding for persisted XML.
protected MapnsMappings
A mapping of namespaces.
protected DocumentxmpDocument
The DOM representation of the metadata.
Constructor Summary
XMPMetadata()
Default constructor, creates blank XMP doc.
XMPMetadata(Document doc)
Constructor from an existing XML document.
Method Summary
XMPSchemaBasicJobTicketaddBasicJobTicketSchema()
Add a new Job Ticket schema.
XMPSchemaBasicaddBasicSchema()
Create and add a new Basic Schema to this metadata.
XMPSchemaDublinCoreaddDublinCoreSchema()
Create and add a new Dublin Core Schema to this metadata.
XMPSchemaDynamicMediaaddDynamicMediaSchema()
Add a new Dynamic Media schema.
XMPSchemaIptc4xmpCoreaddIptc4xmpCoreSchema()
Create and add a new IPTC schema to this metadata.
XMPSchemaMediaManagementaddMediaManagementSchema()
Add a new Media Management schema.
XMPSchemaPagedTextaddPagedTextSchema()
Add a new Paged Text schema.
XMPSchemaPDFaddPDFSchema()
Create and add a new PDF Schema to this metadata.
XMPSchemaPhotoshopaddPhotoshopSchema()
Create and add a new Photoshop schema to this metadata.
XMPSchemaRightsManagementaddRightsManagementSchema()
Add a new Rights Managment schema.
voidaddSchema(XMPSchema schema)
Add a custom schema to the root rdf.
voidaddXMLNSMapping(String namespace, Class xmpSchema)
Will add a XMPSchema to the set of identified schemas.
byte[]asByteArray()
Get the XML document as a byte array.
protected XMPSchemabasicAddSchema(XMPSchema schema)
Generic add schema method.
XMPSchemaBasicJobTicketgetBasicJobTicketSchema()
Get the Job Ticket Schema.
XMPSchemaBasicgetBasicSchema()
Get the Basic Schema.
XMPSchemaDublinCoregetDublinCoreSchema()
Get the Dublin Core Schema.
XMPSchemaDynamicMediagetDynamicMediaSchema()
Get the Dynamic Media Schema.
StringgetEncoding()
Get the current encoding that will be used to write the XML.
XMPSchemaMediaManagementgetMediaManagementSchema()
Get the Media Management Schema.
XMPSchemaPagedTextgetPagedTextSchema()
Get the Paged Text Schema.
XMPSchemaPDFgetPDFSchema()
Get the PDF Schema.
XMPSchemaRightsManagementgetRightsManagementSchema()
Get the Schema Rights Schema.
XMPSchemagetSchemaByClass(Class targetSchema)
Tries to retrieve a schema from this by classname.
ListgetSchemas()
This will get a list of XMPSchema(or subclass) objects.
ListgetSchemasByNamespaceURI(String namespaceURI)
Will return all schemas that fit the given namespaceURI.
DocumentgetXMPDocument()
Get the XML document from this object.
booleanhasUnknownSchema()
This will return true if the XMP contains an unknown schema.
static XMPMetadataload(String file)
Load metadata from the filesystem.
static XMPMetadataload(InputSource is)
Load a schema from an input source.
static XMPMetadataload(InputStream is)
Load metadata from the filesystem.
static voidmain(String[] args)
Test main program.
voidmerge(XMPMetadata metadata)
Merge this metadata with the given metadata object.
voidsave(String file)
Save the XMP document to a file.
voidsave(OutputStream outStream)
Save the XMP document to a stream.
voidsetEncoding(String xmlEncoding)
The encoding used to write the XML.

Field Detail

encoding

protected String encoding
The encoding of the XMP document. Default is UTF8.

ENCODING_UTF16BE

public static final String ENCODING_UTF16BE
Supported encoding for persisted XML.

ENCODING_UTF16LE

public static final String ENCODING_UTF16LE
Supported encoding for persisted XML.

ENCODING_UTF8

public static final String ENCODING_UTF8
Supported encoding for persisted XML.

nsMappings

protected Map nsMappings
A mapping of namespaces.

xmpDocument

protected Document xmpDocument
The DOM representation of the metadata.

Constructor Detail

XMPMetadata

public XMPMetadata()
Default constructor, creates blank XMP doc.

Throws: IOException If there is an error creating the initial document.

XMPMetadata

public XMPMetadata(Document doc)
Constructor from an existing XML document.

Parameters: doc The root XMP document.

Method Detail

addBasicJobTicketSchema

public XMPSchemaBasicJobTicket addBasicJobTicketSchema()
Add a new Job Ticket schema.

Returns: The newly added schema.

addBasicSchema

public XMPSchemaBasic addBasicSchema()
Create and add a new Basic Schema to this metadata. Typically a XMP document will only have one schema for each type (but multiple are supported) so it is recommended that you first check the existence of a this scheme by using getDublinCoreSchema()

Returns: A new blank PDF schema that is now part of the metadata.

addDublinCoreSchema

public XMPSchemaDublinCore addDublinCoreSchema()
Create and add a new Dublin Core Schema to this metadata. Typically a XMP document will only have one schema for each type (but multiple are supported) so it is recommended that you first check the existence of a this scheme by using getDublinCoreSchema()

Returns: A new blank PDF schema that is now part of the metadata.

addDynamicMediaSchema

public XMPSchemaDynamicMedia addDynamicMediaSchema()
Add a new Dynamic Media schema.

Returns: The newly added schema.

addIptc4xmpCoreSchema

public XMPSchemaIptc4xmpCore addIptc4xmpCoreSchema()
Create and add a new IPTC schema to this metadata.

Returns: A new blank IPTC schema that is now part of the metadata.

addMediaManagementSchema

public XMPSchemaMediaManagement addMediaManagementSchema()
Add a new Media Management schema.

Returns: The newly added schema.

addPagedTextSchema

public XMPSchemaPagedText addPagedTextSchema()
Add a new Paged Text schema.

Returns: The newly added schema.

addPDFSchema

public XMPSchemaPDF addPDFSchema()
Create and add a new PDF Schema to this metadata. Typically a XMP document will only have one PDF schema (but multiple are supported) so it is recommended that you first check the existence of a PDF scheme by using getPDFSchema()

Returns: A new blank PDF schema that is now part of the metadata.

addPhotoshopSchema

public XMPSchemaPhotoshop addPhotoshopSchema()
Create and add a new Photoshop schema to this metadata.

Returns: A new blank Photoshop schema that is now part of the metadata.

addRightsManagementSchema

public XMPSchemaRightsManagement addRightsManagementSchema()
Add a new Rights Managment schema.

Returns: The newly added schema.

addSchema

public void addSchema(XMPSchema schema)
Add a custom schema to the root rdf. The schema has to have been created as a child of this XMPMetadata.

Parameters: schema The schema to add.

addXMLNSMapping

public void addXMLNSMapping(String namespace, Class xmpSchema)
Will add a XMPSchema to the set of identified schemas. The class needs to have a constructor with parameter Element

Parameters: namespace The namespace URI of the schmema for instance http://purl.org/dc/elements/1.1/. xmpSchema The schema to associated this identifier with.

asByteArray

public byte[] asByteArray()
Get the XML document as a byte array.

Returns: The metadata as an XML byte stream.

Throws: Exception If there is an error creating the stream.

basicAddSchema

protected XMPSchema basicAddSchema(XMPSchema schema)
Generic add schema method.

Parameters: schema The schema to add.

Returns: The newly added schema.

getBasicJobTicketSchema

public XMPSchemaBasicJobTicket getBasicJobTicketSchema()
Get the Job Ticket Schema.

Returns: The first Job Ticket schema in the list.

Throws: IOException If there is an error accessing the schema.

getBasicSchema

public XMPSchemaBasic getBasicSchema()
Get the Basic Schema.

Returns: The first Basic schema in the list.

Throws: IOException If there is an error accessing the schema.

getDublinCoreSchema

public XMPSchemaDublinCore getDublinCoreSchema()
Get the Dublin Core Schema.

Returns: The first Dublin schema in the list.

Throws: IOException If there is an error accessing the schema.

getDynamicMediaSchema

public XMPSchemaDynamicMedia getDynamicMediaSchema()
Get the Dynamic Media Schema.

Returns: The first Dynamic Media schema in the list.

Throws: IOException If there is an error accessing the schema.

getEncoding

public String getEncoding()
Get the current encoding that will be used to write the XML.

Returns: The current encoding to write the XML to.

getMediaManagementSchema

public XMPSchemaMediaManagement getMediaManagementSchema()
Get the Media Management Schema.

Returns: The first Media Management schema in the list.

Throws: IOException If there is an error accessing the schema.

getPagedTextSchema

public XMPSchemaPagedText getPagedTextSchema()
Get the Paged Text Schema.

Returns: The first Paged Text schema in the list.

Throws: IOException If there is an error accessing the schema.

getPDFSchema

public XMPSchemaPDF getPDFSchema()
Get the PDF Schema.

Returns: The first PDF schema in the list.

Throws: IOException If there is an error accessing the schema.

getRightsManagementSchema

public XMPSchemaRightsManagement getRightsManagementSchema()
Get the Schema Rights Schema.

Returns: The first Schema Rights schema in the list.

Throws: IOException If there is an error accessing the schema.

getSchemaByClass

public XMPSchema getSchemaByClass(Class targetSchema)
Tries to retrieve a schema from this by classname.

Parameters: targetSchema Class for targetSchema.

Returns: XMPSchema or null if no target is found.

Throws: IOException if there was an error creating the schemas of this.

getSchemas

public List getSchemas()
This will get a list of XMPSchema(or subclass) objects.

Returns: A non null read-only list of schemas that are part of this metadata.

Throws: IOException If there is an error creating a specific schema.

getSchemasByNamespaceURI

public List getSchemasByNamespaceURI(String namespaceURI)
Will return all schemas that fit the given namespaceURI. Which is only done by using the namespace mapping (nsMapping) and not by actually checking the xmlns property.

Parameters: namespaceURI The namespaceURI to filter for.

Returns: A list containing the found schemas or an empty list if non are found or the namespaceURI could not be found in the namespace mapping.

Throws: IOException If an operation on the document fails.

getXMPDocument

public Document getXMPDocument()
Get the XML document from this object.

Returns: This object as an XML document.

hasUnknownSchema

public boolean hasUnknownSchema()
This will return true if the XMP contains an unknown schema.

Returns: True if an unknown schema is found, false otherwise

Throws: IOException If there is an error

load

public static XMPMetadata load(String file)
Load metadata from the filesystem.

Parameters: file The file to load the metadata from.

Returns: The loaded XMP document.

Throws: IOException If there is an error reading the data.

load

public static XMPMetadata load(InputSource is)
Load a schema from an input source.

Parameters: is The input source to load the schema from.

Returns: The loaded/parsed schema.

Throws: IOException If there was an error while loading the schema.

load

public static XMPMetadata load(InputStream is)
Load metadata from the filesystem.

Parameters: is The stream to load the data from.

Returns: The loaded XMP document.

Throws: IOException If there is an error reading the data.

main

public static void main(String[] args)
Test main program.

Parameters: args The command line arguments.

Throws: Exception If there is an error.

merge

public void merge(XMPMetadata metadata)
Merge this metadata with the given metadata object.

Parameters: metadata The metadata to merge with this document.

Throws: IOException If there is an error merging the data.

save

public void save(String file)
Save the XMP document to a file.

Parameters: file The file to save the XMP document to.

Throws: Exception If there is an error while writing to the stream.

save

public void save(OutputStream outStream)
Save the XMP document to a stream.

Parameters: outStream The stream to save the XMP document to.

Throws: TransformerException If there is an error while writing to the stream.

setEncoding

public void setEncoding(String xmlEncoding)
The encoding used to write the XML. Default value:UTF-8
See the ENCODING_XXX constants

Parameters: xmlEncoding The encoding to write the XML as.