ac6cd29e6bbcb24563737ec2b9f87e8b88de2cc9
[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 freemarker.template.SimpleHash;
40 import freemarker.template.SimpleList;
41
42 import mir.entity.Entity;
43 import mir.entity.EntityList;
44
45
46 /**
47  * Implementiert Interface f?r die Speicherschicht.
48  * Bislang gibt es in der Bibliothek nur die M?glichkeit
49  * in einer Datenbank zu speichern.
50  * @author RK
51  * @version        29.6.1999
52  */
53 public interface StorageObject {
54   /**
55    * Dokumentation siehe Database.java
56    * @param id
57    * @return Entity
58    * @exception StorageObjectException
59    */
60   abstract public Entity selectById(String id) throws StorageObjectExc;
61
62   /**
63    * Dokumentation siehe Database.java
64    * @param aField
65    * @param aValue
66    * @return EntityList
67    * @exception StorageObjectException
68    */
69   abstract public EntityList selectByFieldValue(String aField, String aValue)
70     throws StorageObjectFailure;
71
72   /**
73    * Dokumentation siehe Database.java
74    * @param whereClause
75    * @return EntityList
76    * @exception StorageObjectException
77    */
78   abstract public EntityList selectByWhereClause(String whereClause)
79     throws StorageObjectFailure;
80
81   /**
82    * Dokumentation siehe Database.java
83    * @param whereClause
84    * @param offset
85    * @return EntityList
86    * @exception StorageObjectException
87    */
88   abstract public EntityList selectByWhereClause(String whereClause, int offset)
89     throws StorageObjectFailure;
90
91   /**
92    * Dokumentation siehe Database.java
93    * @param whereClause
94    * @param orderBy
95    * @param offset
96    * @return EntityList
97    * @exception StorageObjectException
98    */
99   abstract public EntityList selectByWhereClause(String whereClause,
100     String orderBy, int offset) throws StorageObjectFailure;
101
102   /**
103    * Dokumentation siehe Database.java
104    * @param whereClause
105    * @param orderBy
106    * @param offset
107    * @param limit
108    * @return EntityList
109    * @exception StorageObjectException
110    */
111   abstract public EntityList selectByWhereClause(String whereClause,
112     String orderBy, int offset, int limit) throws StorageObjectFailure;
113
114   /**
115    * Dokumentation siehe Database.java
116    * @param id
117    * @return boolen
118    * @exception StorageObjectException
119    */
120   abstract public boolean delete(String id) throws StorageObjectFailure;
121
122   /**
123    * Deletes entities based on a where clause
124    *
125    * @param aWhereClause
126    * @return
127    * @throws StorageObjectFailure
128    */
129   public int deleteByWhereClause(String aWhereClause) throws StorageObjectFailure;
130
131   /**
132    * Dokumentation siehe Database.java
133    * @return ArrayList
134    * @exception StorageObjectException
135    */
136   abstract public List getFields() throws StorageObjectFailure;
137
138   /**
139    * Dokumentation siehe Database.java
140    * @return int[]
141    * @exception StorageObjectException
142    */
143   abstract public int[] getTypes() throws StorageObjectFailure;
144
145   /**
146    * Dokumentation siehe Database.java
147    * @return ArrayList
148    * @exception StorageObjectException
149    */
150   abstract public List getLabels() throws StorageObjectFailure;
151
152   /**
153    * Dokumentation siehe Database.java
154    * @param a
155    * @exception StorageObjectException
156    */
157   abstract public void update(Entity a) throws StorageObjectFailure;
158
159   /**
160    * Dokumentation siehe Database.java
161    * @param a
162    * @return String id
163    * @exception StorageObjectException
164    */
165   abstract public String insert(Entity a) throws StorageObjectFailure;
166
167   /**
168    * Dokumentation siehe Database.java
169    * @return Class Klasse der Entity
170    */
171   abstract public Class getEntityClass();
172
173   /**
174    * put your documentation comment here
175    * @return
176    */
177   abstract public String getIdName();
178
179   /**
180    * Dokumentation siehe Database.java
181    * @return String
182    */
183   abstract public String getTableName();
184
185   /**
186    * Dokumentation siehe Database.java
187    * @return SimpleHash
188    */
189   abstract public SimpleHash getHashData();
190
191   /**
192    * Dokumentation siehe Database.java
193    * @return Connection
194    * @exception StorageObjectException
195    */
196   abstract public Connection getPooledCon() throws StorageObjectFailure;
197
198   /**
199    *
200    * @param a
201    * @param sql
202    * @return
203    * @throws StorageObjectFailure
204    * @throws SQLException
205    */
206   abstract public ResultSet executeSql(Statement a, String sql) throws StorageObjectFailure, SQLException;
207
208   /**
209    * Executes 1 sql statement and returns the results as a <code>List</code> of <code>Map</code>s
210    *
211    * @param sql
212    * @return
213    * @throws StorageObjectFailure
214    * @throws StorageObjectExc
215    */
216   abstract public List executeFreeSql(String sql, int aLimit) throws StorageObjectFailure, StorageObjectExc;
217
218   /**
219    * Executes 1 sql statement and returns the first result row as a <<code>Map</code>s
220    * (<code>null</code> if there wasn't any row)
221    *
222    * @param sql
223    * @return
224    * @throws StorageObjectFailure
225    * @throws StorageObjectExc
226    */
227   abstract public Map executeFreeSingleRowSql(String sql) throws StorageObjectFailure, StorageObjectExc ;
228
229   /**
230    * Executes 1 sql statement and returns the first column of the first result row as a <<code>String</code>s
231    * (<code>null</code> if there wasn't any row)
232    *
233    * @param sql
234    * @return
235    * @throws StorageObjectFailure
236    * @throws StorageObjectExc
237    */
238   abstract public String executeFreeSingleValueSql(String sql) throws StorageObjectFailure, StorageObjectExc ;
239
240   /**
241    * Dokumentation siehe Database.java
242    * @param con
243    * @param stmt
244    */
245   abstract public void freeConnection(Connection con, Statement stmt)
246     throws StorageObjectFailure;
247
248   /**
249    * Dokumentation siehe Database.java
250    * @return
251    */
252   abstract public SimpleList getPopupData() throws StorageObjectFailure;
253
254   abstract public int executeUpdate(Statement a, String sql)
255     throws StorageObjectFailure, SQLException;
256
257   abstract public int executeUpdate(String sql)
258     throws StorageObjectFailure, SQLException;
259
260   abstract public int getSize(String where)
261     throws SQLException, StorageObjectFailure;
262 }