001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/model/spatialschema/Aggregate.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 037 package org.deegree.model.spatialschema; 038 039 import java.util.Iterator; 040 041 /** 042 * 043 * This interface defines the basis functionallity of all geometry aggregations. it will be specialized for the use of 044 * primitive, and solid geometries. 045 * 046 * <p> 047 * ----------------------------------------------------- 048 * </p> 049 * 050 * @author Andreas Poth 051 * @version $Revision: 18195 $ $Date: 2009-06-18 17:55:39 +0200 (Do, 18 Jun 2009) $ 052 * <p> 053 */ 054 055 public interface Aggregate extends Geometry { 056 057 /** 058 * @return the number of Geometry within the aggregation 059 */ 060 int getSize(); 061 062 /** 063 * merges two aggregation. 064 * 065 * @param aggregate 066 * 067 * @exception GeometryException 068 * a GeometryException will be thrown if the submitted isn't the same type as the recieving one. 069 */ 070 void merge( Aggregate aggregate ) 071 throws GeometryException; 072 073 /** 074 * adds an Geometry to the aggregation 075 * 076 * @param gmo 077 * Geometry to the aggregation 078 */ 079 void add( Geometry gmo ); 080 081 /** 082 * inserts a Geometry in the aggregation. all elements with an index equal or larger index will be moved. if index 083 * is larger then getSize() - 1 an exception will be thrown. 084 * 085 * @param gmo 086 * Geometry to insert. 087 * @param index 088 * position where to insert the new Geometry 089 * @throws GeometryException 090 */ 091 void insertObjectAt( Geometry gmo, int index ) 092 throws GeometryException; 093 094 /** 095 * sets the submitted Geometry at the submitted index. the element at the position <code>index</code> will be 096 * removed. if index is larger then getSize() - 1 an exception will be thrown. 097 * 098 * @param gmo 099 * Geometry to set. 100 * @param index 101 * position where to set the new Geometry 102 * @throws GeometryException 103 */ 104 void setObjectAt( Geometry gmo, int index ) 105 throws GeometryException; 106 107 /** 108 * removes the submitted Geometry from the aggregation 109 * 110 * @param gmo 111 * to remove 112 * 113 * @return the removed Geometry 114 */ 115 Geometry removeObject( Geometry gmo ); 116 117 /** 118 * removes the Geometry at the submitted index from the aggregation. if index is larger then getSize() - 1 an 119 * exception will be thrown. 120 * 121 * @param index 122 * 123 * @return the removed Geometry 124 * @throws GeometryException 125 */ 126 Geometry removeObjectAt( int index ) 127 throws GeometryException; 128 129 /** 130 * removes all Geometry from the aggregation. 131 */ 132 void removeAll(); 133 134 /** 135 * @param index 136 * to get 137 * @return the Geometry at the submitted index. 138 */ 139 Geometry getObjectAt( int index ); 140 141 /** 142 * @return all Geometries as array 143 */ 144 Geometry[] getAll(); 145 146 /** 147 * @param gmo 148 * @return true if the submitted Geometry is within the aggregation 149 */ 150 boolean isMember( Geometry gmo ); 151 152 /** 153 * @return the aggregation as an iterator 154 */ 155 Iterator<Geometry> getIterator(); 156 157 }