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.citation;
021:
022: // J2SE direct dependencies
023: import java.util.Collection;
024: import java.util.Iterator;
025:
026: // OpenGIS dependencies
027: import org.opengis.metadata.citation.Address;
028: import org.opengis.util.InternationalString;
029:
030: // Geotools dependencies
031: import org.geotools.metadata.iso.MetadataEntity;
032:
033: /**
034: * Location of the responsible individual or organization.
035: *
036: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/metadata/src/main/java/org/geotools/metadata/iso/citation/AddressImpl.java $
037: * @version $Id: AddressImpl.java 25189 2007-04-17 13:23:47Z desruisseaux $
038: * @author Martin Desruisseaux
039: * @author Touraïvane
040: *
041: * @since 2.1
042: */
043: public class AddressImpl extends MetadataEntity implements Address {
044: /**
045: * Serial number for interoperability with different versions.
046: */
047: private static final long serialVersionUID = 2278687294173262546L;
048:
049: /**
050: * State, province of the location.
051: */
052: private InternationalString administrativeArea;
053:
054: /**
055: * The city of the location
056: */
057: private InternationalString city;
058:
059: /**
060: * Country of the physical address.
061: */
062: private InternationalString country;
063:
064: /**
065: * ZIP or other postal code.
066: */
067: private String postalCode;
068:
069: /**
070: * Address line for the location (as described in ISO 11180, Annex A).
071: */
072: private Collection deliveryPoints;
073:
074: /**
075: * Address of the electronic mailbox of the responsible organization or individual.
076: */
077: private Collection electronicMailAddresses;
078:
079: /**
080: * Constructs an initially empty address.
081: */
082: public AddressImpl() {
083: }
084:
085: /**
086: * Constructs a metadata entity initialized with the values from the specified metadata.
087: *
088: * @since 2.4
089: */
090: public AddressImpl(final Address source) {
091: super (source);
092: }
093:
094: /**
095: * Return the state, province of the location.
096: * Returns {@code null} if unspecified.
097: */
098: public InternationalString getAdministrativeArea() {
099: return administrativeArea;
100: }
101:
102: /**
103: * Set the state, province of the location.
104: */
105: public synchronized void setAdministrativeArea(
106: final InternationalString newValue) {
107: checkWritePermission();
108: administrativeArea = newValue;
109: }
110:
111: /**
112: * Returns the city of the location
113: * Returns {@code null} if unspecified.
114: */
115: public InternationalString getCity() {
116: return city;
117: }
118:
119: /**
120: * Set the city of the location
121: */
122: public synchronized void setCity(final InternationalString newValue) {
123: checkWritePermission();
124: city = newValue;
125: }
126:
127: /**
128: * Returns the country of the physical address.
129: * Returns {@code null} if unspecified.
130: */
131: public InternationalString getCountry() {
132: return country;
133: }
134:
135: /**
136: * set the country of the physical address.
137: */
138: public synchronized void setCountry(
139: final InternationalString newValue) {
140: checkWritePermission();
141: country = newValue;
142: }
143:
144: /**
145: * Returns the address line for the location (as described in ISO 11180, Annex A).
146: */
147: public synchronized Collection getDeliveryPoints() {
148: return deliveryPoints = nonNullCollection(deliveryPoints,
149: String.class);
150: }
151:
152: /**
153: * Set the address line for the location (as described in ISO 11180, Annex A).
154: */
155: public synchronized void setDeliveryPoints(
156: final Collection newValues) {
157: deliveryPoints = copyCollection(newValues, deliveryPoints,
158: String.class);
159: }
160:
161: /**
162: * Returns the address of the electronic mailbox of the responsible organization or individual.
163: */
164: public synchronized Collection getElectronicMailAddresses() {
165: return electronicMailAddresses = nonNullCollection(
166: electronicMailAddresses, String.class);
167: }
168:
169: /**
170: * Set the address of the electronic mailbox of the responsible organization or individual.
171: */
172: public synchronized void setElectronicMailAddresses(
173: final Collection newValues) {
174: electronicMailAddresses = copyCollection(newValues,
175: electronicMailAddresses, String.class);
176: }
177:
178: /**
179: * Returns ZIP or other postal code.
180: * Returns {@code null} if unspecified.
181: */
182: public String getPostalCode() {
183: return postalCode;
184: }
185:
186: /**
187: * Set ZIP or other postal code.
188: */
189: public synchronized void setPostalCode(final String newValue) {
190: checkWritePermission();
191: postalCode = newValue;
192: }
193: }
|