001: //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/trunk/src/org/deegree/graphics/sld/AbstractLayer.java $
002: /*---------------- FILE HEADER ------------------------------------------
003:
004: This file is part of deegree.
005: Copyright (C) 2001-2008 by:
006: EXSE, Department of Geography, University of Bonn
007: http://www.giub.uni-bonn.de/deegree/
008: lat/lon GmbH
009: http://www.lat-lon.de
010:
011: This library is free software; you can redistribute it and/or
012: modify it under the terms of the GNU Lesser General Public
013: License as published by the Free Software Foundation; either
014: version 2.1 of the License, or (at your option) any later version.
015:
016: This library is distributed in the hope that it will be useful,
017: but WITHOUT ANY WARRANTY; without even the implied warranty of
018: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: Lesser General Public License for more details.
020:
021: You should have received a copy of the GNU Lesser General Public
022: License along with this library; if not, write to the Free Software
023: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024:
025: Contact:
026:
027: Andreas Poth
028: lat/lon GmbH
029: Aennchenstr. 19
030: 53115 Bonn
031: Germany
032: E-Mail: poth@lat-lon.de
033:
034: Prof. Dr. Klaus Greve
035: Department of Geography
036: University of Bonn
037: Meckenheimer Allee 166
038: 53115 Bonn
039: Germany
040: E-Mail: greve@giub.uni-bonn.de
041:
042:
043: ---------------------------------------------------------------------------*/
044: package org.deegree.graphics.sld;
045:
046: import java.util.ArrayList;
047: import java.util.Arrays;
048: import java.util.List;
049:
050: import org.deegree.framework.xml.Marshallable;
051:
052: /**
053: * <p>
054: * ----------------------------------------------------------------------
055: * </p>
056: *
057: * @author <a href="mailto:k.lupp@web.de">Katharina Lupp</a>
058: * @version $Revision: 9340 $ $Date: 2007-12-27 04:32:12 -0800 (Thu, 27 Dec 2007) $
059: */
060:
061: public abstract class AbstractLayer implements Marshallable {
062:
063: protected LayerFeatureConstraints layerFeatureConstraints = null;
064:
065: protected List<AbstractStyle> styles = null;
066:
067: protected String name = null;
068:
069: /**
070: * constructor initializing the class with the <NamedLayer>
071: */
072: AbstractLayer(String name,
073: LayerFeatureConstraints layerFeatureConstraints,
074: AbstractStyle[] styles) {
075: this .styles = new ArrayList<AbstractStyle>();
076: setName(name);
077: setLayerFeatureConstraints(layerFeatureConstraints);
078: setStyles(styles);
079: }
080:
081: /**
082: * The Name element identifies the well-known name of the layer being referenced, and is
083: * required. All possible well-known names are usually identified in the capabilities document
084: * for a server.
085: *
086: * @return the name of the layer
087: *
088: */
089: public String getName() {
090: return name;
091: }
092:
093: /**
094: * sets the <Name>
095: *
096: * @param name
097: * the name of the layer
098: *
099: */
100: public void setName(String name) {
101: this .name = name;
102: }
103:
104: /**
105: * The LayerFeatureConstraints element is optional in a NamedLayer and allows the user to
106: * specify constraints on what features of what feature types are to be selected by the
107: * named-layer reference. It is essentially a filter that allows the selection of fewer features
108: * than are present in the named layer.
109: *
110: * @return the LayerFeatureConstraints
111: *
112: */
113: public LayerFeatureConstraints getLayerFeatureConstraints() {
114: return layerFeatureConstraints;
115: }
116:
117: /**
118: * sets the <LayerFeatureConstraints>
119: *
120: * @param layerFeatureConstraints
121: * the LayerFeatureConstraints
122: *
123: */
124: public void setLayerFeatureConstraints(
125: LayerFeatureConstraints layerFeatureConstraints) {
126: this .layerFeatureConstraints = layerFeatureConstraints;
127: }
128:
129: /**
130: * Returns the styles associated to the Layer. This may be UserStyles or NamedStyles
131: * <p>
132: * </p>
133: * A UserStyle is at the same semantic level as a NamedStyle used in the context of a WMS. In a
134: * sense, a named style can be thought of as a reference to a hidden UserStyle that is stored
135: * inside of a map server.
136: *
137: * @return the Styles of the Layer as ArrayList
138: *
139: */
140: public AbstractStyle[] getStyles() {
141: return styles.toArray(new AbstractStyle[styles.size()]);
142: }
143:
144: /**
145: * Adds styles to the Layer.
146: *
147: * @param styles
148: * the styles for the layer as Array
149: */
150: public void setStyles(AbstractStyle[] styles) {
151: this .styles.clear();
152:
153: if (styles != null) {
154: this .styles = Arrays.asList(styles);
155: }
156: }
157:
158: /**
159: * @see org.deegree.graphics.sld.AbstractLayer#getStyles()
160: * @param style
161: * a style to add
162: */
163: public void addStyle(AbstractStyle style) {
164: styles.add(style);
165: }
166:
167: /**
168: * @see org.deegree.graphics.sld.AbstractLayer#getStyles()
169: * @param style
170: * a style to remove
171: */
172: public void removeStyle(AbstractStyle style) {
173: styles.remove(styles.indexOf(style));
174: }
175:
176: /**
177: * returns a STring-Representation of the layer
178: *
179: * @return the layer as String
180: */
181: @Override
182: public String toString() {
183: String ret = getClass().getName() + "\n";
184: ret = "name = " + name + "\n";
185: ret += ("layerFeatureConstraints = " + layerFeatureConstraints + "\n");
186: ret += ("styles = " + styles + "\n");
187:
188: return ret;
189: }
190:
191: }
|