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: import java.util.Collections;
025:
026: // OpenGIS dependencies
027: import org.opengis.metadata.citation.Citation;
028: import org.opengis.metadata.citation.ResponsibleParty;
029: import org.opengis.metadata.constraint.Constraints;
030: import org.opengis.metadata.distribution.Format;
031: import org.opengis.metadata.identification.AggregateInformation;
032: import org.opengis.metadata.identification.Identification;
033: import org.opengis.metadata.identification.BrowseGraphic;
034: import org.opengis.metadata.identification.Keywords;
035: import org.opengis.metadata.identification.Progress;
036: import org.opengis.metadata.identification.Usage;
037: import org.opengis.metadata.maintenance.MaintenanceInformation;
038: import org.opengis.util.InternationalString;
039:
040: // Geotools dependencies
041: import org.geotools.metadata.iso.MetadataEntity;
042:
043: /**
044: * Basic information required to uniquely identify a resource or resources.
045: *
046: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/metadata/src/main/java/org/geotools/metadata/iso/identification/IdentificationImpl.java $
047: * @version $Id: IdentificationImpl.java 25189 2007-04-17 13:23:47Z desruisseaux $
048: * @author Martin Desruisseaux
049: * @author Touraïvane
050: *
051: * @since 2.1
052: */
053: public class IdentificationImpl extends MetadataEntity implements
054: Identification {
055: /**
056: * Serial number for compatibility with different versions.
057: */
058: private static final long serialVersionUID = -3715084806249419137L;
059:
060: /**
061: * Citation data for the resource(s).
062: */
063: private Citation citation;
064:
065: /**
066: * Brief narrative summary of the content of the resource(s).
067: */
068: private InternationalString abstracts;
069:
070: /**
071: * Summary of the intentions with which the resource(s) was developed.
072: */
073: private InternationalString purpose;
074:
075: /**
076: * Recognition of those who contributed to the resource(s).
077: */
078: private Collection credits;
079:
080: /**
081: * Status of the resource(s).
082: */
083: private Collection status;
084:
085: /**
086: * Identification of, and means of communication with, person(s) and organizations(s)
087: * associated with the resource(s).
088: */
089: private Collection pointOfContacts;
090:
091: /**
092: * Provides information about the frequency of resource updates, and the scope of those updates.
093: */
094: private Collection resourceMaintenance;
095:
096: /**
097: * Provides a graphic that illustrates the resource(s) (should include a legend for the graphic).
098: */
099: private Collection graphicOverviews;
100:
101: /**
102: * Provides a description of the format of the resource(s).
103: */
104: private Collection resourceFormat;
105:
106: /**
107: * Provides category keywords, their type, and reference source.
108: */
109: private Collection descriptiveKeywords;
110:
111: /**
112: * Provides basic information about specific application(s) for which the resource(s)
113: * has/have been or is being used by different users.
114: */
115: private Collection resourceSpecificUsages;
116:
117: /**
118: * Provides information about constraints which apply to the resource(s).
119: */
120: private Collection resourceConstraints;
121:
122: /**
123: * Provides aggregate dataset information.
124: */
125: private Collection aggregationInfo;
126:
127: /**
128: * Constructs an initially empty identification.
129: */
130: public IdentificationImpl() {
131: }
132:
133: /**
134: * Constructs a metadata entity initialized with the values from the specified metadata.
135: *
136: * @since 2.4
137: */
138: public IdentificationImpl(final Identification source) {
139: super (source);
140: }
141:
142: /**
143: * Creates an identification initialized to the specified values.
144: */
145: public IdentificationImpl(final Citation citation,
146: final InternationalString abstracts) {
147: setCitation(citation);
148: setAbstract(abstracts);
149: }
150:
151: /**
152: * Citation data for the resource(s).
153: */
154: public Citation getCitation() {
155: return citation;
156: }
157:
158: /**
159: * Set the citation data for the resource(s).
160: */
161: public synchronized void setCitation(final Citation newValue) {
162: checkWritePermission();
163: citation = newValue;
164: }
165:
166: /**
167: * Brief narrative summary of the content of the resource(s).
168: */
169: public InternationalString getAbstract() {
170: return abstracts;
171: }
172:
173: /**
174: * Set a brief narrative summary of the content of the resource(s).
175: */
176: public synchronized void setAbstract(
177: final InternationalString newValue) {
178: checkWritePermission();
179: abstracts = newValue;
180: }
181:
182: /**
183: * Summary of the intentions with which the resource(s) was developed.
184: */
185: public InternationalString getPurpose() {
186: return purpose;
187: }
188:
189: /**
190: * Set a summary of the intentions with which the resource(s) was developed.
191: */
192: public synchronized void setPurpose(
193: final InternationalString newValue) {
194: checkWritePermission();
195: purpose = newValue;
196: }
197:
198: /**
199: * Recognition of those who contributed to the resource(s).
200: */
201: public synchronized Collection getCredits() {
202: return credits = nonNullCollection(credits, String.class);
203: }
204:
205: /**
206: * Set a recognition of those who contributed to the resource(s).
207: */
208: public synchronized void setCredits(final Collection newValues) {
209: credits = copyCollection(newValues, credits, String.class);
210: }
211:
212: /**
213: * Status of the resource(s).
214: */
215: public synchronized Collection getStatus() {
216: return status = nonNullCollection(status, Progress.class);
217: }
218:
219: /**
220: * Set the status of the resource(s).
221: */
222: public synchronized void setStatus(final Collection newValues) {
223: status = copyCollection(newValues, status, Progress.class);
224: }
225:
226: /**
227: * Identification of, and means of communication with, person(s) and organizations(s)
228: * associated with the resource(s).
229: */
230: public synchronized Collection getPointOfContacts() {
231: return pointOfContacts = nonNullCollection(pointOfContacts,
232: ResponsibleParty.class);
233: }
234:
235: /**
236: * Set the point of contacts.
237: */
238: public synchronized void setPointOfContacts(
239: final Collection newValues) {
240: pointOfContacts = copyCollection(newValues, pointOfContacts,
241: ResponsibleParty.class);
242: }
243:
244: /**
245: * Provides information about the frequency of resource updates, and the scope of those updates.
246: */
247: public synchronized Collection getResourceMaintenance() {
248: return resourceMaintenance = nonNullCollection(
249: resourceMaintenance, MaintenanceInformation.class);
250: }
251:
252: /**
253: * Set information about the frequency of resource updates, and the scope of those updates.
254: */
255: public synchronized void setResourceMaintenance(
256: final Collection newValues) {
257: resourceMaintenance = copyCollection(newValues,
258: resourceMaintenance, MaintenanceInformation.class);
259: }
260:
261: /**
262: * Provides a graphic that illustrates the resource(s) (should include a legend for the graphic).
263: */
264: public synchronized Collection getGraphicOverviews() {
265: return graphicOverviews = nonNullCollection(graphicOverviews,
266: BrowseGraphic.class);
267: }
268:
269: /**
270: * Set a graphic that illustrates the resource(s).
271: */
272: public synchronized void setGraphicOverviews(
273: final Collection newValues) {
274: graphicOverviews = copyCollection(newValues, graphicOverviews,
275: BrowseGraphic.class);
276: }
277:
278: /**
279: * Provides a description of the format of the resource(s).
280: */
281: public synchronized Collection getResourceFormat() {
282: return resourceFormat = nonNullCollection(resourceFormat,
283: Format.class);
284: }
285:
286: /**
287: * Set a description of the format of the resource(s).
288: */
289: public synchronized void setResourceFormat(
290: final Collection newValues) {
291: resourceFormat = copyCollection(newValues, resourceFormat,
292: Format.class);
293: }
294:
295: /**
296: * Provides category keywords, their type, and reference source.
297: */
298: public synchronized Collection getDescriptiveKeywords() {
299: return descriptiveKeywords = nonNullCollection(
300: descriptiveKeywords, Keywords.class);
301: }
302:
303: /**
304: * Set category keywords, their type, and reference source.
305: */
306: public synchronized void setDescriptiveKeywords(
307: final Collection newValues) {
308: descriptiveKeywords = copyCollection(newValues,
309: descriptiveKeywords, Keywords.class);
310: }
311:
312: /**
313: * Provides basic information about specific application(s) for which the resource(s)
314: * has/have been or is being used by different users.
315: */
316: public synchronized Collection getResourceSpecificUsages() {
317: return resourceSpecificUsages = nonNullCollection(
318: resourceSpecificUsages, Usage.class);
319: }
320:
321: /**
322: * Set basic information about specific application(s).
323: */
324: public synchronized void setResourceSpecificUsages(
325: final Collection newValues) {
326: resourceSpecificUsages = copyCollection(newValues,
327: resourceSpecificUsages, Usage.class);
328: }
329:
330: /**
331: * Provides information about constraints which apply to the resource(s).
332: */
333: public synchronized Collection getResourceConstraints() {
334: return resourceConstraints = nonNullCollection(
335: resourceConstraints, Constraints.class);
336: }
337:
338: /**
339: * Set information about constraints which apply to the resource(s).
340: */
341: public synchronized void setResourceConstraints(
342: final Collection newValues) {
343: resourceConstraints = copyCollection(newValues,
344: resourceConstraints, Constraints.class);
345: }
346:
347: /**
348: * Provides aggregate dataset information.
349: *
350: * @since 2.4
351: */
352: public synchronized Collection getAggregationInfo() {
353: return aggregationInfo = nonNullCollection(aggregationInfo,
354: AggregateInformation.class);
355: }
356:
357: /**
358: * Sets aggregate dataset information.
359: *
360: * @since 2.4
361: */
362: public synchronized void setAggregationInfo(
363: final Collection newValues) {
364: aggregationInfo = copyCollection(newValues, aggregationInfo,
365: AggregateInformation.class);
366: }
367: }
|