Schema update for referenceType persistence #2615
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / CdmDataSource.java
index 56306c75bb018a724b07cb87c944953d2a7758dd..3ab21af96cbcc8dd7ca6a4ba4b17ce972cc15a45 100644 (file)
@@ -12,9 +12,11 @@ package eu.etaxonomy.cdm.database;
 import java.util.Enumeration;\r
 import java.util.Properties;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
-import org.hibernate.cache.CacheProvider;\r
-import org.hibernate.cache.NoCacheProvider;\r
+import org.hibernate.cache.internal.NoCachingRegionFactory;\r
+import org.hibernate.cache.spi.RegionFactory;\r
+import org.hibernate.cfg.Environment;\r
 import org.springframework.beans.MutablePropertyValues;\r
 import org.springframework.beans.factory.config.BeanDefinition;\r
 import org.springframework.beans.factory.config.PropertiesFactoryBean;\r
@@ -50,7 +52,7 @@ public class CdmDataSource extends CdmDataSourceBase {
        private boolean showSql = false;\r
        private boolean formatSql = false;\r
        private boolean registerSearchListener = false;\r
-       private Class<? extends CacheProvider> cacheProviderClass = NoCacheProvider.class;\r
+       private Class<? extends RegionFactory> cacheProviderClass = NoCachingRegionFactory.class;\r
 \r
        public static CdmDataSource NewInstance(DatabaseTypeEnum dbType, String server, String database, String username, String password){\r
                return new CdmDataSource(dbType, server, database, -1, username, password, null, null, null);\r
@@ -160,7 +162,6 @@ public class CdmDataSource extends CdmDataSourceBase {
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.api.application.ICdmDataSource#getDatasourceBean()\r
         */\r
-       @SuppressWarnings("unchecked")\r
        public BeanDefinition getDatasourceBean(){\r
                AbstractBeanDefinition bd = new RootBeanDefinition(dbType.getDataSourceClass());\r
                //attributes\r
@@ -175,10 +176,11 @@ public class CdmDataSource extends CdmDataSourceBase {
                //properties\r
                MutablePropertyValues props = new MutablePropertyValues();\r
                Properties persistentProperties = getDatasourceProperties();\r
-               Enumeration<String> keys = (Enumeration)persistentProperties.keys();\r
+               Enumeration<Object> keys = (Enumeration<Object>)persistentProperties.keys();\r
                while (keys.hasMoreElements()){\r
                        String key = (String)keys.nextElement();\r
                        props.addPropertyValue(key, persistentProperties.getProperty(key));\r
+                       Properties a = Environment.getProperties();\r
                }\r
 \r
                bd.setPropertyValues(props);\r
@@ -207,14 +209,14 @@ public class CdmDataSource extends CdmDataSourceBase {
                boolean showSql = false;\r
                boolean formatSql = false;\r
                boolean registerSearchListener = false;\r
-               Class<? extends CacheProvider> cacheProviderClass = NoCacheProvider.class;\r
+               Class<? extends RegionFactory> cacheProviderClass = NoCachingRegionFactory.class;\r
                return getHibernatePropertiesBean(hbm2dll, showSql, formatSql, registerSearchListener, cacheProviderClass);\r
        }\r
 \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.api.application.ICdmDataSource#getHibernatePropertiesBean(eu.etaxonomy.cdm.database.CdmPersistentDataSource.HBM2DDL, java.lang.Boolean, java.lang.Boolean, java.lang.Class)\r
         */\r
-       public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll, Boolean showSql, Boolean formatSql, Boolean registerSearchListener, Class<? extends CacheProvider> cacheProviderClass){\r
+       public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll, Boolean showSql, Boolean formatSql, Boolean registerSearchListener, Class<? extends RegionFactory> cacheProviderClass){\r
                //Hibernate default values\r
                if (hbm2dll == null){\r
                        hbm2dll = this.hbm2dll;\r
@@ -239,7 +241,8 @@ public class CdmDataSource extends CdmDataSourceBase {
                Properties props = new Properties();\r
                props.setProperty("hibernate.hbm2ddl.auto", hbm2dll.toString());\r
                props.setProperty("hibernate.dialect", dbtype.getHibernateDialect());\r
-               props.setProperty("hibernate.cache.provider_class", cacheProviderClass.getName());\r
+//             OLD:props.setProperty("hibernate.cache.provider_class", cacheProviderClass.getName());\r
+               props.setProperty("hibernate.cache.region.factory_class", cacheProviderClass.getName());\r
                props.setProperty("hibernate.show_sql", String.valueOf(showSql));\r
                props.setProperty("hibernate.format_sql", String.valueOf(formatSql));\r
                props.setProperty("hibernate.search.autoregister_listeners", String.valueOf(registerSearchListener));\r
@@ -311,5 +314,17 @@ public class CdmDataSource extends CdmDataSourceBase {
                return nomenclaturalCode;\r
        }\r
 \r
+       @Override\r
+       public String toString() {\r
+               if (StringUtils.isBlank(this.database)){\r
+                       return super.toString();\r
+               }else{\r
+                       String result = "DataSource<" + dbType.getConnectionString(this).replace(CdmUtils.Nz(password), "") + ">";\r
+                       return result;\r
+               }\r
+       }\r
+       \r
+       \r
+\r
 }\r
 \r