001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/model/spatialschema/MultiPoint.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 045 package org.deegree.model.spatialschema; 046 047 /** 048 * 049 * The interface defines the access to a aggregations of <tt>Point</tt> objects. 050 * 051 * <p> 052 * ----------------------------------------------------- 053 * </p> 054 * 055 * @author Andreas Poth 056 * @version $Revision: 9343 $ $Date: 2007-12-27 14:30:32 +0100 (Do, 27 Dez 2007) $ 057 * <p> 058 */ 059 public interface MultiPoint extends MultiPrimitive { 060 /** 061 * @link aggregation 062 * @clientCardinality 0..* 063 */ 064 065 /** 066 * adds a Point to the aggregation 067 */ 068 public void addPoint( Point gmp ); 069 070 /** 071 * inserts a Point into the aggregation. all elements with an index equal or larger index will 072 * be moved. if index is larger then getSize() - 1 or smaller then 0 or gmp equals null an 073 * exception will be thrown. 074 * 075 * @param gmp 076 * Point to insert. 077 * @param index 078 * position where to insert the new Point 079 */ 080 public void insertPointAt( Point gmp, int index ) 081 throws GeometryException; 082 083 /** 084 * sets the submitted Point at the submitted index. the element at the position 085 * <code>index</code> will be removed. if index is larger then getSize() - 1 or smaller then 0 086 * or gmp equals null an exception will be thrown. 087 * 088 * @param gmp 089 * Point to set. 090 * @param index 091 * position where to set the new Point 092 */ 093 public void setPointAt( Point gmp, int index ) 094 throws GeometryException; 095 096 /** 097 * removes the submitted Point from the aggregation 098 * 099 * @return the removed Point 100 */ 101 public Point removePoint( Point gmp ); 102 103 /** 104 * removes the Point at the submitted index from the aggregation. if index is larger then 105 * getSize() - 1 or smaller then 0 an exception will be thrown. 106 * 107 * @return the removed Point 108 */ 109 public Point removePointAt( int index ) 110 throws GeometryException; 111 112 /** 113 * returns the Point at the submitted index. 114 */ 115 public Point getPointAt( int index ); 116 117 /** 118 * returns all Points as array 119 */ 120 public Point[] getAllPoints(); 121 122 }