01: /*
02: * hgcommons 7
03: * Hammurapi Group Common Library
04: * Copyright (C) 2003 Hammurapi Group
05: *
06: * This program is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2 of the License, or (at your option) any later version.
10: *
11: * This program 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 GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: *
20: * URL: http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/products/hgcommons/index.html
21: * e-Mail: support@hammurapi.biz
22: */
23: package biz.hammurapi.sql.hypersonic;
24:
25: import java.io.IOException;
26: import java.io.InputStream;
27: import java.io.InputStreamReader;
28: import java.io.Reader;
29: import java.sql.SQLException;
30:
31: /**
32: * In memory Hypersonic datasource with unique name.
33: * @author Pavel Vlasov
34: * @version $Revision: 1.4 $
35: */
36: public class HypersonicInMemoryDataSource extends HypersonicDataSource {
37: private static int counter;
38:
39: private static String dbName() {
40: return "db"
41: + (counter++)
42: + "_"
43: + Long.toString(System.currentTimeMillis(),
44: Character.MAX_RADIX);
45: }
46:
47: /**
48: * @param initScript Fully qualified name of database initialization script to be loaded by
49: * classloader. Can be null.
50: * @throws ClassNotFoundException
51: * @throws IOException
52: * @throws SQLException
53: */
54: public HypersonicInMemoryDataSource(String initScript)
55: throws ClassNotFoundException, IOException, SQLException {
56: super ("jdbc:hsqldb:mem:" + dbName(), "sa", "", null);
57: if (initScript != null) {
58: InputStream in = getClass().getClassLoader()
59: .getResourceAsStream(initScript);
60: if (in == null) {
61: throw new IOException("Resource not found: "
62: + initScript);
63: }
64: initDB(new InputStreamReader(in), null);
65: }
66: }
67:
68: /**
69: * @param initScript Fully qualified name of database initialization script to be loaded by
70: * classloader. Can be null.
71: * @throws ClassNotFoundException
72: * @throws IOException
73: * @throws SQLException
74: */
75: public HypersonicInMemoryDataSource(Reader scriptReader)
76: throws ClassNotFoundException, IOException, SQLException {
77: super ("jdbc:hsqldb:mem:" + dbName(), "sa", "", null);
78: initDB(scriptReader, null);
79: }
80: }
|