major cleanup:
[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   /**
157    * Dokumentation siehe Database.java
158    * @param a
159    * @return String id
160    * @exception StorageObjectException
161    */
162   abstract public String insert(Entity a) throws StorageObjectFailure;
163
164   /**
165    * Dokumentation siehe Database.java
166    * @return Class Klasse der Entity
167    */
168   abstract public Class getEntityClass();
169
170   /**
171    * put your documentation comment here
172    * @return
173    */
174   abstract public String getIdName();
175
176   /**
177    * Dokumentation siehe Database.java
178    * @return String
179    */
180   abstract public String getTableName();
181
182   /**
183    * Dokumentation siehe Database.java
184    * @return Connection
185    * @exception StorageObjectException
186    */
187   abstract public Connection getPooledCon() throws StorageObjectFailure;
188
189   /**
190    *
191    * @param a
192    * @param sql
193    * @return
194    * @throws StorageObjectFailure
195    * @throws SQLException
196    */
197   abstract public ResultSet executeSql(Statement a, String sql) throws StorageObjectFailure, SQLException;
198
199   /**
200    * Executes 1 sql statement and returns the results as a <code>List</code> of <code>Map</code>s
201    *
202    * @param sql
203    * @return
204    * @throws StorageObjectFailure
205    * @throws StorageObjectExc
206    */
207   abstract public List executeFreeSql(String sql, int aLimit) throws StorageObjectFailure, StorageObjectExc;
208
209   /**
210    * Executes 1 sql statement and returns the first result row as a <<code>Map</code>s
211    * (<code>null</code> if there wasn't any row)
212    *
213    * @param sql
214    * @return
215    * @throws StorageObjectFailure
216    * @throws StorageObjectExc
217    */
218   abstract public Map executeFreeSingleRowSql(String sql) throws StorageObjectFailure, StorageObjectExc ;
219
220   /**
221    * Executes 1 sql statement and returns the first column of the first result row as a <<code>String</code>s
222    * (<code>null</code> if there wasn't any row)
223    *
224    * @param sql
225    * @return
226    * @throws StorageObjectFailure
227    * @throws StorageObjectExc
228    */
229   abstract public String executeFreeSingleValueSql(String sql) throws StorageObjectFailure, StorageObjectExc ;
230
231   /**
232    * @param con
233    * @param stmt
234    */
235   abstract public void freeConnection(Connection con, Statement stmt) throws StorageObjectFailure;
236
237   abstract public int executeUpdate(Statement a, String sql) throws StorageObjectFailure, SQLException;
238
239   abstract public int executeUpdate(String sql) throws StorageObjectFailure, SQLException;
240
241   abstract public int getSize(String where) throws SQLException, StorageObjectFailure;
242 }