Package org.apache.jempbox.xmp
Class XMPSchema
- java.lang.Object
-
- org.apache.jempbox.xmp.XMPSchema
-
- Direct Known Subclasses:
XMPSchemaBasic
,XMPSchemaBasicJobTicket
,XMPSchemaDublinCore
,XMPSchemaDynamicMedia
,XMPSchemaIptc4xmpCore
,XMPSchemaMediaManagement
,XMPSchemaPagedText
,XMPSchemaPDF
,XMPSchemaPDFAField
,XMPSchemaPDFAId
,XMPSchemaPDFAProperty
,XMPSchemaPDFASchema
,XMPSchemaPDFAType
,XMPSchemaPhotoshop
,XMPSchemaRightsManagement
public class XMPSchema extends java.lang.Object
This class represents a metadata schema that can be stored in an XMP document. It handles all generic properties that are available. See subclasses for access to specific properties.- Author:
- Ben Litchfield
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
NS_NAMESPACE
The standard xmlns namespace.protected java.lang.String
prefix
The XML schema prefix.protected org.w3c.dom.Element
schema
The DOM representation of this object.
-
Constructor Summary
Constructors Constructor Description XMPSchema(XMPMetadata parent, java.lang.String namespaceName, java.lang.String namespaceURI)
Create a new blank schema that can be populated.XMPSchema(org.w3c.dom.Element element, java.lang.String aPrefix)
Create schema from an existing XML element.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addBagValue(java.lang.String bagName, java.lang.String bagValue)
Add an entry to a bag property.void
addSequenceDateValue(java.lang.String seqName, java.util.Calendar date)
Add a date sequence value to the list.void
addSequenceValue(java.lang.String seqName, java.lang.String seqValue)
Add a new value to a sequence property.void
addSequenceValue(java.lang.String seqName, Elementable seqValue)
Add a new value to a sequence property.java.lang.String
getAbout()
Get the RDF about attribute.java.util.List<java.lang.String>
getBagList(java.lang.String bagName)
Get all the values of the bag property.java.lang.Boolean
getBooleanProperty(java.lang.String propertyName)
Get the value of the property as a boolean.java.util.Calendar
getDateProperty(java.lang.String propertyName)
Get the value of the property as a date.org.w3c.dom.Element
getElement()
Get the XML element that is represented by this schema.java.util.List<ResourceEvent>
getEventSequenceList(java.lang.String seqName)
Get a list of ResourceEvent objects.java.lang.Integer
getIntegerProperty(java.lang.String propertyName)
Get the value of the property as an integer.java.lang.String
getLanguageProperty(java.lang.String propertyName, java.lang.String language)
Get the value of a multi-lingual property.java.util.List<java.lang.String>
getLanguagePropertyLanguages(java.lang.String propertyName)
Get a list of all languages that are currently defined for a specific property.java.util.List<java.util.Calendar>
getSequenceDateList(java.lang.String seqName)
Get all the date values in a sequence property.java.util.List<java.lang.String>
getSequenceList(java.lang.String seqName)
Get all the values in a sequence property.java.lang.String
getTextProperty(java.lang.String propertyName)
Get the value of a simple text property.Thumbnail
getThumbnailProperty(java.lang.String propertyName, java.lang.String language)
Get the value of a multi-lingual property.void
merge(XMPSchema xmpSchema)
A basic schema merge, it merges bags and sequences and replace everything else.void
removeBagValue(java.lang.String bagName, java.lang.String bagValue)
Remove all matching entries with the given value from the bag.void
removeSequenceDateValue(java.lang.String seqName, java.util.Calendar date)
Remove a date sequence value from the list.void
removeSequenceValue(java.lang.String seqName, java.lang.String seqValue)
Remove all matching values from a sequence property.void
removeSequenceValue(java.lang.String seqName, Elementable seqValue)
Remove a value from a sequence property.void
setAbout(java.lang.String about)
Set the RDF 'about' attribute.void
setBooleanProperty(java.lang.String propertyName, java.lang.Boolean bool)
Set the value of the property as a boolean.void
setDateProperty(java.lang.String propertyName, java.util.Calendar date)
Set the value of the property as a date.void
setIntegerProperty(java.lang.String propertyName, java.lang.Integer intValue)
Set the value of the property as an integer.void
setLanguageProperty(java.lang.String propertyName, java.lang.String language, java.lang.String value)
Set the value of a multi-lingual property.void
setTextProperty(java.lang.String propertyName, java.lang.String propertyValue)
Set a simple text property on the schema.void
setThumbnailProperty(java.lang.String propertyName, java.lang.String language, Thumbnail value)
Set the value of a multi-lingual property.
-
-
-
Field Detail
-
NS_NAMESPACE
public static final java.lang.String NS_NAMESPACE
The standard xmlns namespace.- See Also:
- Constant Field Values
-
prefix
protected java.lang.String prefix
The XML schema prefix.
-
schema
protected org.w3c.dom.Element schema
The DOM representation of this object.
-
-
Constructor Detail
-
XMPSchema
public XMPSchema(XMPMetadata parent, java.lang.String namespaceName, java.lang.String namespaceURI)
Create a new blank schema that can be populated.- Parameters:
parent
- The parent XMP document that this schema will be part of.namespaceName
- The name of the namespace, ie pdf,dc,...namespaceURI
- The URI of the namespace, ie "http://ns.adobe.com/pdf/1.3/"
-
XMPSchema
public XMPSchema(org.w3c.dom.Element element, java.lang.String aPrefix)
Create schema from an existing XML element.- Parameters:
element
- The existing XML element.aPrefix
- The XML prefix.
-
-
Method Detail
-
getElement
public org.w3c.dom.Element getElement()
Get the XML element that is represented by this schema.- Returns:
- The root XML element of this schema.
-
getAbout
public java.lang.String getAbout()
Get the RDF about attribute.- Returns:
- The RDF 'about' attribute.
-
setAbout
public void setAbout(java.lang.String about)
Set the RDF 'about' attribute. Passing in null will clear this attribute.- Parameters:
about
- The new RFD about value.
-
setTextProperty
public void setTextProperty(java.lang.String propertyName, java.lang.String propertyValue)
Set a simple text property on the schema.- Parameters:
propertyName
- The name of the property, it must contain the namespace prefix, ie "pdf:Keywords"propertyValue
- The value for the property, can be any string. Passing null will remove the property.
-
getTextProperty
public java.lang.String getTextProperty(java.lang.String propertyName)
Get the value of a simple text property.- Parameters:
propertyName
- The name of the property to get, it must include the namespace prefix. ie "pdf:Keywords".- Returns:
- The value of the text property or the null if there is no value.
-
getDateProperty
public java.util.Calendar getDateProperty(java.lang.String propertyName) throws java.io.IOException
Get the value of the property as a date.- Parameters:
propertyName
- The fully qualified property name for the date.- Returns:
- The value of the property as a date.
- Throws:
java.io.IOException
- If there is an error converting the value to a date.
-
setDateProperty
public void setDateProperty(java.lang.String propertyName, java.util.Calendar date)
Set the value of the property as a date.- Parameters:
propertyName
- The fully qualified property name for the date.date
- The date to set, or null to clear.
-
getBooleanProperty
public java.lang.Boolean getBooleanProperty(java.lang.String propertyName)
Get the value of the property as a boolean.- Parameters:
propertyName
- The fully qualified property name for the boolean.- Returns:
- The value of the property as a boolean.
-
setBooleanProperty
public void setBooleanProperty(java.lang.String propertyName, java.lang.Boolean bool)
Set the value of the property as a boolean.- Parameters:
propertyName
- The fully qualified property name for the boolean.bool
- The boolean to set, or null to clear.
-
getIntegerProperty
public java.lang.Integer getIntegerProperty(java.lang.String propertyName)
Get the value of the property as an integer.- Parameters:
propertyName
- The fully qualified property name for the integer.- Returns:
- The value of the property as an integer.
-
setIntegerProperty
public void setIntegerProperty(java.lang.String propertyName, java.lang.Integer intValue)
Set the value of the property as an integer.- Parameters:
propertyName
- The fully qualified property name for the integer.intValue
- The int to set, or null to clear.
-
removeBagValue
public void removeBagValue(java.lang.String bagName, java.lang.String bagValue)
Remove all matching entries with the given value from the bag.- Parameters:
bagName
- The name of the bag, it must include the namespace prefix. ie "pdf:Keywords".bagValue
- The value to remove from the bagList.
-
addBagValue
public void addBagValue(java.lang.String bagName, java.lang.String bagValue)
Add an entry to a bag property.- Parameters:
bagName
- The name of the bag, it must include the namespace prefix. ie "pdf:Keywords".bagValue
- The value to add to the bagList.
-
getBagList
public java.util.List<java.lang.String> getBagList(java.lang.String bagName)
Get all the values of the bag property. This will return a list of java.lang.String objects, this is a read-only list.- Parameters:
bagName
- The name of the bag property to get, it must include the namespace prefix. ie "pdf:Keywords"- Returns:
- All of the values of the bag property in a list.
-
removeSequenceValue
public void removeSequenceValue(java.lang.String seqName, java.lang.String seqValue)
Remove all matching values from a sequence property.- Parameters:
seqName
- The name of the sequence property. It must include the namespace prefix. ie "pdf:Keywords".seqValue
- The value to remove from the list.
-
removeSequenceValue
public void removeSequenceValue(java.lang.String seqName, Elementable seqValue)
Remove a value from a sequence property. This will remove all entries from the list.- Parameters:
seqName
- The name of the sequence property. It must include the namespace prefix. ie "pdf:Keywords".seqValue
- The value to remove from the list.
-
addSequenceValue
public void addSequenceValue(java.lang.String seqName, java.lang.String seqValue)
Add a new value to a sequence property.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix. ie "pdf:Keywords"seqValue
- The value to add to the sequence.
-
addSequenceValue
public void addSequenceValue(java.lang.String seqName, Elementable seqValue)
Add a new value to a sequence property.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix. ie "pdf:Keywords"seqValue
- The value to add to the sequence.
-
getSequenceList
public java.util.List<java.lang.String> getSequenceList(java.lang.String seqName)
Get all the values in a sequence property.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix. ie "pdf:Keywords".- Returns:
- A read-only list of java.lang.String objects or null if the property does not exist.
-
getEventSequenceList
public java.util.List<ResourceEvent> getEventSequenceList(java.lang.String seqName)
Get a list of ResourceEvent objects.- Parameters:
seqName
- The name of the sequence to retrieve.- Returns:
- A list of ResourceEvent objects or null if they do not exist.
-
removeSequenceDateValue
public void removeSequenceDateValue(java.lang.String seqName, java.util.Calendar date)
Remove a date sequence value from the list.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix. ie "pdf:Keywords"date
- The date to remove from the sequence property.
-
addSequenceDateValue
public void addSequenceDateValue(java.lang.String seqName, java.util.Calendar date)
Add a date sequence value to the list.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix. ie "pdf:Keywords"date
- The date to add to the sequence property.
-
getSequenceDateList
public java.util.List<java.util.Calendar> getSequenceDateList(java.lang.String seqName) throws java.io.IOException
Get all the date values in a sequence property.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix. ie "pdf:Keywords".- Returns:
- A read-only list of java.util.Calendar objects or null if the property does not exist.
- Throws:
java.io.IOException
- If there is an error converting the value to a date.
-
setLanguageProperty
public void setLanguageProperty(java.lang.String propertyName, java.lang.String language, java.lang.String value)
Set the value of a multi-lingual property.- Parameters:
propertyName
- The name of the property, it must include the namespace prefix. ie "pdf:Keywords"language
- The language code of the value. If null then "x-default" is assumed.value
- The value of the property in the specified language.
-
getLanguageProperty
public java.lang.String getLanguageProperty(java.lang.String propertyName, java.lang.String language)
Get the value of a multi-lingual property.- Parameters:
propertyName
- The name of the property, it must include the namespace prefix. ie "pdf:Keywords"language
- The language code of the value. If null then "x-default" is assumed.- Returns:
- The value of the language property.
-
setThumbnailProperty
public void setThumbnailProperty(java.lang.String propertyName, java.lang.String language, Thumbnail value)
Set the value of a multi-lingual property.- Parameters:
propertyName
- The name of the property, it must include the namespace prefix. ie "pdf:Keywords"language
- The language code of the value. If null then "x-default" is assumed.value
- The value of the property in the specified language.
-
getThumbnailProperty
public Thumbnail getThumbnailProperty(java.lang.String propertyName, java.lang.String language)
Get the value of a multi-lingual property.- Parameters:
propertyName
- The name of the property, it must include the namespace prefix. ie "pdf:Keywords"language
- The language code of the value. If null then "x-default" is assumed.- Returns:
- The value of the language property.
-
getLanguagePropertyLanguages
public java.util.List<java.lang.String> getLanguagePropertyLanguages(java.lang.String propertyName)
Get a list of all languages that are currently defined for a specific property.- Parameters:
propertyName
- The name of the property, it must include the namespace prefix. ie "pdf:Keywords"- Returns:
- A list of all languages, this will return an non-null empty list if none have been defined.
-
merge
public void merge(XMPSchema xmpSchema) throws java.io.IOException
A basic schema merge, it merges bags and sequences and replace everything else.- Parameters:
xmpSchema
- The schema to merge.- Throws:
java.io.IOException
- If there is an error during the merge.
-
-