001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: /* $Id: DublinCoreAdapter.java 548968 2007-06-20 07:51:26Z jeremias $ */
019:
020: package org.apache.xmlgraphics.xmp.schemas;
021:
022: import java.util.Date;
023:
024: import org.apache.xmlgraphics.xmp.Metadata;
025: import org.apache.xmlgraphics.xmp.XMPSchemaAdapter;
026: import org.apache.xmlgraphics.xmp.XMPSchemaRegistry;
027:
028: /**
029: * Schema adapter implementation for the Dublin Core schema.
030: * <p>
031: * Note: In Adobe's XMP specification dc:subject is defined as "bag Text", but in PDF/A-1 it is
032: * defined as "Text". Here it is implemented as "bag Text".
033: */
034: public class DublinCoreAdapter extends XMPSchemaAdapter {
035:
036: /**
037: * Constructs a new adapter for Dublin Core around the given metadata object.
038: * @param meta the underlying metadata
039: */
040: public DublinCoreAdapter(Metadata meta) {
041: super (meta, XMPSchemaRegistry.getInstance().getSchema(
042: DublinCoreSchema.NAMESPACE));
043: }
044:
045: /**
046: * Adds a new entry to the list of creators (authors of the resource).
047: * @param value the new value
048: */
049: public void addCreator(String value) {
050: addStringToSeq("creator", value);
051: }
052:
053: /** @return a String array of all creators */
054: public String[] getCreators() {
055: return getStringArray("creator");
056: }
057:
058: /**
059: * Adds a new entry to the list of dates indicating points in time something interesting
060: * happened to the resource.
061: * @param value the date value
062: */
063: public void addDate(Date value) {
064: addDateToSeq("date", value);
065: }
066:
067: /**
068: * Adds a new entry to the list of subjects (descriptive phrases or keywords that
069: * specify the topic of the content of the resource).
070: * @param value the new value
071: */
072: public void addSubject(String value) {
073: addStringToBag("subject", value);
074: }
075:
076: /** @return a String array of all subjects */
077: public String[] getSubjects() {
078: return getStringArray("subject");
079: }
080:
081: /**
082: * Sets the title of the resource (in the default language).
083: * @param value the new value
084: */
085: public void setTitle(String value) {
086: setTitle(null, value);
087: }
088:
089: /**
090: * Sets the title of the resource.
091: * @param lang the language of the value ("x-default" or null for the default language)
092: * @param value the new value
093: */
094: public void setTitle(String lang, String value) {
095: setLangAlt("title", lang, value);
096: }
097:
098: /** @return the title of the resource (in the default language) */
099: public String getTitle() {
100: return getTitle(null);
101: }
102:
103: /**
104: * Returns the title of the resource in a language-dependant way.
105: * @param lang the language ("x-default" or null for the default language)
106: * @return the language-dependent value.
107: */
108: public String getTitle(String lang) {
109: return getLangAlt(lang, "title");
110: }
111:
112: /**
113: * Sets the description of the content of the resource.
114: * @param lang the language of the value ("x-default" or null for the default language)
115: * @param value the new value
116: */
117: public void setDescription(String lang, String value) {
118: setLangAlt("description", lang, value);
119: }
120:
121: /** @return the description of the content of the resource (in the default language) */
122: public String getDescription() {
123: return getDescription(null);
124: }
125:
126: /**
127: * Returns the description of the content of the resource in a language-dependant way.
128: * @param lang the language ("x-default" or null for the default language)
129: * @return the language-dependent value.
130: */
131: public String getDescription(String lang) {
132: return getLangAlt(lang, "description");
133: }
134:
135: }
|