From d1fcc397b5bd79b46b6d566dfa95aec04fc53340 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andreas=20M=C3=BCller?= Date: Mon, 2 May 2016 20:41:11 +0200 Subject: [PATCH] Preliminary adapt CDM model cacher script to work for cached model update --- .../remoting/cache/CdmModelCacher.java | 16 ++++++--- .../CdmModelCacherConnectionProvider.java | 34 +++++++++++++++++++ .../etaxonomy/cdm/mappings/hibernate.cfg.xml | 15 ++++---- .../test.mgd.datasources.xml | 2 +- 4 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmModelCacherConnectionProvider.java diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmModelCacher.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmModelCacher.java index 997526936..42e300f39 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmModelCacher.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmModelCacher.java @@ -23,12 +23,13 @@ import org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; +import org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl; +import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Property; import org.hibernate.metadata.ClassMetadata; import org.hibernate.property.access.spi.Getter; import org.osgi.framework.Bundle; - import org.hibernate.boot.Metadata; @@ -79,14 +80,18 @@ public class CdmModelCacher { SessionFactory sessionFactory = null; Map modelClassMap = new HashMap(); try { - sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory(); - Configuration configuration = buildConfiguration(HB_CONFIG_FILE_PATH); +// ConnectionProvider connectionProvider = registry.getService(ConnectionProvider.class); +// DatasourceConnectionProviderImpl providerImpl = registry.getService(DatasourceConnectionProviderImpl.class); + + Metadata metadata = new MetadataSources( registry ).buildMetadata(); + sessionFactory = metadata.buildSessionFactory(); +// Configuration configuration = buildConfiguration(HB_CONFIG_FILE_PATH); Map classMetaDataMap = sessionFactory.getAllClassMetadata(); - Metadata metadata = new MetadataSources( registry ).getMetadataBuilder().applyImplicitNamingStrategy( ImplicitNamingStrategyJpaCompliantImpl.INSTANCE ).build(); +// Metadata metadata = new MetadataSources( registry ).getMetadataBuilder().applyImplicitNamingStrategy( ImplicitNamingStrategyJpaCompliantImpl.INSTANCE ).build(); for(ClassMetadata classMetaData :classMetaDataMap.values()) { - Class mappedClass = classMetaData.getMappedClass(); + Class mappedClass = classMetaData.getMappedClass(); String mappedClassName = mappedClass.getName(); @@ -101,6 +106,7 @@ public class CdmModelCacher { // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory // so destroy it manually. StandardServiceRegistryBuilder.destroy( registry ); + e.printStackTrace(); } diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmModelCacherConnectionProvider.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmModelCacherConnectionProvider.java new file mode 100644 index 000000000..6297b5b6c --- /dev/null +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmModelCacherConnectionProvider.java @@ -0,0 +1,34 @@ +package eu.etaxonomy.taxeditor.remoting.cache; + +import javax.sql.DataSource; + +import org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl; + +import eu.etaxonomy.cdm.database.CdmDataSource; +import eu.etaxonomy.cdm.model.name.NomenclaturalCode; + +/** + * This is a very preliminary class to get the model cache running. Need to better understand how + * the datasource works with hibernate service registry before implementing the correct way. + * Or use a running source. + * @author a.mueller + * + */ +public class CdmModelCacherConnectionProvider extends DatasourceConnectionProviderImpl{ + + public CdmModelCacherConnectionProvider() { + super(); + setDataSource(getDataSourcePreliminary()); + } + + private DataSource getDataSourcePreliminary() { + String database = "xyz"; + String path = "C:\\Users\\a.mueller\\.cdmLibrary\\writableResources\\h2\\LocalH2_" + database; + String username = "sa"; + CdmDataSource dataSource = CdmDataSource.NewH2EmbeddedInstance("cdmTest", username, "", path, NomenclaturalCode.ICNAFP); + return dataSource; + } + + + +} diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml b/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml index e48ff8a30..491b20315 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml @@ -7,11 +7,17 @@ after_transaction + + org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl + - org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl - + eu.etaxonomy.taxeditor.remoting.cache.CdmModelCacherConnectionProvider + + - - - + \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.test/src/test/resources/.cdmLibrary/writableResources/test.mgd.datasources.xml b/eu.etaxonomy.taxeditor.test/src/test/resources/.cdmLibrary/writableResources/test.mgd.datasources.xml index c352d500f..5a1c1a210 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/resources/.cdmLibrary/writableResources/test.mgd.datasources.xml +++ b/eu.etaxonomy.taxeditor.test/src/test/resources/.cdmLibrary/writableResources/test.mgd.datasources.xml @@ -16,6 +16,6 @@ - + -- 2.34.1