testing extension of EntityBrowser, EntityAdaptor
[mir.git] / source / mir / storage / StorageObject.java
1 /*
2  * Copyright (C) 2001, 2002 The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
6  * Mir is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * Mir is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Mir; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * In addition, as a special exception, The Mir-coders gives permission to link
21  * the code of this program with  any library licensed under the Apache Software License,
22  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
23  * (or with modified versions of the above that use the same license as the above),
24  * and distribute linked combinations including the two.  You must obey the
25  * GNU General Public License in all respects for all of the code used other than
26  * the above mentioned libraries.  If you modify this file, you may extend this
27  * exception to your version of the file, but you are not obligated to do so.
28  * If you do not wish to do so, delete this exception statement from your version.
29  */
30 package mir.storage;
31
32 import java.sql.Connection;
33 import java.sql.ResultSet;
34 import java.sql.SQLException;
35 import java.sql.Statement;
36 import java.util.List;
37 import java.util.Map;
38
39 import mir.entity.Entity;
40 import mir.entity.EntityList;
41
42
43 /**
44  * Implementiert Interface f?r die Speicherschicht.
45  * Bislang gibt es in der Bibliothek nur die M?glichkeit
46  * in einer Datenbank zu speichern.
47  * @author RK
48  * @version        29.6.1999
49  */
50 public interface StorageObject {
51   /**
52    * Dokumentation siehe Database.java
53    * @param id
54    * @return Entity
55    * @exception StorageObjectException
56    */
57   abstract public Entity selectById(String id) throws StorageObjectExc;
58
59   /**
60    * Dokumentation siehe Database.java
61    * @param aField
62    * @param aValue
63    * @return EntityList
64    * @exception StorageObjectException
65    */
66   abstract public EntityList selectByFieldValue(String aField, String aValue)
67     throws StorageObjectFailure;
68
69   /**
70    * Dokumentation siehe Database.java
71    * @param whereClause
72    * @return EntityList
73    * @exception StorageObjectException
74    */
75   abstract public EntityList selectByWhereClause(String whereClause)
76     throws StorageObjectFailure;
77
78   /**
79    * Dokumentation siehe Database.java
80    * @param whereClause
81    * @param offset
82    * @return EntityList
83    * @exception StorageObjectException
84    */
85   abstract public EntityList selectByWhereClause(String whereClause, int offset)
86     throws StorageObjectFailure;
87
88   /**
89    * Dokumentation siehe Database.java
90    * @param whereClause
91    * @param orderBy
92    * @param offset
93    * @return EntityList
94    * @exception StorageObjectException
95    */
96   abstract public EntityList selectByWhereClause(String whereClause,
97     String orderBy, int offset) throws StorageObjectFailure;
98
99   /**
100    * Dokumentation siehe Database.java
101    * @param whereClause
102    * @param orderBy
103    * @param offset
104    * @param limit
105    * @return EntityList
106    * @exception StorageObjectException
107    */
108   abstract public EntityList selectByWhereClause(String whereClause,
109     String orderBy, int offset, int limit) throws StorageObjectFailure;
110
111   /**
112    * Dokumentation siehe Database.java
113    * @param id
114    * @return boolen
115    * @exception StorageObjectException
116    */
117   abstract public boolean delete(String id) throws StorageObjectFailure;
118
119   /**
120    * Deletes entities based on a where clause
121    *
122    * @param aWhereClause
123    * @return
124    * @throws StorageObjectFailure
125    */
126   public int deleteByWhereClause(String aWhereClause) throws StorageObjectFailure;
127
128   /**
129    * Dokumentation siehe Database.java
130    * @return ArrayList
131    * @exception StorageObjectException
132    */
133   abstract public List getFields() throws StorageObjectFailure;
134
135   /**
136    * Dokumentation siehe Database.java
137    * @return int[]
138    * @exception StorageObjectException
139    */
140   abstract public int[] getTypes() throws StorageObjectFailure;
141
142   /**
143    * Dokumentation siehe Database.java
144    * @return ArrayList
145    * @exception StorageObjectException
146    */
147   abstract public List getLabels() throws StorageObjectFailure;
148
149   /**
150    * Dokumentation siehe Database.java
151    * @param a
152    * @exception StorageObjectException
153    */
154   abstract public void update(Entity a) throws StorageObjectFailure;
155
156   abstract public EntityList selectByWhereClause(String mainTablePrefix, List extraTables,
157       String aWhereClause, String anOrderByClause,
158       int offset, int limit) throws StorageObjectFailure;
159   
160
161   /**
162    * Dokumentation siehe Database.java
163    * @param a
164    * @return String id
165    * @exception StorageObjectException
166    */
167   abstract public String insert(Entity a) throws StorageObjectFailure;
168
169   /**
170    * Dokumentation siehe Database.java
171    * @return Class Klasse der Entity
172    */
173   abstract public Class getEntityClass();
174
175   /**
176    * put your documentation comment here
177    * @return
178    */
179   abstract public String getIdName();
180
181   /**
182    * Dokumentation siehe Database.java
183    * @return String
184    */
185   abstract public String getTableName();
186
187   /**
188    * Dokumentation siehe Database.java
189    * @return Connection
190    * @exception StorageObjectException
191    */
192   abstract public Connection getPooledCon() throws StorageObjectFailure;
193
194   /**
195    *
196    * @param a
197    * @param sql
198    * @return
199    * @throws StorageObjectFailure
200    * @throws SQLException
201    */
202   abstract public ResultSet executeSql(Statement a, String sql) throws StorageObjectFailure, SQLException;
203
204   /**
205    * Executes 1 sql statement and returns the results as a <code>List</code> of <code>Map</code>s
206    *
207    * @param sql
208    * @return
209    * @throws StorageObjectFailure
210    * @throws StorageObjectExc
211    */
212   abstract public List executeFreeSql(String sql, int aLimit) throws StorageObjectFailure, StorageObjectExc;
213
214   /**
215    * Executes 1 sql statement and returns the first result row as a <<code>Map</code>s
216    * (<code>null</code> if there wasn't any row)
217    *
218    * @param sql
219    * @return
220    * @throws StorageObjectFailure
221    * @throws StorageObjectExc
222    */
223   abstract public Map executeFreeSingleRowSql(String sql) throws StorageObjectFailure, StorageObjectExc ;
224
225   /**
226    * Executes 1 sql statement and returns the first column of the first result row as a <<code>String</code>s
227    * (<code>null</code> if there wasn't any row)
228    *
229    * @param sql
230    * @return
231    * @throws StorageObjectFailure
232    * @throws StorageObjectExc
233    */
234   abstract public String executeFreeSingleValueSql(String sql) throws StorageObjectFailure, StorageObjectExc ;
235
236   /**
237    * @param con
238    * @param stmt
239    */
240   abstract public void freeConnection(Connection con, Statement stmt) throws StorageObjectFailure;
241
242   abstract public int executeUpdate(Statement a, String sql) throws StorageObjectFailure, SQLException;
243
244   abstract public int executeUpdate(String sql) throws StorageObjectFailure, SQLException;
245
246   abstract public int getSize(String where) throws SQLException, StorageObjectFailure;
247 }