001 /*
002 * GeoAPI - Java interfaces for OGC/ISO standards
003 * http://www.geoapi.org
004 *
005 * Copyright (C) 2008-2013 Open Geospatial Consortium, Inc.
006 * All Rights Reserved. http://www.opengeospatial.org/ogc/legal
007 *
008 * Permission to use, copy, and modify this software and its documentation, with
009 * or without modification, for any purpose and without fee or royalty is hereby
010 * granted, provided that you include the following on ALL copies of the software
011 * and documentation or portions thereof, including modifications, that you make:
012 *
013 * 1. The full text of this NOTICE in a location viewable to users of the
014 * redistributed or derivative work.
015 * 2. Notice of any changes or modifications to the OGC files, including the
016 * date changes were made.
017 *
018 * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
019 * NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
020 * TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
021 * THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY
022 * PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
023 *
024 * COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
025 * CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
026 *
027 * The name and trademarks of copyright holders may NOT be used in advertising or
028 * publicity pertaining to the software without specific, written prior permission.
029 * Title to copyright in this software and any associated documentation will at all
030 * times remain with copyright holders.
031 */
032 package org.opengis.sld;
033
034 import java.util.Collection;
035
036 import java.util.List;
037
038 import org.opengis.feature.Feature;
039 import org.opengis.feature.type.Name;
040 import org.opengis.filter.Filter;
041 import org.opengis.metadata.citation.OnlineResource;
042 import org.opengis.style.Style;
043
044
045 /**
046 * Factory used in the production of SLD objects.
047 * <p>
048 * This factory is responsible for the production of sld objects; where noted
049 * these create methods are in agreement with the Style Layer Descriptor 1.1
050 * specification.
051 *
052 * This factory is pending. We need feedback from implementors before writting methods
053 * in this one.
054 *
055 * @author Open Geospatial Consortium
056 * @author Johann Sorel (Geomatys)
057 * @since GeoAPI 2.2
058 */
059 public interface SLDFactory {
060
061 /**
062 * Create an empty Style layer descriptor.
063 */
064 StyledLayerDescriptor createSLD();
065
066 /**
067 * Create an SLD library, an SLD library holds a online
068 * reference to a SLD file.
069 * @param online : OnlineResource, can not be null.
070 */
071 SLDLibrary createSLDLibrary(OnlineResource online);
072
073 /**
074 * Create a default named layer.
075 */
076 NamedLayer createNamedLayer();
077
078 /**
079 * Create a default user layer.
080 */
081 UserLayer createUserLayer();
082
083 /**
084 * Create a default named style.
085 */
086 NamedStyle createNamedStyle();
087
088 /**
089 * Create a default User style.
090 * @return Style : this object is a OGC SE Style defined in the style package.
091 */
092 Style createUserStyle();
093
094 /**
095 * Create a RemoteOWS information object.
096 * @param service : can not be null
097 * @param online : can not be null
098 */
099 RemoteOWS createRemoteOWS(String service, OnlineResource online);
100
101 /**
102 * Create a Inline feature content.
103 * @param features : collection of features, can be null
104 */
105 InlineFeature createInLineFeature(Collection<Collection<Feature>> features);
106
107 /**
108 * Create a default layer coverage constraints.
109 */
110 LayerCoverageConstraints createLayerCoverageConstraints();
111
112 /**
113 * Create a default layer feature constraints.
114 */
115 LayerFeatureConstraints createLayerFeatureConstraints();
116
117 /**
118 * Create a coverage constraint.
119 *
120 * @param name : can not be null
121 * @param extent : can be null
122 */
123 CoverageConstraint createCoverageConstraint(String name, CoverageExtent extent);
124
125 /**
126 * Create a feature type constraint.
127 *
128 * @param name : can be null
129 * @param filter : can be null
130 * @param extents : can be null
131 */
132 FeatureTypeConstraint createFeatureTypeConstraint(Name name, Filter filter, List<Extent> extents);
133
134 /**
135 * Create a coverage extent.
136 *
137 * @param timeperiod : can not be null
138 */
139 CoverageExtent createCoverageExtent(String timeperiod);
140
141 /**
142 * Create a coverage extent.
143 *
144 * @param ranges : can be null or empty
145 */
146 CoverageExtent createCoverageExtent(List<RangeAxis> ranges);
147
148 /**
149 * Create a feature extent.
150 *
151 * @param name : can not be null
152 * @param value : can not be null
153 */
154 Extent createExtent(String name, String value);
155
156 /**
157 * Create a Range axis.
158 *
159 * @param name : can not be null
160 * @param value : can not be null
161 */
162 RangeAxis createRangeAxis(String name, String value);
163
164 }