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.distribution;
021:
022: // J2SE direct dependencies
023: import java.util.Collection;
024:
025: // OpenGIS dependencies
026: import org.opengis.metadata.citation.ResponsibleParty;
027: import org.opengis.metadata.distribution.DigitalTransferOptions;
028: import org.opengis.metadata.distribution.Distributor;
029: import org.opengis.metadata.distribution.Format;
030: import org.opengis.metadata.distribution.StandardOrderProcess;
031:
032: // Geotools dependencies
033: import org.geotools.metadata.iso.MetadataEntity;
034:
035: /**
036: * Information about the distributor.
037: *
038: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/metadata/src/main/java/org/geotools/metadata/iso/distribution/DistributorImpl.java $
039: * @version $Id: DistributorImpl.java 25189 2007-04-17 13:23:47Z desruisseaux $
040: * @author Martin Desruisseaux
041: * @author Touraïvane
042: *
043: * @since 2.1
044: */
045: public class DistributorImpl extends MetadataEntity implements
046: Distributor {
047: /**
048: * Serial number for interoperability with different versions.
049: */
050: private static final long serialVersionUID = 7142984376823483766L;
051:
052: /**
053: * Party from whom the resource may be obtained. This list need not be exhaustive.
054: */
055: private ResponsibleParty distributorContact;
056:
057: /**
058: * Provides information about how the resource may be obtained, and related
059: * instructions and fee information.
060: */
061: private Collection distributionOrderProcesses;
062:
063: /**
064: * Provides information about the format used by the distributor.
065: */
066: private Collection distributorFormats;
067:
068: /**
069: * Provides information about the technical means and media used by the distributor.
070: */
071: private Collection distributorTransferOptions;
072:
073: /**
074: * Constructs an initially empty distributor.
075: */
076: public DistributorImpl() {
077: }
078:
079: /**
080: * Constructs a metadata entity initialized with the values from the specified metadata.
081: *
082: * @since 2.4
083: */
084: public DistributorImpl(final Distributor source) {
085: super (source);
086: }
087:
088: /**
089: * Creates a distributor with the specified contact.
090: */
091: public DistributorImpl(final ResponsibleParty distributorContact) {
092: setDistributorContact(distributorContact);
093: }
094:
095: /**
096: * Party from whom the resource may be obtained. This list need not be exhaustive.
097: */
098: public ResponsibleParty getDistributorContact() {
099: return distributorContact;
100: }
101:
102: /**
103: * Set the party from whom the resource may be obtained. This list need not be exhaustive.
104: */
105: public synchronized void setDistributorContact(
106: final ResponsibleParty newValue) {
107: checkWritePermission();
108: distributorContact = newValue;
109: }
110:
111: /**
112: * Provides information about how the resource may be obtained, and related
113: * instructions and fee information.
114: */
115: public synchronized Collection getDistributionOrderProcesses() {
116: return distributionOrderProcesses = nonNullCollection(
117: distributionOrderProcesses, StandardOrderProcess.class);
118: }
119:
120: /**
121: * Set information about how the resource may be obtained, and related
122: * instructions and fee information.
123: */
124: public synchronized void setDistributionOrderProcesses(
125: final Collection newValues) {
126: distributionOrderProcesses = copyCollection(newValues,
127: distributionOrderProcesses, StandardOrderProcess.class);
128: }
129:
130: /**
131: * Provides information about the format used by the distributor.
132: */
133: public synchronized Collection getDistributorFormats() {
134: return distributorFormats = nonNullCollection(
135: distributorFormats, Format.class);
136: }
137:
138: /**
139: * Set information about the format used by the distributor.
140: */
141: public synchronized void setDistributorFormats(
142: final Collection newValues) {
143: distributorFormats = copyCollection(newValues,
144: distributorFormats, Format.class);
145: }
146:
147: /**
148: * Provides information about the technical means and media used by the distributor.
149: */
150: public synchronized Collection getDistributorTransferOptions() {
151: return distributorTransferOptions = nonNullCollection(
152: distributorTransferOptions,
153: DigitalTransferOptions.class);
154: }
155:
156: /**
157: * Provides information about the technical means and media used by the distributor.
158: */
159: public synchronized void setDistributorTransferOptions(
160: final Collection newValues) {
161: distributorTransferOptions = copyCollection(newValues,
162: distributorTransferOptions,
163: DigitalTransferOptions.class);
164: }
165: }
|