/**************************************************************************************************
 **
 ** $Id: CommonFactory.java 831 2006-05-01 00:27:23Z Desruisseaux $
 **
 ** $URL: http://svn.code.sf.net/p/geoapi/code/branches/2.0.x/geoapi/src/main/java/org/opengis/go/CommonFactory.java $
 **
 ** Copyright (C) 2003-2005 Open GIS Consortium, Inc.
 ** All Rights Reserved. http://www.opengis.org/legal/
 **
 *************************************************************************************************/

package org.opengis.go;

import org.opengis.feature.FeatureTypeFactory;
import org.opengis.feature.display.FeatureDisplayFactory;
import org.opengis.filter.FilterFactory;
import org.opengis.go.display.DisplayFactory;
import org.opengis.metadata.citation.CitationFactory;
import org.opengis.referencing.crs.CRSAuthorityFactory;
import org.opengis.referencing.crs.CRSFactory;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.cs.CSAuthorityFactory;
import org.opengis.referencing.cs.CSFactory;
import org.opengis.referencing.datum.DatumAuthorityFactory;
import org.opengis.referencing.datum.DatumFactory;
import org.opengis.referencing.operation.CoordinateOperationAuthorityFactory;
import org.opengis.referencing.operation.CoordinateOperationFactory;
import org.opengis.sld.FeatureStyleFactory;
import org.opengis.spatialschema.geometry.geometry.GeometryFactory;
import org.opengis.spatialschema.geometry.primitive.PrimitiveFactory;
import org.opengis.util.NameFactory;

/**
 * Defines a common abstraction for getting the different factories for classes that all GO-1
 * objects have a common dependency on.
 *
 * @author Open GIS Consortium, Inc.
 * @version $Revision: 816 $, $Date: 2006-04-06 11:16:19 +1100 (jeu., 06 avr. 2006) $
 */
public interface CommonFactory {
    /**
     * Returns an object that represents the capabilities of this
     * common factory and its associated canvas.
     *
     * @return this {@code CommonFactory}'s capabilities
     */
    CommonCapabilities getCapabilities();
       
    /**
     * Returns the {@linkplain FeatureDisplayFactory feature display factory} singleton.
     *
     * @return the feature display factory.
     */
    FeatureDisplayFactory getFeatureDisplayFactory();

    /**
     * Returns the {@linkplain FeatureTypeFactory feature type factory} singleton.
     *
     * @return the feature type factory.
     */
    FeatureTypeFactory getFeatureTypeFactory();
    
    /**
     * Returns the {@linkplain FilterFactory filter factory} singleton.
     *
     * @return the filter factory.
     */
    FilterFactory getFilterFactory();
       
    /**
     * Returns the {@linkplain DisplayFactory display factory} singleton.
     *
     * @return the display factory.
     */
    DisplayFactory getDisplayFactory();
    
    /**
     * Returns the {@linkplain NameFactory name factory} singleton.
     *
     * @return the name factory.
     */
    NameFactory getNameFactory();
    
    /**
     * Returns the {@linkplain CitationFactory citation factory} singleton.
     *
     * @return the citation factory.
     */
    CitationFactory getCitationFactory();

    /**
     * Returns the {@linkplain CRSAuthorityFactory CRS authority factory} singleton.
     *
     * @return the CRS authority factory.
     */
    CRSAuthorityFactory getCRSAuthorityFactory();

    /**
     * Returns the {@linkplain CRSFactory CRS factory} singleton.
     *
     * @return the CRS factory.
     */
    CRSFactory getCRSFactory();

    /**
     * Returns the {@linkplain CSAuthorityFactory CS authority factory} singleton.
     *
     * @return the CS authority factory.
     */
    CSAuthorityFactory getCSAuthorityFactory();

    /**
     * Returns the {@linkplain CSFactory CS factory} singleton.
     *
     * @return the CS factory.
     */
    CSFactory getCSFactory();

    /**
     * Returns the {@linkplain DatumAuthorityFactory datum authority factory} singleton.
     *
     * @return the datum authority factory.
     */
    DatumAuthorityFactory getDatumAuthorityFactory();

    /**
     * Returns the {@linkplain DatumFactory datum factory} singleton.
     *
     * @return the datum factory.
     */
    DatumFactory getDatumFactory();

    /**
     * Returns the {@linkplain CoordinateOperationAuthorityFactory coordinate operation authority
     * factory} singleton.
     *
     * @return the coordinate operation authority factory.
     */
    CoordinateOperationAuthorityFactory getCoordinateOperationAuthorityFactory();
    
    /**
     * Returns the {@linkplain CoordinateOperationFactory coordinate operation factory} singleton.
     *
     * @return the coordinate operation factory.
     */
    CoordinateOperationFactory getCoordinateOperationFactory();
    
    /**
     * Returns the {@linkplain FeatureStyleFactory feature style factory} singleton.
     *
     * @return the feature style factory.
     */
    FeatureStyleFactory getFeatureStyleFactory();
    
    /**
     * Returns the {@linkplain GeometryFactory geometry factory} equiped to build geometries
     * using the given {@linkplain CoordinateReferenceSystem coordinate reference system}.
     *
     * @param crs the {@linkplain CoordinateReferenceSystem coordinate reference system} the
     *        {@linkplain GeometryFactory geometry factory} should use.
     * @return the requested {@linkplain GeometryFactory geometry factory} or {@code null} if the 
     *         {@linkplain CoordinateReferenceSystem coordinate reference system} is not supported.
     *
     */
    GeometryFactory getGeometryFactory(CoordinateReferenceSystem crs);
    
    /**
     * Returns the {@linkplain PrimitiveFactory primitive factory} equiped to build primitives
     * using the given {@linkplain CoordinateReferenceSystem coordinate reference system}.
     *
     * @param crs the {@linkplain CoordinateReferenceSystem coordinate reference system} the
     *        {@linkplain PrimitiveFactory primitive factory} should use.
     * @return the requested {@linkplain PrimitiveFactory primitive factory} or {@code null} if the 
     *         {@linkplain CoordinateReferenceSystem coordinate reference system} is not supported.
     */
    PrimitiveFactory getPrimitiveFactory(CoordinateReferenceSystem crs);
}

 

Ads help maintain this website.