/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* $Id: DublinCoreAdapter.java 1804124 2017-08-04 14:13:54Z ssteiner $ */

package org.apache.xmlgraphics.xmp.schemas;

import java.util.Date;

import org.apache.xmlgraphics.xmp.Metadata;
import org.apache.xmlgraphics.xmp.XMPSchemaAdapter;
import org.apache.xmlgraphics.xmp.XMPSchemaRegistry;

Schema adapter implementation for the Dublin Core schema.

Note: In Adobe's XMP specification dc:subject is defined as "bag Text", but in PDF/A-1 it is defined as "Text". Here it is implemented as "bag Text".

/** * Schema adapter implementation for the Dublin Core schema. * <p> * Note: In Adobe's XMP specification dc:subject is defined as "bag Text", but in PDF/A-1 it is * defined as "Text". Here it is implemented as "bag Text". */
public class DublinCoreAdapter extends XMPSchemaAdapter { private static final String CONTRIBUTOR = "contributor"; private static final String COVERAGE = "coverage"; private static final String CREATOR = "creator"; private static final String DATE = "date"; private static final String DESCRIPTION = "description"; private static final String FORMAT = "format"; private static final String IDENTIFIER = "identifier"; private static final String LANGUAGE = "language"; private static final String PUBLISHER = "publisher"; private static final String RELATION = "relation"; private static final String RIGHTS = "rights"; private static final String SOURCE = "source"; private static final String SUBJECT = "subject"; private static final String TITLE = "title"; private static final String TYPE = "type";
Constructs a new adapter for Dublin Core around the given metadata object.
Params:
  • meta – the underlying metadata
/** * Constructs a new adapter for Dublin Core around the given metadata object. * @param meta the underlying metadata */
public DublinCoreAdapter(Metadata meta) { super(meta, XMPSchemaRegistry.getInstance().getSchema(DublinCoreSchema.NAMESPACE)); }
Adds a new entry to the list of contributors (other than the authors).
Params:
  • value – the new value
/** * Adds a new entry to the list of contributors (other than the authors). * @param value the new value */
public void addContributor(String value) { addStringToBag(CONTRIBUTOR, value); }
Removes an entry from the list of contributors.
Params:
  • value – the value to be removed
Returns:the removed entry
/** * Removes an entry from the list of contributors. * @param value the value to be removed * @return the removed entry */
public boolean removeContributor(String value) { return removeStringFromArray(CONTRIBUTOR, value); }
Returns an array of all contributors.
Returns:a String array of all contributors (or null if not set)
/** * Returns an array of all contributors. * @return a String array of all contributors (or null if not set) */
public String[] getContributors() { return getStringArray(CONTRIBUTOR); }
Sets the extent or scope of the resource.
Params:
  • value – the new value.
/** * Sets the extent or scope of the resource. * @param value the new value. */
public void setCoverage(String value) { setValue(COVERAGE, value); }
Returns the extent or scope of the resource.
Returns:the property value (or null if not set)
/** * Returns the extent or scope of the resource. * @return the property value (or null if not set) */
public String getCoverage() { return getValue(COVERAGE); }
Adds a new entry to the list of creators (authors of the resource).
Params:
  • value – the new value
/** * Adds a new entry to the list of creators (authors of the resource). * @param value the new value */
public void addCreator(String value) { addStringToSeq(CREATOR, value); }
Removes an entry from the list of creators (authors of the resource).
Params:
  • value – the value to be removed
Returns:the removed entry
/** * Removes an entry from the list of creators (authors of the resource). * @param value the value to be removed * @return the removed entry */
public boolean removeCreator(String value) { return removeStringFromArray(CREATOR, value); }
Returns an array of all creators.
Returns:a String array of all creators (or null if not set)
/** * Returns an array of all creators. * @return a String array of all creators (or null if not set) */
public String[] getCreators() { return getStringArray(CREATOR); }
Adds a new entry to the list of dates indicating points in time something interesting happened to the resource.
Params:
  • value – the date value
/** * Adds a new entry to the list of dates indicating points in time something interesting * happened to the resource. * @param value the date value */
public void addDate(Date value) { addDateToSeq(DATE, value); }
Returns a list of dates indicating point in time something interesting happened to the resource.
Returns:the list of dates or null if no dates are set
/** * Returns a list of dates indicating point in time something interesting happened to the * resource. * @return the list of dates or null if no dates are set */
public Date[] getDates() { return getDateArray(DATE); }
Returns a latest date indicating point in time something interesting happened to the resource.
Returns:the last date or null
/** * Returns a latest date indicating point in time something interesting happened to the * resource. * @return the last date or null */
public Date getDate() { Date[] dates = getDates(); if (dates != null) { Date latest = null; for (Date date : dates) { if (latest == null || date.getTime() > latest.getTime()) { latest = date; } } return latest; } else { return null; } }
Sets the description of the content of the resource.
Params:
  • lang – the language of the value ("x-default" or null for the default language)
  • value – the new value
/** * Sets the description of the content of the resource. * @param lang the language of the value ("x-default" or null for the default language) * @param value the new value */
public void setDescription(String lang, String value) { setLangAlt(DESCRIPTION, lang, value); }
Returns the description of the content of the resource (in the default language).
Returns:the description of the content of the resource (or null if not set)
/** * Returns the description of the content of the resource (in the default language). * @return the description of the content of the resource (or null if not set) */
public String getDescription() { return getDescription(null); }
Returns the description of the content of the resource in a language-dependant way.
Params:
  • lang – the language ("x-default" or null for the default language)
Returns:the language-dependent value (or null if not set)
/** * Returns the description of the content of the resource in a language-dependant way. * @param lang the language ("x-default" or null for the default language) * @return the language-dependent value (or null if not set) */
public String getDescription(String lang) { return getLangAlt(lang, DESCRIPTION); }
Sets the file format used when saving the resource. Tools and applications should set this property to the save format of the data. It may include appropriate qualifiers.
Params:
  • value – a MIME type
/** * Sets the file format used when saving the resource. Tools and * applications should set this property to the save format of the * data. It may include appropriate qualifiers. * @param value a MIME type */
public void setFormat(String value) { setValue(FORMAT, value); }
Returns the file format used when saving this resource.
Returns:the MIME type of the file format (or null if not set)
/** * Returns the file format used when saving this resource. * @return the MIME type of the file format (or null if not set) */
public String getFormat() { return getValue(FORMAT); }
Sets the unique identifier of the resource.
Params:
  • value – the new value
/** * Sets the unique identifier of the resource. * @param value the new value */
public void setIdentifier(String value) { setValue(IDENTIFIER, value); }
Returns the unique identifier of the resource.
Returns:the unique identifier (or null if not set)
/** * Returns the unique identifier of the resource. * @return the unique identifier (or null if not set) */
public String getIdentifier() { return getValue(IDENTIFIER); }
Adds a new entry to the list of languages (RFC 3066).
Params:
  • value – the new value
/** * Adds a new entry to the list of languages (RFC 3066). * @param value the new value */
public void addLanguage(String value) { addStringToBag(LANGUAGE, value); }
Returns an array of languages.
Returns:a String array of all languages (or null if not set)
/** * Returns an array of languages. * @return a String array of all languages (or null if not set) */
public String[] getLanguages() { return getStringArray(LANGUAGE); }
Adds a new entry to the list of publishers.
Params:
  • value – the new value
/** * Adds a new entry to the list of publishers. * @param value the new value */
public void addPublisher(String value) { addStringToBag(PUBLISHER, value); }
Returns an array of publishers.
Returns:a String array of all publishers (or null if not set)
/** * Returns an array of publishers. * @return a String array of all publishers (or null if not set) */
public String[] getPublisher() { return getStringArray(PUBLISHER); }
Adds a new entry to the list of relationships to other documents.
Params:
  • value – the new value
/** * Adds a new entry to the list of relationships to other documents. * @param value the new value */
public void addRelation(String value) { addStringToBag(RELATION, value); }
Returns an array of all relationship to other documents.
Returns:a String array of all relationships (or null if none are set)
/** * Returns an array of all relationship to other documents. * @return a String array of all relationships (or null if none are set) */
public String[] getRelations() { return getStringArray(RELATION); }
Sets the informal rights statement.
Params:
  • lang – the language of the value ("x-default" or null for the default language)
  • value – the new value
/** * Sets the informal rights statement. * @param lang the language of the value ("x-default" or null for the default language) * @param value the new value */
public void setRights(String lang, String value) { setLangAlt(RIGHTS, lang, value); }
Returns the informal rights statement.
Returns:the informal right statement (or null if not set)
/** * Returns the informal rights statement. * @return the informal right statement (or null if not set) */
public String getRights() { return getRights(null); }
Returns the informal rights statement in a language-dependant way.
Params:
  • lang – the language ("x-default" or null for the default language)
Returns:the language-dependent value (or null if not set)
/** * Returns the informal rights statement in a language-dependant way. * @param lang the language ("x-default" or null for the default language) * @return the language-dependent value (or null if not set) */
public String getRights(String lang) { return getLangAlt(lang, RIGHTS); }
Sets the unique identifier of the work from which this resource was derived.
Params:
  • value – the new value
/** * Sets the unique identifier of the work from which this resource was derived. * @param value the new value */
public void setSource(String value) { setValue(SOURCE, value); }
Returns unique identifier of the work from which this resource was derived.
Returns:the source (or null if not set)
/** * Returns unique identifier of the work from which this resource was derived. * @return the source (or null if not set) */
public String getSource() { return getValue(SOURCE); }
Adds a new entry to the list of subjects (descriptive phrases or keywords that specify the topic of the content of the resource).
Params:
  • value – the new value
/** * Adds a new entry to the list of subjects (descriptive phrases or keywords that * specify the topic of the content of the resource). * @param value the new value */
public void addSubject(String value) { addStringToBag(SUBJECT, value); }
Returns an array of all subjects.
Returns:a String array of all subjects
/** * Returns an array of all subjects. * @return a String array of all subjects */
public String[] getSubjects() { return getStringArray(SUBJECT); }
Sets the title of the resource (in the default language).
Params:
  • value – the new value
/** * Sets the title of the resource (in the default language). * @param value the new value */
public void setTitle(String value) { setTitle(null, value); }
Sets the title of the resource.
Params:
  • lang – the language of the value ("x-default" or null for the default language)
  • value – the new value
/** * Sets the title of the resource. * @param lang the language of the value ("x-default" or null for the default language) * @param value the new value */
public void setTitle(String lang, String value) { setLangAlt(TITLE, lang, value); }
Returns the title of the resource (in the default language).
Returns:the title of the resource (in the default language)
/** * Returns the title of the resource (in the default language). * @return the title of the resource (in the default language) */
public String getTitle() { return getTitle(null); }
Returns the title of the resource in a language-dependant way.
Params:
  • lang – the language ("x-default" or null for the default language)
Returns:the language-dependent value (or null if not set)
/** * Returns the title of the resource in a language-dependant way. * @param lang the language ("x-default" or null for the default language) * @return the language-dependent value (or null if not set) */
public String getTitle(String lang) { return getLangAlt(lang, TITLE); }
Removes a title of the resource.
Params:
  • lang – the language variant to be removed
Returns:the previously set value or null if this language variant wasn't set
/** * Removes a title of the resource. * @param lang the language variant to be removed * @return the previously set value or null if this language variant wasn't set */
public String removeTitle(String lang) { return removeLangAlt(lang, TITLE); }
Adds a new entry to the list of document types (for example: novel, poem or working paper).
Params:
  • value – the new value
/** * Adds a new entry to the list of document types (for example: novel, poem or working paper). * @param value the new value */
public void addType(String value) { addStringToBag(TYPE, value); }
Returns an array of all document types.
Returns:a String array of all document types (or null if not set)
/** * Returns an array of all document types. * @return a String array of all document types (or null if not set) */
public String[] getTypes() { return getStringArray(TYPE); } }