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.OnLineResource;
027: import org.opengis.metadata.distribution.DigitalTransferOptions;
028: import org.opengis.metadata.distribution.Medium;
029: import org.opengis.util.InternationalString;
030:
031: // Geotools dependencies
032: import org.geotools.metadata.iso.MetadataEntity;
033:
034: /**
035: * Technical means and media by which a resource is obtained from the distributor.
036: *
037: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/metadata/src/main/java/org/geotools/metadata/iso/distribution/DigitalTransferOptionsImpl.java $
038: * @version $Id: DigitalTransferOptionsImpl.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 DigitalTransferOptionsImpl extends MetadataEntity
045: implements DigitalTransferOptions {
046: /**
047: * Serial number for interoperability with different versions.
048: */
049: private static final long serialVersionUID = -1533064478468754337L;
050:
051: /**
052: * Tiles, layers, geographic areas, etc., in which data is available.
053: */
054: private InternationalString unitsOfDistribution;
055:
056: /**
057: * Estimated size of a unit in the specified transfer format, expressed in megabytes.
058: * The transfer size is > 0.0.
059: * Returns {@code null} if the transfer size is unknown.
060: */
061: private Double transferSize;
062:
063: /**
064: * Information about online sources from which the resource can be obtained.
065: */
066: private Collection onLines;
067:
068: /**
069: * Information about offline media on which the resource can be obtained.
070: */
071: private Medium offLines;
072:
073: /**
074: * Constructs an initially empty digital transfer options.
075: */
076: public DigitalTransferOptionsImpl() {
077: }
078:
079: /**
080: * Constructs a metadata entity initialized with the values from the specified metadata.
081: *
082: * @since 2.4
083: */
084: public DigitalTransferOptionsImpl(
085: final DigitalTransferOptions source) {
086: super (source);
087: }
088:
089: /**
090: * Returne tiles, layers, geographic areas, etc., in which data is available.
091: */
092: public InternationalString getUnitsOfDistribution() {
093: return unitsOfDistribution;
094: }
095:
096: /**
097: * Set tiles, layers, geographic areas, etc., in which data is available.
098: */
099: public synchronized void setUnitsOfDistribution(
100: final InternationalString newValue) {
101: checkWritePermission();
102: unitsOfDistribution = newValue;
103: }
104:
105: /**
106: * Returns an estimated size of a unit in the specified transfer format, expressed in megabytes.
107: * The transfer size is > 0.0.
108: * Returns {@code null} if the transfer size is unknown.
109: */
110: public Double getTransferSize() {
111: return transferSize;
112: }
113:
114: /**
115: * Set an estimated size of a unit in the specified transfer format, expressed in megabytes.
116: * The transfer size is > 0.0.
117: */
118: public synchronized void setTransferSize(final Double newValue) {
119: checkWritePermission();
120: transferSize = newValue;
121: }
122:
123: /**
124: * Returns information about online sources from which the resource can be obtained.
125: */
126: public synchronized Collection getOnLines() {
127: return onLines = nonNullCollection(onLines,
128: OnLineResource.class);
129: }
130:
131: /**
132: * Set information about online sources from which the resource can be obtained.
133: */
134: public synchronized void setOnLines(final Collection newValues) {
135: onLines = copyCollection(newValues, onLines,
136: OnLineResource.class);
137: }
138:
139: /**
140: * Returns information about offline media on which the resource can be obtained.
141: */
142: public Medium getOffLine() {
143: return offLines;
144: }
145:
146: /**
147: * Set information about offline media on which the resource can be obtained.
148: */
149: public synchronized void setOffLine(final Medium newValue) {
150: checkWritePermission();
151: offLines = newValue;
152: }
153: }
|