(no commit message)
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / types / H2DatabaseType.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.types;
11
12 import java.io.File;
13
14 import org.apache.log4j.Logger;
15 import org.springframework.jdbc.datasource.DriverManagerDataSource;
16
17 import eu.etaxonomy.cdm.api.application.CdmApplicationUtils;
18 import eu.etaxonomy.cdm.database.H2Mode;
19 import eu.etaxonomy.cdm.database.ICdmDataSource;
20 import eu.etaxonomy.cdm.database.LocalH2;
21
22
23 /**
24 * @author a.mueller
25 *
26 */
27 public class H2DatabaseType extends DatabaseTypeBase {
28 private static final Logger logger = Logger.getLogger(H2DatabaseType.class);
29
30 //typeName
31 private String typeName = "H2 Database";
32
33 //class
34 private String classString = "org.h2.Driver";
35
36 //url
37 private String urlString = "jdbc:h2:";
38
39 //path
40 private String path = getDefaultPath();
41
42 //port
43 private int defaultPort = 9092;
44
45 //hibernate dialect
46 private String hibernateDialect = "H2Dialect";
47
48 //init method
49 private String initMethod = "init";
50
51 //destroy method
52 private String destroyMethod = "destroy";
53
54 //connection String
55 public String getConnectionString(ICdmDataSource ds, int port){
56 H2Mode mode = ds.getMode();
57 String path = ds.getFilePath();
58 if (path == null){
59 path = getDefaultPath();
60 }
61 if (mode.equals(H2Mode.IN_MEMORY)){
62 return urlString + "mem:";
63 }else if (mode.equals(H2Mode.EMBEDDED)){
64 return urlString + "file:" + path + "/" + ds.getDatabase();
65 }else if (mode.equals(H2Mode.TCP)){
66 return urlString + "tcp://" + ds.getServer() + ":" + port + "/" + path + "/" + ds.getDatabase();
67 }else{
68 logger.warn("Unrecognized mode for Database H2");
69 return null;
70 }
71 }
72
73
74 public H2DatabaseType() {
75 init (typeName, classString, urlString, defaultPort, hibernateDialect );
76 }
77
78 @Override
79 public Class<? extends DriverManagerDataSource> getDriverManagerDataSourceClass() {
80 return LocalH2.class;
81 }
82
83 /* (non-Javadoc)
84 * @see eu.etaxonomy.cdm.database.types.IDatabaseType#getInitMethod()
85 */
86 @Override
87 public String getInitMethod() {
88 return initMethod;
89 }
90
91 /* (non-Javadoc)
92 * @see eu.etaxonomy.cdm.database.types.IDatabaseType#getDestroyMethod()
93 */
94 @Override
95 public String getDestroyMethod() {
96 return destroyMethod;
97 }
98
99 private static final String getDefaultPath(){
100 //String path = System.getProperty("user.dir");
101 File path = CdmApplicationUtils.getWritableResourceDir();
102 String subPath = File.separator + "h2" + File.separator + "LocalH2";
103 return path + subPath;
104 }
105
106
107 }