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

    public class XMPSchema
    extends AbstractStructuredType

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

Constructors
Constructor and Description
`XMPSchema(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

All Methods Instance Methods Concrete Methods
`void` `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 prefix
`void` `addUnqualifiedSequenceDateValue(String seqName, Calendar date)` Add a date sequence value to the list.
`void` `addUnqualifiedSequenceValue(String seqName, AbstractField seqValue)` Add a new value to a sequence property.
`void` `addUnqualifiedSequenceValue(String simpleSeqName, String seqValue)` Add a new value to a sequence property.
`Attribute` `getAboutAttribute()` Get the RDF about attribute
`String` `getAboutValue()` Get the RDF about value.
`AbstractField` `getAbstractProperty(String qualifiedName)` Retrieve a generic simple type property
`BooleanType` `getBooleanProperty(String qualifiedName)` Get a BooleanType property with its name
`Boolean` `getBooleanPropertyValue(String qualifiedName)` Get the value of the property as a Boolean.
`Boolean` `getBooleanPropertyValueAsSimple(String simpleName)` Get a simple boolean property value on the schema, using the current prefix.
`DateType` `getDateProperty(String qualifiedName)` Get the Date property with its name
`Calendar` `getDatePropertyValue(String qualifiedName)` Get the value of the property as a date.
`Calendar` `getDatePropertyValueAsSimple(String simpleName)` Get a simple date property value on the schema, using the current prefix.
`IntegerType` `getIntegerProperty(String qualifiedName)` Get the Integer property with its name
`Integer` `getIntegerPropertyValue(String qualifiedName)` Get the value of the property as an integer.
`Integer` `getIntegerPropertyValueAsSimple(String simpleName)` Get a simple integer property value on the schema, using the current prefix.
`List<AbstractField>` `getUnqualifiedArrayList(String name)` Get an AbstractField list corresponding to the content of an array property.
`List<String>` `getUnqualifiedBagValueList(String bagName)` Get all the values of the bag property.
`List<String>` `getUnqualifiedLanguagePropertyLanguagesValue(String name)` Get a list of all languages that are currently defined for a specific property.
`String` `getUnqualifiedLanguagePropertyValue(String name, String expectedLanguage)` Get the value of a multi-lingual property.
`List<Calendar>` `getUnqualifiedSequenceDateValueList(String seqName)` Get all the date values in a sequence property.
`List<String>` `getUnqualifiedSequenceValueList(String seqName)` Get all the values in a sequence property.
`TextType` `getUnqualifiedTextProperty(String name)` Get a TextProperty Type from its name
`String` `getUnqualifiedTextPropertyValue(String name)` Get the value of a simple text property.
`protected AbstractSimpleProperty` `instanciateSimple(String propertyName, Object value)`
`void` `merge(XMPSchema xmpSchema)` A basic schema merge, it merges bags and sequences and replace everything else.
`void` `removeUnqualifiedArrayValue(String arrayName, AbstractField fieldValue)` Generic method to remove a field from an array with an Elementable Object
`void` `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, AbstractField seqValue)` Remove a value from a sequence property.
`void` `removeUnqualifiedSequenceValue(String qualifiedSeqName, String seqValue)` Remove all matching values from a sequence property.
`void` `reorganizeAltOrder(ComplexPropertyContainer alt)` Method used to place the 'x-default' value in first in Language alternatives as said in xmp spec
`void` `setAbout(Attribute about)` Set the RDF 'about' attribute
`void` `setAboutAsSimple(String about)` Set the RDF 'about' attribute.
`void` `setBooleanProperty(BooleanType bool)` Set a BooleanType property
`void` `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 DateProperty
`void` `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` `setIntegerProperty(IntegerType prop)` Add an integerProperty
`void` `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.
`void` `setTextProperty(TextType prop)` Set TextType property
`void` `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`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### XMPSchema

    public XMPSchema(XMPMetadata metadata,
                     String namespaceURI,
                     String prefix,
                     String name)

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

    public XMPSchema(XMPMetadata metadata)

Create a new blank schema that can be populated.

Parameters:
  `metadata` - The parent XMP metadata that this schema will be part of.

#### XMPSchema

    public XMPSchema(XMPMetadata metadata,
                     String prefix)

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

    public XMPSchema(XMPMetadata metadata,
                     String namespaceURI,
                     String prefix)

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 Detail

#### getAbstractProperty

    public AbstractField getAbstractProperty(String qualifiedName)

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

    public Attribute getAboutAttribute()

Get the RDF about attribute

Returns:
  The RDF 'about' attribute.

#### getAboutValue

    public String getAboutValue()

Get the RDF about value.

Returns:
  The RDF 'about' value. If there is no rdf:about attribute, an empty string is returned.

#### setAbout

    public void setAbout(Attribute about)
                  throws BadFieldValueException

Set the RDF 'about' attribute

Parameters:
  `about` - the well-formed attribute
Throws:
  `BadFieldValueException` - Bad Attribute name (not corresponding to about attribute)

#### setAboutAsSimple

    public void setAboutAsSimple(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(TextType prop)

Set TextType property

Parameters:
  `prop` - The text property to add

#### setTextPropertyValue

    public void setTextPropertyValue(String qualifiedName,
                                     String propertyValue)

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

    public void setTextPropertyValueAsSimple(String simpleName,
                                             String propertyValue)

Set a simple text property on the schema, using the current prefix.

Parameters:
  `simpleName` - the name of the property without prefix
  `propertyValue` - The value for the property, can be any string. Passing null will remove the property.

#### getUnqualifiedTextProperty

    public TextType getUnqualifiedTextProperty(String name)

Get a TextProperty Type from its name

Parameters:
  `name` - The property name.
Returns:
  The Text Type property wanted

#### getUnqualifiedTextPropertyValue

    public String getUnqualifiedTextPropertyValue(String name)

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

    public DateType getDateProperty(String qualifiedName)

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

    public Calendar getDatePropertyValueAsSimple(String simpleName)

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

    public Calendar getDatePropertyValue(String qualifiedName)

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

    public void setDateProperty(DateType date)

Set a new DateProperty

Parameters:
  `date` - The DateType Property

#### setDatePropertyValueAsSimple

    public void setDatePropertyValueAsSimple(String simpleName,
                                             Calendar date)

Set a simple Date property on the schema, using the current prefix.

Parameters:
  `simpleName` - the name of the property without prefix
  `date` - The calendar value for the property, can be any string. Passing null will remove the property.

#### setDatePropertyValue

    public void setDatePropertyValue(String qualifiedName,
                                     Calendar date)

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

    public BooleanType getBooleanProperty(String qualifiedName)

Get a BooleanType property with its name

Parameters:
  `qualifiedName` - the full qualified name of property wanted
Returns:
  boolean Type property

#### getBooleanPropertyValueAsSimple

    public Boolean getBooleanPropertyValueAsSimple(String simpleName)

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

    public Boolean getBooleanPropertyValue(String qualifiedName)

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

    public void setBooleanProperty(BooleanType bool)

Set a BooleanType property

Parameters:
  `bool` - the booleanType property

#### setBooleanPropertyValueAsSimple

    public void setBooleanPropertyValueAsSimple(String simpleName,
                                                Boolean bool)

Set a simple Boolean property on the schema, using the current prefix.

Parameters:
  `simpleName` - the name of the property without prefix
  `bool` - The value for the property, can be any string. Passing null will remove the property.

#### setBooleanPropertyValue

    public void setBooleanPropertyValue(String qualifiedName,
                                        Boolean bool)

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

    public IntegerType getIntegerProperty(String qualifiedName)

Get the Integer property with its name

Parameters:
  `qualifiedName` - the full qualified name of property wanted
Returns:
  Integer Type property

#### getIntegerPropertyValueAsSimple

    public Integer getIntegerPropertyValueAsSimple(String simpleName)

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

    public Integer getIntegerPropertyValue(String qualifiedName)

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

    public void setIntegerProperty(IntegerType prop)

Add an integerProperty

Parameters:
  `prop` - The Integer Type property

#### setIntegerPropertyValueAsSimple

    public void setIntegerPropertyValueAsSimple(String simpleName,
                                                Integer intValue)

Set a simple Integer property on the schema, using the current prefix.

Parameters:
  `simpleName` - the name of the property without prefix
  `intValue` - The value for the property, can be any string. Passing null will remove the property.

#### setIntegerPropertyValue

    public void setIntegerPropertyValue(String qualifiedName,
                                        Integer intValue)

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.

#### removeUnqualifiedBagValue

    public void removeUnqualifiedBagValue(String bagName,
                                          String bagValue)

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

    public void addBagValueAsSimple(String simpleName,
                                    String bagValue)

add a bag value property on the schema, using the current prefix.

Parameters:
  `simpleName` - the local name of property
  `bagValue` - the string value to add

#### addQualifiedBagValue

    public void addQualifiedBagValue(String simpleName,
                                     String bagValue)

Add an entry to a bag property.

Parameters:
  `simpleName` - The name of the bag without the namespace prefix
  `bagValue` - The value to add to the bagList.

#### getUnqualifiedBagValueList

    public List<String> getUnqualifiedBagValueList(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 bag name.
Returns:
  All values of the bag property in a list.

#### removeUnqualifiedSequenceValue

    public void removeUnqualifiedSequenceValue(String qualifiedSeqName,
                                               String seqValue)

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

    public void removeUnqualifiedArrayValue(String arrayName,
                                            AbstractField fieldValue)

Generic method to remove a field from an array with an Elementable Object

Parameters:
  `arrayName` - the name of the property concerned
  `fieldValue` - the elementable field value

#### removeUnqualifiedSequenceValue

    public void removeUnqualifiedSequenceValue(String qualifiedSeqName,
                                               AbstractField seqValue)

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

    public void addUnqualifiedSequenceValue(String simpleSeqName,
                                            String seqValue)

Add a new value to a sequence property.

Parameters:
  `simpleSeqName` - The name of the sequence property without the namespace prefix
  `seqValue` - The value to add to the sequence.

#### addBagValue

    public void addBagValue(String qualifiedSeqName,
                            AbstractField seqValue)

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

    public void addUnqualifiedSequenceValue(String seqName,
                                            AbstractField seqValue)

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

    public List<String> getUnqualifiedSequenceValueList(String seqName)

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

    public void removeUnqualifiedSequenceDateValue(String seqName,
                                                   Calendar date)

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

    public void addSequenceDateValueAsSimple(String simpleName,
                                             Calendar date)

Add a date sequence value to the list using the current prefix

Parameters:
  `simpleName` - the local name of the property
  `date` - the value to add

#### addUnqualifiedSequenceDateValue

    public void addUnqualifiedSequenceDateValue(String seqName,
                                                Calendar date)

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

    public List<Calendar> getUnqualifiedSequenceDateValueList(String seqName)

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

    public void reorganizeAltOrder(ComplexPropertyContainer alt)

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

    public void setUnqualifiedLanguagePropertyValue(String name,
                                                    String language,
                                                    String value)

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

    public String getUnqualifiedLanguagePropertyValue(String name,
                                                      String expectedLanguage)

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

    public List<String> getUnqualifiedLanguagePropertyLanguagesValue(String name)

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

    public void merge(XMPSchema xmpSchema)
               throws IOException

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.

#### getUnqualifiedArrayList

    public List<AbstractField> getUnqualifiedArrayList(String name)
                                                throws BadFieldValueException

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

    protected AbstractSimpleProperty instanciateSimple(String propertyName,
                                                       Object value)