001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2004-2006, GeoTools Project Managment Committee (PMC)
005: * (C) 2004, Institut de Recherche pour le Développement
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation;
010: * version 2.1 of the License.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * This package contains documentation from OpenGIS specifications.
018: * OpenGIS consortium's work is fully acknowledged here.
019: */
020: package org.geotools.metadata.iso.identification;
021:
022: // J2SE direct dependencies
023: import java.util.Collection;
024:
025: // OpenGIS dependencies
026: import org.opengis.metadata.citation.Citation;
027: import org.opengis.metadata.identification.Keywords;
028: import org.opengis.metadata.identification.KeywordType;
029: import org.opengis.util.InternationalString;
030:
031: // Geotools dependencies
032: import org.geotools.metadata.iso.MetadataEntity;
033:
034: /**
035: * Keywords, their type and reference source.
036: *
037: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/metadata/src/main/java/org/geotools/metadata/iso/identification/KeywordsImpl.java $
038: * @version $Id: KeywordsImpl.java 25189 2007-04-17 13:23:47Z desruisseaux $
039: * @author Martin Desruisseaux
040: * @author Touraïvane
041: *
042: * @since 2.1
043: */
044: public class KeywordsImpl extends MetadataEntity implements Keywords {
045: /**
046: * Serial number for compatibility with different versions.
047: */
048: private static final long serialVersionUID = 48691634443678266L;
049:
050: /**
051: * Commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject.
052: */
053: private Collection keywords;
054:
055: /**
056: * Subject matter used to group similar keywords.
057: */
058: private KeywordType type;
059:
060: /**
061: * Name of the formally registered thesaurus or a similar authoritative source of keywords.
062: */
063: private Citation thesaurusName;
064:
065: /**
066: * Constructs an initially empty keywords.
067: */
068: public KeywordsImpl() {
069: super ();
070: }
071:
072: /**
073: * Constructs a metadata entity initialized with the values from the specified metadata.
074: *
075: * @since 2.4
076: */
077: public KeywordsImpl(final Keywords source) {
078: super (source);
079: }
080:
081: /**
082: * Creates keywords initialized to the given list.
083: */
084: public KeywordsImpl(final Collection keywords) {
085: setKeywords(keywords);
086: }
087:
088: /**
089: * Commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject.
090: */
091: public synchronized Collection getKeywords() {
092: return keywords = nonNullCollection(keywords,
093: InternationalString.class);
094: }
095:
096: /**
097: * Set commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject.
098: */
099: public synchronized void setKeywords(final Collection newValues) {
100: keywords = copyCollection(newValues, keywords,
101: InternationalString.class);
102: }
103:
104: /**
105: * Subject matter used to group similar keywords.
106: */
107: public KeywordType getType() {
108: return type;
109: }
110:
111: /**
112: * Set the subject matter used to group similar keywords.
113: */
114: public synchronized void setType(final KeywordType newValue) {
115: checkWritePermission();
116: type = newValue;
117: }
118:
119: /**
120: * Name of the formally registered thesaurus or a similar authoritative source of keywords.
121: */
122: public Citation getThesaurusName() {
123: return thesaurusName;
124: }
125:
126: /**
127: * Set the name of the formally registered thesaurus or a similar authoritative source
128: * of keywords.
129: */
130: public synchronized void setThesaurusName(final Citation newValue) {
131: checkWritePermission();
132: thesaurusName = newValue;
133: }
134: }
|