1 package com.atlassian.config.db;
2
3 import com.atlassian.config.ApplicationConfiguration;
4
5 import java.util.Properties;
6
7
8
9
10 public class HibernateConfig
11 {
12 public static final String HIBERNATE_SETUP = "hibernate.setup";
13 public static final String HIBERNATE_CONFIG_PREFIX = "hibernate.";
14 private static final String DIALECT_KEY = "hibernate.dialect";
15
16 private ApplicationConfiguration applicationConfig;
17
18
19
20
21 public HibernateConfig() {
22 }
23
24 public void setApplicationConfig(ApplicationConfiguration applicationConfiguration)
25 {
26 this.applicationConfig = applicationConfiguration;
27 }
28
29 public ApplicationConfiguration getApplicationConfig()
30 {
31 return applicationConfig;
32 }
33
34 public boolean isHibernateSetup()
35 {
36 return (applicationConfig.getBooleanProperty(HibernateConfig.HIBERNATE_SETUP));
37 }
38
39
40
41
42
43 public Properties getHibernateProperties()
44 {
45 Properties props = new Properties();
46 props.putAll(applicationConfig.getPropertiesWithPrefix(HIBERNATE_CONFIG_PREFIX));
47 return props;
48 }
49
50 public static boolean isOracleDialect(final String dialect)
51 {
52 return null != dialect && dialect.matches(".*Oracle.*Dialect$");
53 }
54
55 public static boolean isSqlServerDialect(final String dialect)
56 {
57 return null != dialect && dialect.matches(".*?SQLServer.*?Dialect$");
58 }
59
60 public static boolean isDb2Dialect(final String dialect)
61 {
62 return null != dialect && dialect.matches(".*?DB2.*?Dialect$");
63 }
64
65 public static boolean isHsqlDialect(final String dialect)
66 {
67 return null != dialect && dialect.matches(".*?HSQL.*?Dialect$");
68 }
69
70 public static boolean isMySqlDialect(final String dialect)
71 {
72 return null != dialect && dialect.matches(".*?MySQL.*?Dialect$");
73 }
74
75 public static boolean isPostgreSqlDialect(final String dialect)
76 {
77 return null != dialect && dialect.matches(".*?PostgreSQL.*?Dialect$");
78 }
79
80 public boolean isDb2()
81 {
82 return isDb2Dialect(getConfiguredDialect());
83 }
84
85 public boolean isSqlServer()
86 {
87 return isSqlServerDialect(getConfiguredDialect());
88 }
89
90 public boolean isPostgreSql()
91 {
92 return isPostgreSqlDialect(getConfiguredDialect());
93 }
94
95 public boolean isMySql()
96 {
97 return isMySqlDialect(getConfiguredDialect());
98 }
99
100 public boolean isOracle()
101 {
102 return isOracleDialect(getConfiguredDialect());
103 }
104
105 public boolean isHSQL()
106 {
107 return isHsqlDialect(getConfiguredDialect());
108 }
109
110 public boolean booleanRequiresSubstitution()
111 {
112 return isOracle() || isSqlServer() || isDb2();
113 }
114
115
116
117
118
119 public boolean uniqueAllowsMultipleNullValues()
120 {
121 return !(isOracle() || isSqlServer());
122 }
123
124
125
126
127
128
129 public boolean uniqueAllowsAnyNullValues()
130 {
131 return !isDb2();
132 }
133
134 private String getConfiguredDialect()
135 {
136 return getConfiguredStringProperty(DIALECT_KEY);
137 }
138
139 private String getConfiguredStringProperty(String key)
140 {
141 return (String) getApplicationConfig().getProperty(key);
142 }
143
144 }