untestes FreeQuery producernode added
[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    * Dokumentation siehe Database.java
124    * @return ArrayList
125    * @exception StorageObjectException
126    */
127   abstract public List getFields() throws StorageObjectFailure;
128
129   /**
130    * Dokumentation siehe Database.java
131    * @return int[]
132    * @exception StorageObjectException
133    */
134   abstract public int[] getTypes() throws StorageObjectFailure;
135
136   /**
137    * Dokumentation siehe Database.java
138    * @return ArrayList
139    * @exception StorageObjectException
140    */
141   abstract public List getLabels() throws StorageObjectFailure;
142
143   /**
144    * Dokumentation siehe Database.java
145    * @param a
146    * @exception StorageObjectException
147    */
148   abstract public void update(Entity a) throws StorageObjectFailure;
149
150   /**
151    * Dokumentation siehe Database.java
152    * @param a
153    * @return String id
154    * @exception StorageObjectException
155    */
156   abstract public String insert(Entity a) throws StorageObjectFailure;
157
158   /**
159    * Dokumentation siehe Database.java
160    * @return Class Klasse der Entity
161    */
162   abstract public Class getEntityClass();
163
164   /**
165    * put your documentation comment here
166    * @return
167    */
168   abstract public String getIdName();
169
170   /**
171    * Dokumentation siehe Database.java
172    * @return String
173    */
174   abstract public String getTableName();
175
176   /**
177    * Dokumentation siehe Database.java
178    * @return SimpleHash
179    */
180   abstract public SimpleHash getHashData();
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    *
201    * @param sql
202    * @return
203    * @throws StorageObjectFailure
204    * @throws SQLException
205    */
206   abstract public ResultSet executeSql(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 }