Package org.apache.xmpbox.schema
Class XMPSchema
java.lang.Object
org.apache.xmpbox.type.AbstractField
org.apache.xmpbox.type.AbstractComplexProperty
org.apache.xmpbox.type.AbstractStructuredType
org.apache.xmpbox.schema.XMPSchema
- Direct Known Subclasses:
AdobePDFSchema
,DublinCoreSchema
,ExifSchema
,PDFAExtensionSchema
,PDFAIdentificationSchema
,PhotoshopSchema
,TiffSchema
,XMPageTextSchema
,XMPBasicJobTicketSchema
,XMPBasicSchema
,XMPMediaManagementSchema
,XMPRightsManagementSchema
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. MODIFIED TO INCLUDE OBJECT REPRESENTATION
-
Field Summary
Fields inherited from class org.apache.xmpbox.type.AbstractStructuredType
STRUCTURE_ARRAY_NAME
-
Constructor Summary
ConstructorsConstructorDescriptionXMPSchema
(XMPMetadata metadata) Create a new blank schema that can be populated.XMPSchema
(XMPMetadata metadata, String prefix) Create a new blank schema that can be populated.XMPSchema
(XMPMetadata metadata, String namespaceURI, String prefix) Create a new blank schema that can be populated.XMPSchema
(XMPMetadata metadata, String namespaceURI, String prefix, String name) Create a new blank schema that can be populated. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addBagValue
(String qualifiedSeqName, AbstractField seqValue) Add a new value to a bag property.void
addBagValueAsSimple
(String simpleName, String bagValue) add a bag value property on the schema, using the current prefix.void
addQualifiedBagValue
(String simpleName, String bagValue) Add an entry to a bag property.void
addSequenceDateValueAsSimple
(String simpleName, Calendar date) Add a date sequence value to the list using the current prefixvoid
addUnqualifiedSequenceDateValue
(String seqName, Calendar date) Add a date sequence value to the list.void
addUnqualifiedSequenceValue
(String simpleSeqName, String seqValue) Add a new value to a sequence property.void
addUnqualifiedSequenceValue
(String seqName, AbstractField seqValue) Add a new value to a sequence property.Get the RDF about attributeGet the RDF about value.getAbstractProperty
(String qualifiedName) Retrieve a generic simple type propertygetBooleanProperty
(String qualifiedName) Get a BooleanType property with its namegetBooleanPropertyValue
(String qualifiedName) Get the value of the property as a Boolean.getBooleanPropertyValueAsSimple
(String simpleName) Get a simple boolean property value on the schema, using the current prefix.getDateProperty
(String qualifiedName) Get the Date property with its namegetDatePropertyValue
(String qualifiedName) Get the value of the property as a date.getDatePropertyValueAsSimple
(String simpleName) Get a simple date property value on the schema, using the current prefix.getIntegerProperty
(String qualifiedName) Get the Integer property with its namegetIntegerPropertyValue
(String qualifiedName) Get the value of the property as an integer.getIntegerPropertyValueAsSimple
(String simpleName) Get a simple integer property value on the schema, using the current prefix.Get an AbstractField list corresponding to the content of an array property.getUnqualifiedBagValueList
(String bagName) Get all the values of the bag property.Get a list of all languages that are currently defined for a specific property.getUnqualifiedLanguagePropertyValue
(String name, String expectedLanguage) Get the value of a multi-lingual property.Get all the date values in a sequence property.getUnqualifiedSequenceValueList
(String seqName) Get all the values in a sequence property.Get a TextProperty Type from its nameGet the value of a simple text property.protected AbstractSimpleProperty
instanciateSimple
(String propertyName, Object value) private void
internalAddBagValue
(String qualifiedBagName, String bagValue) void
A basic schema merge, it merges bags and sequences and replace everything else.private boolean
mergeComplexProperty
(Iterator<AbstractField> itNewValues, ArrayProperty arrayProperty) private void
removeUnqualifiedArrayValue
(String arrayName, String fieldValue) Generic array property removingvoid
removeUnqualifiedArrayValue
(String arrayName, AbstractField fieldValue) Generic method to remove a field from an array with an Elementable Objectvoid
removeUnqualifiedBagValue
(String bagName, String bagValue) Remove all matching entries with the given value from the bag.void
removeUnqualifiedSequenceDateValue
(String seqName, Calendar date) Remove a date sequence value from the list.void
removeUnqualifiedSequenceValue
(String qualifiedSeqName, String seqValue) Remove all matching values from a sequence property.void
removeUnqualifiedSequenceValue
(String qualifiedSeqName, AbstractField seqValue) Remove a value from a sequence property.void
Method used to place the 'x-default' value in first in Language alternatives as said in xmp specvoid
Set the RDF 'about' attributevoid
setAboutAsSimple
(String about) Set the RDF 'about' attribute.void
Set a BooleanType propertyvoid
setBooleanPropertyValue
(String qualifiedName, Boolean bool) Set the value of the property as a boolean.void
setBooleanPropertyValueAsSimple
(String simpleName, Boolean bool) Set a simple Boolean property on the schema, using the current prefix.void
setDateProperty
(DateType date) Set a new DatePropertyvoid
setDatePropertyValue
(String qualifiedName, Calendar date) Set the value of the property as a date.void
setDatePropertyValueAsSimple
(String simpleName, Calendar date) Set a simple Date property on the schema, using the current prefix.void
Add an integerPropertyvoid
setIntegerPropertyValue
(String qualifiedName, Integer intValue) Set the value of the property as an integer.void
setIntegerPropertyValueAsSimple
(String simpleName, Integer intValue) Set a simple Integer property on the schema, using the current prefix.private void
Add a SimpleProperty to this schemaprivate void
setSpecifiedSimpleTypeProperty
(Types type, String qualifiedName, Object propertyValue) void
setTextProperty
(TextType prop) Set TextType propertyvoid
setTextPropertyValue
(String qualifiedName, String propertyValue) Set a simple text property on the schema.void
setTextPropertyValueAsSimple
(String simpleName, String propertyValue) Set a simple text property on the schema, using the current prefix.void
setUnqualifiedLanguagePropertyValue
(String name, String language, String value) Set the value of a multi-lingual property.Methods inherited from class org.apache.xmpbox.type.AbstractStructuredType
addSimpleProperty, createArrayProperty, createTextType, getDatePropertyAsCalendar, getNamespace, getPreferedPrefix, getPrefix, getPropertyValueAsString, setNamespace, setPrefix
Methods inherited from class org.apache.xmpbox.type.AbstractComplexProperty
addNamespace, addProperty, getAllNamespacesWithPrefix, getAllProperties, getArrayProperty, getContainer, getFirstEquivalentProperty, getNamespacePrefix, getProperty, removeProperty
Methods inherited from class org.apache.xmpbox.type.AbstractField
containsAttribute, getAllAttributes, getAttribute, getMetadata, getPropertyName, removeAttribute, setAttribute, setPropertyName
-
Constructor Details
-
XMPSchema
Create a new blank schema that can be populated.- Parameters:
metadata
- The parent XMP metadata that this schema will be part of.namespaceURI
- The URI of the namespace, e.g. "http://ns.adobe.com/pdf/1.3/"prefix
- The field prefix of the namespace.name
- The property name.
-
XMPSchema
Create a new blank schema that can be populated.- Parameters:
metadata
- The parent XMP metadata that this schema will be part of.
-
XMPSchema
Create a new blank schema that can be populated.- Parameters:
metadata
- The parent XMP metadata that this schema will be part of.prefix
- The field prefix of the namespace.
-
XMPSchema
Create a new blank schema that can be populated.- Parameters:
metadata
- The parent XMP metadata that this schema will be part of.namespaceURI
- The URI of the namespace, e.g. "http://ns.adobe.com/pdf/1.3/"prefix
- The field prefix of the namespace.
-
-
Method Details
-
getAbstractProperty
Retrieve a generic simple type property- Parameters:
qualifiedName
- Full qualified name of property wanted- Returns:
- The generic simple type property according to its qualified name
-
getAboutAttribute
Get the RDF about attribute- Returns:
- The RDF 'about' attribute.
-
getAboutValue
Get the RDF about value.- Returns:
- The RDF 'about' value. If there is no rdf:about attribute, an empty string is returned.
-
setAbout
Set the RDF 'about' attribute- Parameters:
about
- the well-formed attribute- Throws:
BadFieldValueException
- Bad Attribute name (not corresponding to about attribute)
-
setAboutAsSimple
Set the RDF 'about' attribute. Passing in null will clear this attribute.- Parameters:
about
- The new RFD about value.
-
setSpecifiedSimpleTypeProperty
-
setSpecifiedSimpleTypeProperty
Add a SimpleProperty to this schema- Parameters:
prop
- The Property to add
-
setTextProperty
Set TextType property- Parameters:
prop
- The text property to add
-
setTextPropertyValue
Set a simple text property on the schema.- Parameters:
qualifiedName
- 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.
-
setTextPropertyValueAsSimple
Set a simple text property on the schema, using the current prefix.- Parameters:
simpleName
- the name of the property without prefixpropertyValue
- The value for the property, can be any string. Passing null will remove the property.
-
getUnqualifiedTextProperty
Get a TextProperty Type from its name- Parameters:
name
- The property name.- Returns:
- The Text Type property wanted
-
getUnqualifiedTextPropertyValue
Get the value of a simple text property.- Parameters:
name
- The property name.- Returns:
- The value of the text property or null if there is no value.
-
getDateProperty
Get the Date property with its name- Parameters:
qualifiedName
- The name of the property to get, it must include the namespace prefix, e.g. "pdf:Keywords".- Returns:
- Date Type property
-
getDatePropertyValueAsSimple
Get a simple date property value on the schema, using the current prefix.- Parameters:
simpleName
- the local name of the property to get- Returns:
- The value of the property as a calendar.
-
getDatePropertyValue
Get the value of the property as a date.- Parameters:
qualifiedName
- The fully qualified property name for the date.- Returns:
- The value of the property as a date.
-
setDateProperty
Set a new DateProperty- Parameters:
date
- The DateType Property
-
setDatePropertyValueAsSimple
Set a simple Date property on the schema, using the current prefix.- Parameters:
simpleName
- the name of the property without prefixdate
- The calendar value for the property, can be any string. Passing null will remove the property.
-
setDatePropertyValue
Set the value of the property as a date.- Parameters:
qualifiedName
- The fully qualified property name for the date.date
- The date to set, or null to clear.
-
getBooleanProperty
Get a BooleanType property with its name- Parameters:
qualifiedName
- the full qualified name of property wanted- Returns:
- boolean Type property
-
getBooleanPropertyValueAsSimple
Get a simple boolean property value on the schema, using the current prefix.- Parameters:
simpleName
- the local name of property wanted- Returns:
- The value of the property as a boolean or null if the property does not exist.
-
getBooleanPropertyValue
Get the value of the property as a Boolean. If you want to use this value like a condition, you must do a null check before.- Parameters:
qualifiedName
- The fully qualified property name for the Boolean.- Returns:
- The value of the property as a Boolean, or null if the property does not exist.
-
setBooleanProperty
Set a BooleanType property- Parameters:
bool
- the booleanType property
-
setBooleanPropertyValueAsSimple
Set a simple Boolean property on the schema, using the current prefix.- Parameters:
simpleName
- the name of the property without prefixbool
- The value for the property, can be any string. Passing null will remove the property.
-
setBooleanPropertyValue
Set the value of the property as a boolean.- Parameters:
qualifiedName
- The fully qualified property name for the boolean.bool
- The boolean to set, or null to clear.
-
getIntegerProperty
Get the Integer property with its name- Parameters:
qualifiedName
- the full qualified name of property wanted- Returns:
- Integer Type property
-
getIntegerPropertyValueAsSimple
Get a simple integer property value on the schema, using the current prefix.- Parameters:
simpleName
- the local name of property wanted- Returns:
- The value of the property as an integer.
-
getIntegerPropertyValue
Get the value of the property as an integer.- Parameters:
qualifiedName
- The fully qualified property name for the integer.- Returns:
- The value of the property as an integer.
-
setIntegerProperty
Add an integerProperty- Parameters:
prop
- The Integer Type property
-
setIntegerPropertyValueAsSimple
Set a simple Integer property on the schema, using the current prefix.- Parameters:
simpleName
- the name of the property without prefixintValue
- The value for the property, can be any string. Passing null will remove the property.
-
setIntegerPropertyValue
Set the value of the property as an integer.- Parameters:
qualifiedName
- The fully qualified property name for the integer.intValue
- The int to set, or null to clear.
-
removeUnqualifiedArrayValue
Generic array property removing- Parameters:
fieldValue
- the field value
-
removeUnqualifiedBagValue
Remove all matching entries with the given value from the bag.- Parameters:
bagName
- The bag name.bagValue
- The value to remove from the bagList.
-
addBagValueAsSimple
add a bag value property on the schema, using the current prefix.- Parameters:
simpleName
- the local name of propertybagValue
- the string value to add
-
internalAddBagValue
-
addQualifiedBagValue
Add an entry to a bag property.- Parameters:
simpleName
- The name of the bag without the namespace prefixbagValue
- The value to add to the bagList.
-
getUnqualifiedBagValueList
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 bag name.- Returns:
- All values of the bag property in a list.
-
removeUnqualifiedSequenceValue
Remove all matching values from a sequence property.- Parameters:
qualifiedSeqName
- The name of the sequence property. It must include the namespace prefix, e.g. "pdf:Keywords".seqValue
- The value to remove from the list.
-
removeUnqualifiedArrayValue
Generic method to remove a field from an array with an Elementable Object- Parameters:
arrayName
- the name of the property concernedfieldValue
- the elementable field value
-
removeUnqualifiedSequenceValue
Remove a value from a sequence property. This will remove all entries from the list.- Parameters:
qualifiedSeqName
- The name of the sequence property. It must include the namespace prefix, e.g. "pdf:Keywords".seqValue
- The value to remove from the list.
-
addUnqualifiedSequenceValue
Add a new value to a sequence property.- Parameters:
simpleSeqName
- The name of the sequence property without the namespace prefixseqValue
- The value to add to the sequence.
-
addBagValue
Add a new value to a bag property.- Parameters:
qualifiedSeqName
- The name of the sequence property, it must include the namespace prefix, e.g. "pdf:Keywords"seqValue
- The value to add to the bag.
-
addUnqualifiedSequenceValue
Add a new value to a sequence property.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix, e.g. "pdf:Keywords"seqValue
- The value to add to the sequence.
-
getUnqualifiedSequenceValueList
Get all the values in a sequence property.- Parameters:
seqName
- The name of the sequence property without namespace prefix.- Returns:
- A read-only list of java.lang.String objects or null if the property does not exist.
-
removeUnqualifiedSequenceDateValue
Remove a date sequence value from the list.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix, e.g. "pdf:Keywords"date
- The date to remove from the sequence property.
-
addSequenceDateValueAsSimple
Add a date sequence value to the list using the current prefix- Parameters:
simpleName
- the local name of the propertydate
- the value to add
-
addUnqualifiedSequenceDateValue
Add a date sequence value to the list.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix, e.g. "pdf:Keywords"date
- The date to add to the sequence property.
-
getUnqualifiedSequenceDateValueList
Get all the date values in a sequence property.- Parameters:
seqName
- The name of the sequence property, it must include the namespace prefix, e.g. "pdf:Keywords".- Returns:
- A read-only list of java.util.Calendar objects or null if the property does not exist.
-
reorganizeAltOrder
Method used to place the 'x-default' value in first in Language alternatives as said in xmp spec- Parameters:
alt
- The property to reorganize
-
setUnqualifiedLanguagePropertyValue
Set the value of a multi-lingual property.- Parameters:
name
- The name of the property, it must include the namespace prefix, e.g. "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.
-
getUnqualifiedLanguagePropertyValue
Get the value of a multi-lingual property.- Parameters:
name
- The name of the property, without the namespace prefix.expectedLanguage
- The language code of the value. If null then "x-default" is assumed.- Returns:
- The value of the language property.
-
getUnqualifiedLanguagePropertyLanguagesValue
Get a list of all languages that are currently defined for a specific property.- Parameters:
name
- The name of the property, it must include the namespace prefix, e.g. "pdf:Keywords".- Returns:
- A list of all languages, this will return an non-null empty list if none have been defined, and null if the property doesn't exist.
-
merge
A basic schema merge, it merges bags and sequences and replace everything else.- Parameters:
xmpSchema
- The schema to merge.- Throws:
IOException
- If there is an error during the merge.
-
mergeComplexProperty
private boolean mergeComplexProperty(Iterator<AbstractField> itNewValues, ArrayProperty arrayProperty) -
getUnqualifiedArrayList
Get an AbstractField list corresponding to the content of an array property.- Parameters:
name
- The property name without namespace.- Returns:
- List of properties contained in the array property.
- Throws:
BadFieldValueException
- If the property with the requested name isn't an array.
-
instanciateSimple
-