001 //$HeadURL: http://svn.wald.intevation.org/svn/deegree/base/trunk/src/org/deegree/graphics/sld/LayerFeatureConstraints.java $
002 /*----------------------------------------------------------------------------
003 This file is part of deegree, http://deegree.org/
004 Copyright (C) 2001-2009 by:
005 Department of Geography, University of Bonn
006 and
007 lat/lon GmbH
008
009 This library is free software; you can redistribute it and/or modify it under
010 the terms of the GNU Lesser General Public License as published by the Free
011 Software Foundation; either version 2.1 of the License, or (at your option)
012 any later version.
013 This library is distributed in the hope that it will be useful, but WITHOUT
014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
015 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
016 details.
017 You should have received a copy of the GNU Lesser General Public License
018 along with this library; if not, write to the Free Software Foundation, Inc.,
019 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020
021 Contact information:
022
023 lat/lon GmbH
024 Aennchenstr. 19, 53177 Bonn
025 Germany
026 http://lat-lon.de/
027
028 Department of Geography, University of Bonn
029 Prof. Dr. Klaus Greve
030 Postfach 1147, 53001 Bonn
031 Germany
032 http://www.geographie.uni-bonn.de/deegree/
033
034 e-mail: info@deegree.org
035 ----------------------------------------------------------------------------*/
036 package org.deegree.graphics.sld;
037
038 import java.util.ArrayList;
039 import java.util.List;
040
041 import org.deegree.framework.xml.Marshallable;
042
043 /**
044 * The LayerFeatureConstraints element is optional in a NamedLayer and allows the user to specify
045 * constraints on what features of what feature types are to be selected by the named-layer
046 * reference. It is essentially a filter that allows the selection of fewer features than are
047 * present in the named layer.
048 *
049 *
050 * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
051 * @author last edited by: $Author: mschneider $
052 *
053 * @version $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Thu, 18 Jun 2009) $
054 */
055 public class LayerFeatureConstraints implements Marshallable {
056 private List<FeatureTypeConstraint> featureTypeConstraint = null;
057
058 /**
059 * constructor initializing the class with the <LayerFeatureConstraints>
060 * @param featureTypeConstraint
061 */
062 public LayerFeatureConstraints( FeatureTypeConstraint[] featureTypeConstraint ) {
063 this.featureTypeConstraint = new ArrayList<FeatureTypeConstraint>();
064 setFeatureTypeConstraint( featureTypeConstraint );
065 }
066
067 /**
068 * A FeatureTypeConstraint element is used to identify a feature type by a well-known name,
069 * using the FeatureTypeName element.
070 *
071 * @return the FeatureTypeConstraints as Array
072 *
073 */
074 public FeatureTypeConstraint[] getFeatureTypeConstraint() {
075 return featureTypeConstraint.toArray( new FeatureTypeConstraint[featureTypeConstraint.size()] );
076 }
077
078 /**
079 * sets the <FeatureTypeConstraint>
080 *
081 * @param featureTypeConstraint
082 * the <FeatureTypeConstraint>
083 */
084 public void setFeatureTypeConstraint( FeatureTypeConstraint[] featureTypeConstraint ) {
085 this.featureTypeConstraint.clear();
086
087 if ( featureTypeConstraint != null ) {
088 for ( int i = 0; i < featureTypeConstraint.length; i++ ) {
089 this.featureTypeConstraint.add( featureTypeConstraint[i] );
090 }
091 }
092 }
093
094 /**
095 * adds the <FeatureTypeConstraint>
096 *
097 * @param featureTypeConstraint
098 * the <FeatureTypeConstraint>
099 */
100 public void addFeatureTypeConstraint( FeatureTypeConstraint featureTypeConstraint ) {
101 this.featureTypeConstraint.add( featureTypeConstraint );
102 }
103
104 /**
105 * Removes a FeatureTypeConstraint.
106 *
107 * @param featureTypeConstraint
108 * the <FeatureTypeConstraint>
109 */
110 public void removeFeatureTypeConstraint( FeatureTypeConstraint featureTypeConstraint ) {
111 this.featureTypeConstraint.remove( this.featureTypeConstraint.indexOf( featureTypeConstraint ) );
112 }
113
114 /**
115 * returns the LayerFeatureConstraints as String.
116 *
117 * @return the LayerFeatureConstraints as String
118 */
119 @Override
120 public String toString() {
121 String ret = getClass().getName() + "\n";
122 ret = "featureTypeConstraint = " + featureTypeConstraint + "\n";
123
124 return ret;
125 }
126
127 /**
128 * exports the content of the Font as XML formated String
129 *
130 * @return xml representation of the Font
131 */
132 public String exportAsXML() {
133
134 StringBuffer sb = new StringBuffer( 1000 );
135 sb.append( "<LayerFeatureConstraints>" );
136 for ( int i = 0; i < featureTypeConstraint.size(); i++ ) {
137 sb.append( ( (Marshallable) featureTypeConstraint.get( i ) ).exportAsXML() );
138 }
139 sb.append( "</LayerFeatureConstraints>" );
140
141 return sb.toString();
142 }
143
144 }