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.distribution.Distributor;
027: import org.opengis.metadata.distribution.Format;
028: import org.opengis.util.InternationalString;
029:
030: // Geotools dependencies
031: import org.geotools.metadata.iso.MetadataEntity;
032:
033: /**
034: * Description of the computer language construct that specifies the representation
035: * of data objects in a record, file, message, storage device or transmission channel.
036: *
037: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/metadata/src/main/java/org/geotools/metadata/iso/distribution/FormatImpl.java $
038: * @version $Id: FormatImpl.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 FormatImpl extends MetadataEntity implements Format {
045: /**
046: * Serial number for interoperability with different versions.
047: */
048: private static final long serialVersionUID = 6498897239493553607L;
049:
050: /**
051: * Name of the data transfer format(s).
052: */
053: private InternationalString name;
054:
055: /**
056: * Version of the format (date, number, etc.).
057: */
058: private InternationalString version;
059:
060: /**
061: * Amendment number of the format version.
062: */
063: private InternationalString amendmentNumber;
064:
065: /**
066: * Name of a subset, profile, or product specification of the format.
067: */
068: private InternationalString specification;
069:
070: /**
071: * Recommendations of algorithms or processes that can be applied to read or
072: * expand resources to which compression techniques have been applied.
073: */
074: private InternationalString fileDecompressionTechnique;
075:
076: /**
077: * Provides information about the distributor’s format.
078: */
079: private Collection formatDistributors;
080:
081: /**
082: * Constructs an initially empty format.
083: */
084: public FormatImpl() {
085: }
086:
087: /**
088: * Constructs a metadata entity initialized with the values from the specified metadata.
089: *
090: * @since 2.4
091: */
092: public FormatImpl(final Format source) {
093: super (source);
094: }
095:
096: /**
097: * Creates a format initialized to the given name.
098: */
099: public FormatImpl(final InternationalString name,
100: final InternationalString version) {
101: setName(name);
102: setVersion(version);
103: }
104:
105: /**
106: * Returns the name of the data transfer format(s).
107: */
108: public InternationalString getName() {
109: return name;
110: }
111:
112: /**
113: * Set the name of the data transfer format(s).
114: */
115: public synchronized void setName(final InternationalString newValue) {
116: checkWritePermission();
117: name = newValue;
118: }
119:
120: /**
121: * Returne the version of the format (date, number, etc.).
122: */
123: public InternationalString getVersion() {
124: return version;
125: }
126:
127: /**
128: * Set the version of the format (date, number, etc.).
129: */
130: public synchronized void setVersion(
131: final InternationalString newValue) {
132: checkWritePermission();
133: version = newValue;
134: }
135:
136: /**
137: * Returns the amendment number of the format version.
138: */
139: public InternationalString getAmendmentNumber() {
140: return amendmentNumber;
141: }
142:
143: /**
144: * Set the amendment number of the format version.
145: */
146: public synchronized void setAmendmentNumber(
147: final InternationalString newValue) {
148: checkWritePermission();
149: amendmentNumber = newValue;
150: }
151:
152: /**
153: * Returns the name of a subset, profile, or product specification of the format.
154: */
155: public InternationalString getSpecification() {
156: return specification;
157: }
158:
159: /**
160: * Set the name of a subset, profile, or product specification of the format.
161: */
162: public synchronized void setSpecification(
163: final InternationalString newValue) {
164: checkWritePermission();
165: specification = newValue;
166: }
167:
168: /**
169: * Returns recommendations of algorithms or processes that can be applied to read or
170: * expand resources to which compression techniques have been applied.
171: */
172: public InternationalString getFileDecompressionTechnique() {
173: return fileDecompressionTechnique;
174: }
175:
176: /**
177: * Set recommendations of algorithms or processes that can be applied to read or
178: * expand resources to which compression techniques have been applied.
179: */
180: public synchronized void setFileDecompressionTechnique(
181: final InternationalString newValue) {
182: checkWritePermission();
183: fileDecompressionTechnique = newValue;
184: }
185:
186: /**
187: * Provides information about the distributor’s format.
188: */
189: public synchronized Collection getFormatDistributors() {
190: return formatDistributors = nonNullCollection(
191: formatDistributors, Distributor.class);
192: }
193:
194: /**
195: * Set information about the distributor’s format.
196: */
197: public synchronized void setFormatDistributors(
198: final Collection newValues) {
199: formatDistributors = copyCollection(newValues,
200: formatDistributors, Distributor.class);
201: }
202: }
|