1.1 restoration
[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 import java.io.InputStream;
39
40 import mir.entity.Entity;
41 import mir.entity.EntityList;
42
43 /**
44  * Interface for low-level database actions.
45  */
46
47 public interface StorageObject {
48   public Entity selectById(String id) throws StorageObjectExc;
49
50   public EntityList selectByFieldValue(String aField, String aValue) throws StorageObjectFailure;
51
52   public EntityList selectByWhereClause(String whereClause) throws StorageObjectFailure;
53
54   public EntityList selectByWhereClause(String whereClause, int offset) throws StorageObjectFailure;
55
56   public EntityList selectByWhereClause(String whereClause, String orderBy, int offset) throws StorageObjectFailure;
57
58   public EntityList selectByWhereClause(String whereClause, String orderBy, int offset, int limit) throws StorageObjectFailure;
59
60   public EntityList selectByWhereClause(String mainTablePrefix, List extraTables, String aWhereClause, String anOrderByClause, int offset, int limit) throws StorageObjectFailure;
61
62   public boolean delete(String id) throws StorageObjectFailure;
63
64   /**
65    * Deletes entities based on a where clause
66    */
67   public int deleteByWhereClause(String aWhereClause) throws StorageObjectFailure;
68
69   /**
70    * Returns a list of field names for this <code>StorageObject</code>
71    */
72   public List getFieldNames() throws StorageObjectFailure;
73
74   public void update(Entity a) throws StorageObjectFailure;
75
76   public String insert(Entity a) throws StorageObjectFailure;
77
78   public Class getEntityClass();
79
80   public String getIdName();
81
82   public String getTableName();
83
84   public Connection obtainConnection() throws StorageObjectFailure;
85
86   public ResultSet executeSql(Statement a, String sql) throws StorageObjectFailure, SQLException;
87
88   /**
89    * Executes 1 sql statement and returns the results as a <code>List</code> of
90    * <code>Map</code>s
91    */
92   public List executeFreeSql(String sql, int aLimit) throws StorageObjectFailure, StorageObjectExc;
93
94   /**
95    * Executes 1 sql statement and returns the first result row as a <<code>Map</code>s
96    * (<code>null</code> if there wasn't any row)
97    */
98   public Map executeFreeSingleRowSql(String sql) throws StorageObjectFailure, StorageObjectExc ;
99
100   /**
101    * Executes 1 sql statement and returns the first column of the first result row as a <<code>String</code>s
102    * (<code>null</code> if there wasn't any row)
103    */
104   public String executeFreeSingleValueSql(String sql) throws StorageObjectFailure, StorageObjectExc ;
105
106   public void freeConnection(Connection con, Statement stmt) throws StorageObjectFailure;
107
108   public int executeUpdate(Statement a, String sql) throws StorageObjectFailure, SQLException;
109
110   public int executeUpdate(String sql) throws StorageObjectFailure, SQLException;
111
112   public int getSize(String where) throws SQLException, StorageObjectFailure;
113
114   public int getSize(String mainTablePrefix, List extraTables, String where) throws SQLException, StorageObjectFailure;
115
116   public InputStream getBinaryField(String aQuery) throws SQLException, StorageObjectFailure;
117
118   public void setBinaryField(String aQuery, byte aData[]) throws StorageObjectFailure, SQLException;
119 }