merging delete functionality into trunk
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / ICdmDataSource.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.cdm.database;
11
12 import java.sql.DatabaseMetaData;
13 import java.sql.ResultSet;
14 import java.sql.SQLException;
15
16 import org.hibernate.cache.spi.RegionFactory;
17 import org.springframework.beans.factory.config.BeanDefinition;
18
19 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
20
21 public interface ICdmDataSource {
22
23 /**
24 * Returns a BeanDefinition object of type DataSource that contains
25 * datsource properties (url, username, password, ...)
26 * @return BeanDefinition
27 */
28 public BeanDefinition getDatasourceBean();
29
30 /**
31 * @param hbm2dll
32 * @return BeanDefinition
33 */
34 public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll);
35
36 /**
37 * @param hbm2dll
38 * @param showSql
39 * @param formatSql
40 * @param cacheProviderClass
41 * @return BeanDefinition
42 */
43 public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll, Boolean showSql, Boolean formatSql, Boolean registerSearchListener, Class<? extends RegionFactory> cacheProviderClass);
44
45
46 /**
47 * The name representation of thie Datasource.
48 * @return
49 */
50 public String getName();
51
52
53 /**
54 * @return
55 */
56 public String getServer();
57
58 /**
59 * Returns the name of the datasource on the given server.
60 * @return
61 */
62 public String getDatabase();
63
64 public DatabaseTypeEnum getDatabaseType();
65
66 /**
67 * @return
68 */
69 public int getPort();
70
71 /**
72 * @return
73 */
74 public String getFilePath();
75
76 /**
77 * @return
78 */
79 public H2Mode getMode();
80
81 /**
82 * Tests, if a database connection can be established.
83 * @return true if test was successful, false otherwise
84 * @throws ClassNotFoundException
85 * @throws SQLException
86 * @throws Exception
87 */
88 public boolean testConnection() throws ClassNotFoundException, SQLException;
89
90 public String getUsername();
91
92 public String getPassword();
93
94 /**
95 * Executes a query and returns the ResultSet.
96 * @return ResultSet for the query.
97 * @throws SQLException
98 */
99 public ResultSet executeQuery (String query) throws SQLException;
100
101 /**
102 * Executes an update
103 * @return return code
104 */
105 public int executeUpdate (String sqlUpdate) throws SQLException;
106
107 /**
108 * Starts a transaction for the given datasource.
109 */
110 public void startTransaction();
111
112 /**
113 * Commits the transaction for the given datasource.
114 * @return
115 * @throws SQLException
116 */
117 public void commitTransaction() throws SQLException;
118
119 /**
120 * Rolls the connection back.
121 * @throws SQLException
122 */
123 public void rollback() throws SQLException;
124
125
126 public NomenclaturalCode getNomenclaturalCode();
127
128 /**
129 * Returns the first value of the first row of a result set.<BR>
130 * If no row exists in the result set
131 * <code>null</code> is returned.
132 *
133 * <strong>Caution</strong> This method opens a connection on first use. Subsequent calls will use the same connection.
134 * Please close the connection when not needed anymore with {@link ICdmDataSource#closeOpenConnections()}
135 *
136 * @param query
137 * @return
138 * @throws SQLException
139 */
140 public Object getSingleValue(String query) throws SQLException;
141
142 /**
143 * Returns {@link DatabaseMetaData} for <code>this</code> datasource.
144 *
145 * <br>
146 * <br>
147 * <strong>Caution</strong> This method opens a connection that should be closed
148 * with {@link #closeOpenConnections()}
149 *
150 * @return
151 */
152 public DatabaseMetaData getMetaData();
153
154 /**
155 *
156 */
157 public void closeOpenConnections();
158
159
160 //
161 // public void setFilePath(String filePath);
162 //
163 // public void setMode(H2Mode mode);
164
165 }