001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/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 (Do, 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 }