001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/model/table/Table.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.model.table;
045    
046    /**
047     * 
048     * 
049     * 
050     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
051     * @author last edited by: $Author: apoth $
052     * 
053     * @version. $Revision: 9343 $, $Date: 2007-12-27 14:30:32 +0100 (Do, 27 Dez 2007) $
054     */
055    public interface Table {
056    
057        /**
058         * returns the name of the table. If the table hasn't a name an empty string ("") will be
059         * returned.
060         * 
061         */
062        String getTableName();
063    
064        /**
065         * @see Table#getTableName()
066         * 
067         */
068        void setTableName( String tableName );
069    
070        /**
071         * returns the value of the table field indexed by <tt>row</tt> and <tt>col</tt>
072         */
073        Object getValueAt( int row, int col );
074    
075        /**
076         * set a value at the table field indexed by <tt>row</tt> and <tt>col</tt>
077         */
078        void setValueAt( Object value, int row, int col );
079    
080        /**
081         * returns the data of the row'th row of the table
082         */
083        Object[] getRow( int row );
084    
085        /**
086         * sets the data of the row'th row
087         */
088        void setRow( Object[] data, int row )
089                                throws TableException;
090    
091        /**
092         * appends a row to the table and sets its data
093         */
094        void appendRow( Object[] data )
095                                throws TableException;
096    
097        /**
098         * returns the number rows of the table
099         */
100        int getRowCount();
101    
102        /**
103         * adds a new column to the table
104         */
105        void addColumn( String name, int type );
106    
107        /**
108         * returns the number columns of the table
109         */
110        int getColumnCount();
111    
112        /**
113         * returns the names of all table columns. If a column hasn't a name a empty String ("") will be
114         * returned.
115         */
116        String[] getColumnNames();
117    
118        /**
119         * returns the name of the specified column. If a column hasn't a name a empty String ("") will
120         * be returned.
121         */
122        String getColumnName( int col );
123    
124        /**
125         * returns the names of all column types. For each column a type (name of a java class) has to
126         * be defined.
127         */
128        int[] getColumnTypes();
129    
130        /**
131         * returns the name of the type of the specifies column. For each column a type (name of a java
132         * class) has to be defined.
133         */
134        int getColumnType( int col );
135    
136        /**
137         * sets the type of a column. the implementing class have to ensure that this is a valid
138         * operation
139         */
140        void setColumnType( int col, int type )
141                                throws TableException;
142    
143        /**
144         * sets the name of a column.
145         */
146        void setColumnName( int col, String name );
147    
148        /**
149         * removes a row from the table
150         */
151        Object[] removeRow( int index );
152    
153        /**
154         * returns the index of the submitted columns name. If no column with that name if present -1
155         * will be returned.
156         */
157        int getColumnIndex( String columnName );
158    
159    }