/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2011, Open Source Geospatial Foundation (OSGeo) * (C) 2004-2005, Open Geospatial Consortium Inc. * * All Rights Reserved. http://www.opengis.org/legal/ */ package org.opengis.metadata.citation; import java.net.URI; import java.util.Collection; import org.opengis.util.InternationalString; import org.opengis.annotation.Obligation; import org.opengis.referencing.Factory; /** * A factory for metadata from the citation package. * All factory methods accept null value for {@linkplain Obligation#OPTIONAL optional} arguments. * The value must be non-null for {@linkplain Obligation#MANDATORY mandatory} arguments. * * * @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/metadata/citation/CitationFactory.java $ * @version <A HREF="http://www.opengeospatial.org/standards/as#01-111">ISO 19115</A> * @author Jesse Crossley (SYS Technologies) * @since GeoAPI 2.0 */ public interface CitationFactory extends Factory { /** * Location of the responsible individual or organization. * * @param deliveryPoints Address line for the location (as described in ISO 11180, Annex A). * @param city The city of the location. * @param administrativeArea State, province of the location. * @param postalCode ZIP or other postal code. * @param country Country of the physical address. * @param electronicMailAddresses Address of the electronic mailbox of the responsible organization or individual. * @return The address. */ Address createAddress( Collection<String> deliveryPoints, InternationalString city, InternationalString administrativeArea, String postalCode, InternationalString country, Collection<String> electronicMailAddresses); /** * Information required to enable contact with the responsible person and/or organization. * * @param phone Telephone numbers at which the organization or individual may be contacted. * @param address Physical and email address at which the organization or individual may be contacted. * @param onLineResource On-line information that can be used to contact the individual or organization. * @param hoursOfService Time period (including time zone) when individuals can contact the organization or individual. * @param contactInstructions Supplemental instructions on how or when to contact the individual or organization. * @return The contact. */ Contact createContact( Telephone phone, Address address, OnLineResource onLineResource, InternationalString hoursOfService, InternationalString contactInstructions); /** * Information about on-line sources from which the dataset, specification, or * community profile name and extended metadata elements can be obtained. * * @param linkage Location (address) for on-line access. * @param protocol Connection protocol to be used. * @param applicationProfile Name of an application profile that can be used with the online resource. * @param description Detailed text description of what the online resource is/does. * @param function Code for function performed by the online resource. * @return The online resource. */ OnLineResource createOnLineResource( URI linkage, String protocol, String applicationProfile, InternationalString description, OnLineFunction function); /** * Identification of, and means of communication with, person(s) and organizations associated with the dataset. * Only one of {@code individualName}, {@code organisationName} and {@code positionName} should be provided. * * @param individualName Name of the responsible person- surname, given name, title separated by a delimiter. * @param organisationName Name of the responsible organization. * @param positionName Role or position of the responsible person. * @param contactInfo Address of the responsible party. * @param role Function performed by the responsible party. * @return The responsible party. */ ResponsibleParty createResponsibleParty( String individualName, InternationalString organisationName, InternationalString positionName, Contact contactInfo, Role role); /** * Telephone numbers for contacting the responsible individual or organization. * * @param voice Telephone number by which individuals can speak to the responsible organization or individual. * @param facsimile Telephone number of a facsimile machine for the responsible organization or individual. * @return The telephone. */ Telephone createTelephone( String voice, String facsimile); }