X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/1990fe50d64b47172a9924e5dd3a351db61bca6c..34059bfdc3761838660bc36bd4487f5bee4cbaf8:/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationController.java diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationController.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationController.java index bea2a40c16..c2e9441323 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationController.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationController.java @@ -1,5 +1,3 @@ - -// $Id$ /** * Copyright (C) 2007 EDIT * European Distributed Institute of Taxonomy @@ -11,85 +9,88 @@ package eu.etaxonomy.cdm.api.application; -import java.util.EnumSet; -import java.util.List; -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.hibernate.SessionFactory; -import org.springframework.beans.MutablePropertyValues; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; -import org.springframework.context.ApplicationListener; -import org.springframework.context.support.AbstractApplicationContext; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; -import org.springframework.security.authentication.ProviderManager; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.TransactionStatus; - -import eu.etaxonomy.cdm.api.conversation.ConversationHolder; -import eu.etaxonomy.cdm.api.service.IAgentService; -import eu.etaxonomy.cdm.api.service.IAnnotationService; -import eu.etaxonomy.cdm.api.service.IClassificationService; -import eu.etaxonomy.cdm.api.service.ICollectionService; -import eu.etaxonomy.cdm.api.service.ICommonService; -import eu.etaxonomy.cdm.api.service.IDatabaseService; -import eu.etaxonomy.cdm.api.service.IDescriptionService; -import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService; -import eu.etaxonomy.cdm.api.service.IEntityValidationService; -import eu.etaxonomy.cdm.api.service.IEventBaseService; -import eu.etaxonomy.cdm.api.service.IFeatureNodeService; -import eu.etaxonomy.cdm.api.service.IFeatureTreeService; -import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService; -import eu.etaxonomy.cdm.api.service.IGroupService; -import eu.etaxonomy.cdm.api.service.IIdentificationKeyService; -import eu.etaxonomy.cdm.api.service.ILocationService; -import eu.etaxonomy.cdm.api.service.IMediaService; -import eu.etaxonomy.cdm.api.service.IMetadataService; -import eu.etaxonomy.cdm.api.service.INameService; -import eu.etaxonomy.cdm.api.service.IOccurrenceService; -import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService; -import eu.etaxonomy.cdm.api.service.IPolytomousKeyService; -import eu.etaxonomy.cdm.api.service.IPreferenceService; -import eu.etaxonomy.cdm.api.service.IProgressMonitorService; -import eu.etaxonomy.cdm.api.service.IReferenceService; -import eu.etaxonomy.cdm.api.service.IService; -import eu.etaxonomy.cdm.api.service.ITaxonNodeService; -import eu.etaxonomy.cdm.api.service.ITaxonService; -import eu.etaxonomy.cdm.api.service.ITermService; -import eu.etaxonomy.cdm.api.service.IUserService; -import eu.etaxonomy.cdm.api.service.IVocabularyService; -import eu.etaxonomy.cdm.api.service.IWorkingSetService; -import eu.etaxonomy.cdm.api.service.molecular.IAmplificationService; -import eu.etaxonomy.cdm.api.service.molecular.IPrimerService; -import eu.etaxonomy.cdm.api.service.molecular.ISequenceService; -import eu.etaxonomy.cdm.common.monitor.IProgressMonitor; -import eu.etaxonomy.cdm.common.monitor.NullProgressMonitor; -import eu.etaxonomy.cdm.common.monitor.SubProgressMonitor; -import eu.etaxonomy.cdm.database.CdmPersistentDataSource; -import eu.etaxonomy.cdm.database.DataSourceNotFoundException; -import eu.etaxonomy.cdm.database.DbSchemaValidation; -import eu.etaxonomy.cdm.database.ICdmDataSource; -import eu.etaxonomy.cdm.model.common.CdmBase; -import eu.etaxonomy.cdm.model.common.DefinedTermBase; -import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD; -import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator; +import java.util.EnumSet; +import java.util.List; +import java.util.Properties; +import java.util.UUID; + +import org.apache.log4j.Logger; +import org.hibernate.SessionFactory; +import org.springframework.beans.MutablePropertyValues; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; +import org.springframework.context.ApplicationListener; +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.security.authentication.ProviderManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionStatus; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.api.service.IAgentService; +import eu.etaxonomy.cdm.api.service.IAnnotationService; +import eu.etaxonomy.cdm.api.service.IClassificationService; +import eu.etaxonomy.cdm.api.service.ICollectionService; +import eu.etaxonomy.cdm.api.service.ICommonService; +import eu.etaxonomy.cdm.api.service.IDatabaseService; +import eu.etaxonomy.cdm.api.service.IDescriptionService; +import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService; +import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService; +import eu.etaxonomy.cdm.api.service.IEntityValidationService; +import eu.etaxonomy.cdm.api.service.IEventBaseService; +import eu.etaxonomy.cdm.api.service.IFeatureNodeService; +import eu.etaxonomy.cdm.api.service.IFeatureTreeService; +import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService; +import eu.etaxonomy.cdm.api.service.IGroupService; +import eu.etaxonomy.cdm.api.service.IIdentificationKeyService; +import eu.etaxonomy.cdm.api.service.ILocationService; +import eu.etaxonomy.cdm.api.service.IMediaService; +import eu.etaxonomy.cdm.api.service.IMetadataService; +import eu.etaxonomy.cdm.api.service.INameService; +import eu.etaxonomy.cdm.api.service.IOccurrenceService; +import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService; +import eu.etaxonomy.cdm.api.service.IPolytomousKeyService; +import eu.etaxonomy.cdm.api.service.IPreferenceService; +import eu.etaxonomy.cdm.api.service.IProgressMonitorService; +import eu.etaxonomy.cdm.api.service.IReferenceService; +import eu.etaxonomy.cdm.api.service.IRegistrationService; +import eu.etaxonomy.cdm.api.service.IRightsService; +import eu.etaxonomy.cdm.api.service.ITaxonNodeService; +import eu.etaxonomy.cdm.api.service.ITaxonService; +import eu.etaxonomy.cdm.api.service.ITermService; +import eu.etaxonomy.cdm.api.service.IUserService; +import eu.etaxonomy.cdm.api.service.IVocabularyService; +import eu.etaxonomy.cdm.api.service.molecular.IAmplificationService; +import eu.etaxonomy.cdm.api.service.molecular.IPrimerService; +import eu.etaxonomy.cdm.api.service.molecular.ISequenceService; +import eu.etaxonomy.cdm.common.monitor.IProgressMonitor; +import eu.etaxonomy.cdm.common.monitor.NullProgressMonitor; +import eu.etaxonomy.cdm.common.monitor.SubProgressMonitor; +import eu.etaxonomy.cdm.database.CdmPersistentDataSource; +import eu.etaxonomy.cdm.database.DataSourceNotFoundException; +import eu.etaxonomy.cdm.database.DbSchemaValidation; +import eu.etaxonomy.cdm.database.ICdmDataSource; +import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.term.DefinedTermBase; +import eu.etaxonomy.cdm.persistence.hibernate.HibernateConfiguration; +import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD; +import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator; /** * @author a.mueller */ -public class CdmApplicationController implements ICdmApplicationConfiguration { +public class CdmApplicationController implements ICdmRepository { private static final Logger logger = Logger.getLogger(CdmApplicationController.class); public static final String DEFAULT_APPLICATION_CONTEXT_RESOURCE = "/eu/etaxonomy/cdm/defaultApplicationContext.xml"; public AbstractApplicationContext applicationContext; - protected ICdmApplicationConfiguration configuration; + protected ICdmRepository configuration; private final Resource applicationContextResource; private final IProgressMonitor progressMonitor; @@ -146,12 +147,19 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading){ - return CdmApplicationController.NewInstance(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading, null); + return CdmApplicationController.NewInstance(applicationContextResource, dataSource, dbSchemaValidation, + null, omitTermLoading, null); } - + public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource, + DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, IProgressMonitor progressMonitor){ + return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation, + null, omitTermLoading, progressMonitor, null); + } public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource, - DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, IProgressMonitor progressMonitor){ - return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading, progressMonitor, null); + DbSchemaValidation dbSchemaValidation, HibernateConfiguration hibernateConfig, + boolean omitTermLoading, IProgressMonitor progressMonitor){ + return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation, + hibernateConfig, omitTermLoading, progressMonitor, null); } @@ -198,7 +206,8 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { * @param omitTermLoading */ protected CdmApplicationController(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, - boolean omitTermLoading, IProgressMonitor progressMonitor, List listeners){ + HibernateConfiguration hibernateConfig, + boolean omitTermLoading, IProgressMonitor progressMonitor, List listeners){ logger.info("Start CdmApplicationController with datasource: " + dataSource.getName()); if (dbSchemaValidation == null) { @@ -207,7 +216,7 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { this.applicationContextResource = applicationContextResource != null ? applicationContextResource : getClasspathResource(); this.progressMonitor = progressMonitor != null ? progressMonitor : new NullProgressMonitor(); - setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading, listeners); + setNewDataSource(dataSource, dbSchemaValidation, hibernateConfig, omitTermLoading, listeners); } @@ -217,8 +226,9 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { * * @param dataSource */ - private boolean setNewDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, - List listeners){ + private boolean setNewDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, + HibernateConfiguration hibernateConfig, + boolean omitTermLoading, List listeners){ if (dbSchemaValidation == null) { dbSchemaValidation = defaultDbSchemaValidation; @@ -239,7 +249,7 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { applicationContext.registerBeanDefinition("dataSource", datasourceBean); progressMonitor.worked(1); - BeanDefinition hibernatePropBean = dataSource.getHibernatePropertiesBean(dbSchemaValidation); + BeanDefinition hibernatePropBean = dataSource.getHibernatePropertiesBean(dbSchemaValidation, hibernateConfig); applicationContext.registerBeanDefinition("hibernateProperties", hibernatePropBean); XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(applicationContext); @@ -256,7 +266,7 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { } if (listeners != null) { - for (ApplicationListener listener : listeners) { + for (ApplicationListener listener : listeners) { applicationContext.addApplicationListener(listener); } } @@ -279,6 +289,35 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { return true; } + /** + * Overrides all default with values in hibernate config, if defined + * @param hibernatePropBean + * @param hibernateConfig + */ + private void registerHibernateConfig(BeanDefinition hibernatePropBean, HibernateConfiguration hibernateConfig) { + setHibernateProperty(hibernatePropBean, HibernateConfiguration.REGISTER_ENVERS, + hibernateConfig.getRegisterEnvers()); + setHibernateProperty(hibernatePropBean, HibernateConfiguration.REGISTER_SEARCH, + hibernateConfig.getRegisterSearch()); + setHibernateProperty(hibernatePropBean, HibernateConfiguration.SHOW_SQL, + hibernateConfig.getShowSql()); + setHibernateProperty(hibernatePropBean, HibernateConfiguration.FORMAT_SQL, + hibernateConfig.getFormatSql()); + } + + + private void setHibernateProperty(BeanDefinition hibernatePropBean, String key, Boolean value) { + if (value != null){ + setHibernateProperty(hibernatePropBean, key, String.valueOf(value)); + } + } + private void setHibernateProperty(BeanDefinition hibernatePropBean, String key, String value) { + if (value != null){ + Properties props = (Properties)hibernatePropBean.getPropertyValues().get("properties"); + props.setProperty(key, value); + } + } + /** * Tests if some DefinedTermsAreMissing. @@ -304,7 +343,7 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { */ public boolean changeDataSource(ICdmDataSource dataSource){ //logger.info("Change datasource to : " + dataSource); - return setNewDataSource(dataSource, DbSchemaValidation.VALIDATE, false, null); + return setNewDataSource(dataSource, DbSchemaValidation.VALIDATE, null, false, null); } @@ -316,7 +355,7 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { */ public boolean changeDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation){ //logger.info("Change datasource to : " + dataSource); - return setNewDataSource(dataSource, dbSchemaValidation, false, null); + return setNewDataSource(dataSource, dbSchemaValidation, null, false, null); } @@ -329,7 +368,7 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { */ public boolean changeDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading){ logger.info("Change datasource to : " + dataSource); - return setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading, null); + return setNewDataSource(dataSource, dbSchemaValidation, null, omitTermLoading, null); } @@ -343,7 +382,7 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { public boolean changeDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, List listeners){ logger.info("Change datasource to : " + dataSource); - return setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading, listeners); + return setNewDataSource(dataSource, dbSchemaValidation, null, omitTermLoading, listeners); } @@ -359,18 +398,11 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { init(); } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#finalize() - */ @Override public void finalize(){ close(); } - /** * closes the application */ @@ -405,7 +437,7 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { logger.info(beanName); } } - configuration = (ICdmApplicationConfiguration) applicationContext.getBean("cdmApplicationDefaultConfiguration"); + configuration = (ICdmRepository) applicationContext.getBean("cdmRepository"); try { //FIXME:Remoting catching exection to allow for remoting getDatabaseService().setApplicationController(this); @@ -442,7 +474,12 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { @Override public final ITaxonNodeService getTaxonNodeService(){ - return configuration.getTaxonNodeService(); + try{ + return configuration.getTaxonNodeService(); + } catch (Exception e){ + e.printStackTrace(); + } + return null; } @@ -489,13 +526,13 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { @Override public ISequenceService getSequenceService(){ return configuration.getSequenceService(); - } - - @Override - public IEventBaseService getEventBaseService() { - return configuration.getEventBaseService(); } - + + @Override + public IEventBaseService getEventBaseService() { + return configuration.getEventBaseService(); + } + @Override @@ -508,12 +545,12 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { public final IMediaService getMediaService(){ return configuration.getMediaService(); } - - - @Override - public final IMetadataService getMetadataService(){ - return configuration.getMetadataService(); - } + + + @Override + public final IMetadataService getMetadataService(){ + return configuration.getMetadataService(); + } @Override @@ -555,11 +592,11 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { @Override public final IFeatureTreeService getFeatureTreeService(){ return configuration.getFeatureTreeService(); - } - - @Override - public final IPreferenceService getPreferenceService(){ - return configuration.getPreferenceService(); + } + + @Override + public final IPreferenceService getPreferenceService(){ + return configuration.getPreferenceService(); } @@ -613,16 +650,9 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { return configuration.getEntityConstraintViolationService(); } - - @Override - public final IService getMainService(){ - return configuration.getMainService(); - } - - @Override - public final IWorkingSetService getWorkingSetService(){ - return configuration.getWorkingSetService(); + public final IDescriptiveDataSetService getDescriptiveDataSetService(){ + return configuration.getDescriptiveDataSetService(); } @@ -714,5 +744,23 @@ public class CdmApplicationController implements ICdmApplicationConfiguration { return; } + + /** + * {@inheritDoc} + */ + @Override + public IRightsService getRightsService() { + return configuration.getRightsService(); + } + + + /** + * {@inheritDoc} + */ + @Override + public IRegistrationService getRegistrationService() { + return configuration.getRegistrationService(); + } + } - +