/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2004-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* This package contains documentation from OpenGIS specifications.
* OpenGIS consortium's work is fully acknowledged here.
*/
package org.geotools.metadata.iso.citation;
import org.opengis.metadata.citation.Address;
import org.opengis.metadata.citation.Contact;
import org.opengis.metadata.citation.OnLineResource;
import org.opengis.metadata.citation.Telephone;
import org.opengis.util.InternationalString;
import org.geotools.metadata.iso.MetadataEntity;
/**
* Information required to enable contact with the responsible person and/or organization.
*
* @since 2.1
*
* @source $URL$
* @version $Id$
* @author Martin Desruisseaux (IRD)
* @author Touraïvane
*/
public class ContactImpl extends MetadataEntity implements Contact {
/**
* Serial number for interoperability with different versions.
*/
private static final long serialVersionUID = 3283637180253117382L;
/**
* Contact informations for the <A HREF="http://www.opengeospatial.org">Open Geospatial consortium</A>.
* "Open Geospatial consortium" is the new name for "OpenGIS consortium".
*
* @see OnLineResourceImpl#OGC
*/
public static final Contact OGC;
static {
final ContactImpl c = new ContactImpl(OnLineResourceImpl.OGC);
c.freeze();
OGC = c;
}
/**
* Contact informations for the <A HREF="http://www.opengis.org">OpenGIS consortium</A>.
* "OpenGIS consortium" is the old name for "Open Geospatial consortium".
*
* @see OnLineResourceImpl#OPEN_GIS
*/
public static final Contact OPEN_GIS;
static {
final ContactImpl c = new ContactImpl(OnLineResourceImpl.OPEN_GIS);
c.freeze();
OPEN_GIS = c;
}
/**
* Contact informations for the
* <A HREF="http://www.epsg.org">European Petroleum Survey Group</A>.
*
* @see OnLineResourceImpl#EPSG
*/
public static final Contact EPSG;
static {
final ContactImpl c = new ContactImpl(OnLineResourceImpl.EPSG);
c.freeze();
EPSG = c;
}
/**
* Contact informations for the
* <A HREF="http://www.remotesensing.org/geotiff/geotiff.html">GeoTIFF</A> group.
*
* @see OnLineResourceImpl#GEOTIFF
*/
public static final Contact GEOTIFF;
static {
final ContactImpl c = new ContactImpl(OnLineResourceImpl.GEOTIFF);
c.freeze();
GEOTIFF = c;
}
/**
* Contact informations for <A HREF="http://www.esri.com">ESRI</A>.
*
* @see OnLineResourceImpl#ESRI
*/
public static final Contact ESRI;
static {
final ContactImpl c = new ContactImpl(OnLineResourceImpl.ESRI);
c.freeze();
ESRI = c;
}
/**
* Contact informations for <A HREF="http://www.oracle.com">Oracle</A>.
*
* @see OnLineResourceImpl#ORACLE
*/
public static final Contact ORACLE;
static {
final ContactImpl c = new ContactImpl(OnLineResourceImpl.ORACLE);
c.freeze();
ORACLE = c;
}
/**
* Contact informations for <A HREF="http://postgis.refractions.net">PostGIS</A>.
*
* @see OnLineResourceImpl#POSTGIS
*
* @since 2.4
*/
public static final Contact POSTGIS;
static {
final ContactImpl c = new ContactImpl(OnLineResourceImpl.POSTGIS);
c.freeze();
POSTGIS = c;
}
/**
* Contact informations for <A HREF="http://www.sun.com/">Sun Microsystems</A>.
*
* @see OnLineResourceImpl#SUN_MICROSYSTEMS
*
* @since 2.2
*/
public static final Contact SUN_MICROSYSTEMS;
static {
final ContactImpl c = new ContactImpl(OnLineResourceImpl.SUN_MICROSYSTEMS);
c.freeze();
SUN_MICROSYSTEMS = c;
}
/**
* Contact informations for the <A HREF="http://www.geotools.org">Geotools</A> project.
*
* @see OnLineResourceImpl#GEOTOOLS
*/
public static final Contact GEOTOOLS;
static {
final ContactImpl c = new ContactImpl(OnLineResourceImpl.GEOTOOLS);
c.freeze();
GEOTOOLS = c;
}
/**
* Supplemental instructions on how or when to contact the individual or organization.
*/
private InternationalString contactInstructions;
/**
* Time period (including time zone) when individuals can contact the organization or
* individual.
*/
private InternationalString hoursOfService;
/**
* On-line information that can be used to contact the individual or organization.
*/
private OnLineResource onLineResource;
/**
* Physical and email address at which the organization or individual may be contacted.
*/
private Address address;
/**
* Telephone numbers at which the organization or individual may be contacted.
*/
private Telephone phone;
/**
* Constructs an initially empty contact.
*/
public ContactImpl() {
// empty constructor, please use set methods and call
// freeze before returning this instance to client code
}
/**
* Constructs a metadata entity initialized with the values from the specified metadata.
*
* @since 2.4
*/
public ContactImpl(final Contact source) {
super(source);
}
/**
* Constructs a contact initialized to the specified online resource.
*/
public ContactImpl(final OnLineResource resource) {
setOnLineResource(resource);
}
/**
* Returns the physical and email address at which the organization or individual may be contacted.
* Returns {@code null} if none.
*/
public Address getAddress() {
return address;
}
/**
* Set the physical and email address at which the organization or individual may be contacted.
*/
public synchronized void setAddress(final Address newValue) {
checkWritePermission();
address = newValue;
}
/**
* Returns supplemental instructions on how or when to contact the individual or organization.
* Returns {@code null} if none.
*/
public InternationalString getContactInstructions() {
return contactInstructions;
}
/**
* Set supplemental instructions on how or when to contact the individual or organization.
*/
public synchronized void setContactInstructions(final InternationalString newValue) {
checkWritePermission();
contactInstructions = newValue;
}
/**
* Return on-line information that can be used to contact the individual or organization.
* Returns {@code null} if none.
*/
public OnLineResource getOnLineResource() {
return onLineResource;
}
/**
* Set on-line information that can be used to contact the individual or organization.
*/
public synchronized void setOnLineResource(final OnLineResource newValue) {
checkWritePermission();
onLineResource = newValue;
}
/**
* Returns telephone numbers at which the organization or individual may be contacted.
* Returns {@code null} if none.
*/
public Telephone getPhone() {
return phone;
}
/**
* Set telephone numbers at which the organization or individual may be contacted.
*/
public synchronized void setPhone(final Telephone newValue) {
checkWritePermission();
phone = newValue;
}
/**
* Returns time period (including time zone) when individuals can contact the organization or
* individual.
* Returns {@code null} if none.
*/
public InternationalString getHoursOfService() {
return hoursOfService;
}
/**
* Set time period (including time zone) when individuals can contact the organization or
* individual.
*/
public synchronized void setHoursOfService(final InternationalString newValue) {
checkWritePermission();
hoursOfService = newValue;
}
}