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: // OpenGIS dependencies
023: import org.opengis.metadata.citation.Address;
024: import org.opengis.metadata.citation.Contact;
025: import org.opengis.metadata.citation.OnLineResource;
026: import org.opengis.metadata.citation.Telephone;
027: import org.opengis.util.InternationalString;
028:
029: // Geotools dependencies
030: import org.geotools.metadata.iso.MetadataEntity;
031:
032: /**
033: * Information required to enable contact with the responsible person and/or organization.
034: *
035: * @since 2.1
036: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/metadata/src/main/java/org/geotools/metadata/iso/citation/ContactImpl.java $
037: * @version $Id: ContactImpl.java 27523 2007-10-17 09:14:21Z desruisseaux $
038: * @author Martin Desruisseaux
039: * @author Touraïvane
040: */
041: public class ContactImpl extends MetadataEntity implements Contact {
042: /**
043: * Serial number for interoperability with different versions.
044: */
045: private static final long serialVersionUID = 3283637180253117382L;
046:
047: /**
048: * Contact informations for the <A HREF="http://www.opengeospatial.org">Open Geospatial consortium</A>.
049: * "Open Geospatial consortium" is the new name for "OpenGIS consortium".
050: *
051: * @see OnLineResourceImpl#OGC
052: */
053: public static final Contact OGC;
054: static {
055: final ContactImpl c = new ContactImpl(OnLineResourceImpl.OGC);
056: c.freeze();
057: OGC = c;
058: }
059: /**
060: * Contact informations for the <A HREF="http://www.opengis.org">OpenGIS consortium</A>.
061: * "OpenGIS consortium" is the old name for "Open Geospatial consortium".
062: *
063: * @see OnLineResourceImpl#OPEN_GIS
064: */
065: public static final Contact OPEN_GIS;
066: static {
067: final ContactImpl c = new ContactImpl(
068: OnLineResourceImpl.OPEN_GIS);
069: c.freeze();
070: OPEN_GIS = c;
071: }
072:
073: /**
074: * Contact informations for the
075: * <A HREF="http://www.epsg.org">European Petroleum Survey Group</A>.
076: *
077: * @see OnLineResourceImpl#EPSG
078: */
079: public static final Contact EPSG;
080: static {
081: final ContactImpl c = new ContactImpl(OnLineResourceImpl.EPSG);
082: c.freeze();
083: EPSG = c;
084: }
085:
086: /**
087: * Contact informations for the
088: * <A HREF="http://www.remotesensing.org/geotiff/geotiff.html">GeoTIFF</A> group.
089: *
090: * @see OnLineResourceImpl#GEOTIFF
091: */
092: public static final Contact GEOTIFF;
093: static {
094: final ContactImpl c = new ContactImpl(
095: OnLineResourceImpl.GEOTIFF);
096: c.freeze();
097: GEOTIFF = c;
098: }
099:
100: /**
101: * Contact informations for <A HREF="http://www.esri.com">ESRI</A>.
102: *
103: * @see OnLineResourceImpl#ESRI
104: */
105: public static final Contact ESRI;
106: static {
107: final ContactImpl c = new ContactImpl(OnLineResourceImpl.ESRI);
108: c.freeze();
109: ESRI = c;
110: }
111:
112: /**
113: * Contact informations for <A HREF="http://www.oracle.com">Oracle</A>.
114: *
115: * @see OnLineResourceImpl#ORACLE
116: */
117: public static final Contact ORACLE;
118: static {
119: final ContactImpl c = new ContactImpl(OnLineResourceImpl.ORACLE);
120: c.freeze();
121: ORACLE = c;
122: }
123:
124: /**
125: * Contact informations for <A HREF="http://postgis.refractions.net">PostGIS</A>.
126: *
127: * @see OnLineResourceImpl#POSTGIS
128: *
129: * @since 2.4
130: */
131: public static final Contact POSTGIS;
132: static {
133: final ContactImpl c = new ContactImpl(
134: OnLineResourceImpl.POSTGIS);
135: c.freeze();
136: POSTGIS = c;
137: }
138:
139: /**
140: * Contact informations for <A HREF="http://www.sun.com/">Sun Microsystems</A>.
141: *
142: * @see OnLineResourceImpl#SUN_MICROSYSTEMS
143: *
144: * @since 2.2
145: */
146: public static final Contact SUN_MICROSYSTEMS;
147: static {
148: final ContactImpl c = new ContactImpl(
149: OnLineResourceImpl.SUN_MICROSYSTEMS);
150: c.freeze();
151: SUN_MICROSYSTEMS = c;
152: }
153:
154: /**
155: * Contact informations for the <A HREF="http://www.geotools.org">Geotools</A> project.
156: *
157: * @see OnLineResourceImpl#GEOTOOLS
158: */
159: public static final Contact GEOTOOLS;
160: static {
161: final ContactImpl c = new ContactImpl(
162: OnLineResourceImpl.GEOTOOLS);
163: c.freeze();
164: GEOTOOLS = c;
165: }
166:
167: /**
168: * Supplemental instructions on how or when to contact the individual or organization.
169: */
170: private InternationalString contactInstructions;
171:
172: /**
173: * Time period (including time zone) when individuals can contact the organization or
174: * individual.
175: */
176: private InternationalString hoursOfService;
177:
178: /**
179: * On-line information that can be used to contact the individual or organization.
180: */
181: private OnLineResource onLineResource;
182:
183: /**
184: * Physical and email address at which the organization or individual may be contacted.
185: */
186: private Address address;
187:
188: /**
189: * Telephone numbers at which the organization or individual may be contacted.
190: */
191: private Telephone phone;
192:
193: /**
194: * Constructs an initially empty contact.
195: */
196: public ContactImpl() {
197: // empty constructor, please use set methods and call
198: // freeze before returning this instance to client code
199: }
200:
201: /**
202: * Constructs a metadata entity initialized with the values from the specified metadata.
203: *
204: * @since 2.4
205: */
206: public ContactImpl(final Contact source) {
207: super (source);
208: }
209:
210: /**
211: * Constructs a contact initialized to the specified online resource.
212: */
213: public ContactImpl(final OnLineResource resource) {
214: setOnLineResource(resource);
215: }
216:
217: /**
218: * Returns the physical and email address at which the organization or individual may be contacted.
219: * Returns {@code null} if none.
220: */
221: public Address getAddress() {
222: return address;
223: }
224:
225: /**
226: * Set the physical and email address at which the organization or individual may be contacted.
227: */
228: public synchronized void setAddress(final Address newValue) {
229: checkWritePermission();
230: address = newValue;
231: }
232:
233: /**
234: * Returns supplemental instructions on how or when to contact the individual or organization.
235: * Returns {@code null} if none.
236: */
237: public InternationalString getContactInstructions() {
238: return contactInstructions;
239: }
240:
241: /**
242: * Set supplemental instructions on how or when to contact the individual or organization.
243: */
244: public synchronized void setContactInstructions(
245: final InternationalString newValue) {
246: checkWritePermission();
247: contactInstructions = newValue;
248: }
249:
250: /**
251: * Return on-line information that can be used to contact the individual or organization.
252: * Returns {@code null} if none.
253: */
254: public OnLineResource getOnLineResource() {
255: return onLineResource;
256: }
257:
258: /**
259: * Set on-line information that can be used to contact the individual or organization.
260: */
261: public synchronized void setOnLineResource(
262: final OnLineResource newValue) {
263: checkWritePermission();
264: onLineResource = newValue;
265: }
266:
267: /**
268: * Returns telephone numbers at which the organization or individual may be contacted.
269: * Returns {@code null} if none.
270: */
271: public Telephone getPhone() {
272: return phone;
273: }
274:
275: /**
276: * Set telephone numbers at which the organization or individual may be contacted.
277: */
278: public synchronized void setPhone(final Telephone newValue) {
279: checkWritePermission();
280: phone = newValue;
281: }
282:
283: /**
284: * Returns time period (including time zone) when individuals can contact the organization or
285: * individual.
286: * Returns {@code null} if none.
287: */
288: public InternationalString getHoursOfService() {
289: return hoursOfService;
290: }
291:
292: /**
293: * Set time period (including time zone) when individuals can contact the organization or
294: * individual.
295: */
296: public synchronized void setHoursOfService(
297: final InternationalString newValue) {
298: checkWritePermission();
299: hoursOfService = newValue;
300: }
301: }
|