-
-// $Id$\r
/**\r
* Copyright (C) 2007 EDIT\r
* European Distributed Institute of Taxonomy\r
\r
package eu.etaxonomy.cdm.api.application;\r
\r
-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;\r
+import java.util.List;\r
+import java.util.Properties;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.SessionFactory;\r
+import org.springframework.beans.MutablePropertyValues;\r
+import org.springframework.beans.factory.config.BeanDefinition;\r
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;\r
+import org.springframework.context.ApplicationListener;\r
+import org.springframework.context.support.AbstractApplicationContext;\r
+import org.springframework.core.io.ClassPathResource;\r
+import org.springframework.core.io.Resource;\r
+import org.springframework.security.authentication.ProviderManager;\r
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;\r
+import org.springframework.security.core.Authentication;\r
+import org.springframework.security.core.context.SecurityContext;\r
+import org.springframework.security.core.context.SecurityContextHolder;\r
+import org.springframework.transaction.PlatformTransactionManager;\r
+import org.springframework.transaction.TransactionStatus;\r
+\r
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
+import eu.etaxonomy.cdm.api.service.IAgentService;\r
+import eu.etaxonomy.cdm.api.service.IAnnotationService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
+import eu.etaxonomy.cdm.api.service.ICollectionService;\r
+import eu.etaxonomy.cdm.api.service.ICommonService;\r
+import eu.etaxonomy.cdm.api.service.IDatabaseService;\r
+import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
+import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;\r
+import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService;\r
+import eu.etaxonomy.cdm.api.service.IEntityValidationService;\r
+import eu.etaxonomy.cdm.api.service.IEventBaseService;\r
+import eu.etaxonomy.cdm.api.service.IFeatureNodeService;\r
+import eu.etaxonomy.cdm.api.service.IFeatureTreeService;\r
+import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;\r
+import eu.etaxonomy.cdm.api.service.IGroupService;\r
+import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;\r
+import eu.etaxonomy.cdm.api.service.ILocationService;\r
+import eu.etaxonomy.cdm.api.service.IMediaService;\r
+import eu.etaxonomy.cdm.api.service.IMetadataService;\r
+import eu.etaxonomy.cdm.api.service.INameService;\r
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;\r
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;\r
+import eu.etaxonomy.cdm.api.service.IPreferenceService;\r
+import eu.etaxonomy.cdm.api.service.IProgressMonitorService;\r
+import eu.etaxonomy.cdm.api.service.IReferenceService;\r
+import eu.etaxonomy.cdm.api.service.IRegistrationService;\r
+import eu.etaxonomy.cdm.api.service.IRightsService;\r
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;\r
+import eu.etaxonomy.cdm.api.service.ITaxonService;\r
+import eu.etaxonomy.cdm.api.service.ITermService;\r
+import eu.etaxonomy.cdm.api.service.IUserService;\r
+import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
+import eu.etaxonomy.cdm.api.service.molecular.IAmplificationService;\r
+import eu.etaxonomy.cdm.api.service.molecular.IPrimerService;\r
+import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;\r
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
+import eu.etaxonomy.cdm.common.monitor.NullProgressMonitor;\r
+import eu.etaxonomy.cdm.common.monitor.SubProgressMonitor;\r
+import eu.etaxonomy.cdm.database.CdmPersistentDataSource;\r
+import eu.etaxonomy.cdm.database.DataSourceNotFoundException;\r
+import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
+import eu.etaxonomy.cdm.persistence.hibernate.HibernateConfiguration;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator;\r
\r
/**\r
* @author a.mueller\r
*/\r
-public class CdmApplicationController implements ICdmApplicationConfiguration {\r
+public class CdmApplicationController implements ICdmRepository {\r
private static final Logger logger = Logger.getLogger(CdmApplicationController.class);\r
\r
public static final String DEFAULT_APPLICATION_CONTEXT_RESOURCE = "/eu/etaxonomy/cdm/defaultApplicationContext.xml";\r
\r
public AbstractApplicationContext applicationContext;\r
- protected ICdmApplicationConfiguration configuration;\r
+ protected ICdmRepository configuration;\r
private final Resource applicationContextResource;\r
\r
private final IProgressMonitor progressMonitor;\r
\r
public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource,\r
DbSchemaValidation dbSchemaValidation, boolean omitTermLoading){\r
- return CdmApplicationController.NewInstance(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading, null);\r
+ return CdmApplicationController.NewInstance(applicationContextResource, dataSource, dbSchemaValidation,\r
+ null, omitTermLoading, null);\r
}\r
-\r
+ public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource,\r
+ DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, IProgressMonitor progressMonitor){\r
+ return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation,\r
+ null, omitTermLoading, progressMonitor, null);\r
+ }\r
public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource,\r
- DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, IProgressMonitor progressMonitor){\r
- return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading, progressMonitor, null);\r
+ DbSchemaValidation dbSchemaValidation, HibernateConfiguration hibernateConfig,\r
+ boolean omitTermLoading, IProgressMonitor progressMonitor){\r
+ return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation,\r
+ hibernateConfig, omitTermLoading, progressMonitor, null);\r
}\r
\r
\r
* @param omitTermLoading\r
*/\r
protected CdmApplicationController(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation,\r
- boolean omitTermLoading, IProgressMonitor progressMonitor, List<ApplicationListener> listeners){\r
+ HibernateConfiguration hibernateConfig,\r
+ boolean omitTermLoading, IProgressMonitor progressMonitor, List<ApplicationListener> listeners){\r
logger.info("Start CdmApplicationController with datasource: " + dataSource.getName());\r
\r
if (dbSchemaValidation == null) {\r
this.applicationContextResource = applicationContextResource != null ? applicationContextResource : getClasspathResource();\r
this.progressMonitor = progressMonitor != null ? progressMonitor : new NullProgressMonitor();\r
\r
- setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading, listeners);\r
+ setNewDataSource(dataSource, dbSchemaValidation, hibernateConfig, omitTermLoading, listeners);\r
}\r
\r
\r
*\r
* @param dataSource\r
*/\r
- private boolean setNewDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading,\r
- List<ApplicationListener> listeners){\r
+ private boolean setNewDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation,\r
+ HibernateConfiguration hibernateConfig,\r
+ boolean omitTermLoading, List<ApplicationListener> listeners){\r
\r
if (dbSchemaValidation == null) {\r
dbSchemaValidation = defaultDbSchemaValidation;\r
applicationContext.registerBeanDefinition("dataSource", datasourceBean);\r
progressMonitor.worked(1);\r
\r
- BeanDefinition hibernatePropBean = dataSource.getHibernatePropertiesBean(dbSchemaValidation);\r
+ BeanDefinition hibernatePropBean = dataSource.getHibernatePropertiesBean(dbSchemaValidation, hibernateConfig);\r
applicationContext.registerBeanDefinition("hibernateProperties", hibernatePropBean);\r
\r
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(applicationContext);\r
}\r
\r
if (listeners != null) {\r
- for (ApplicationListener listener : listeners) {\r
+ for (ApplicationListener<?> listener : listeners) {\r
applicationContext.addApplicationListener(listener);\r
}\r
}\r
return true;\r
}\r
\r
+ /**\r
+ * Overrides all default with values in hibernate config, if defined\r
+ * @param hibernatePropBean\r
+ * @param hibernateConfig\r
+ */\r
+ private void registerHibernateConfig(BeanDefinition hibernatePropBean, HibernateConfiguration hibernateConfig) {\r
+ setHibernateProperty(hibernatePropBean, HibernateConfiguration.REGISTER_ENVERS,\r
+ hibernateConfig.getRegisterEnvers());\r
+ setHibernateProperty(hibernatePropBean, HibernateConfiguration.REGISTER_SEARCH,\r
+ hibernateConfig.getRegisterSearch());\r
+ setHibernateProperty(hibernatePropBean, HibernateConfiguration.SHOW_SQL,\r
+ hibernateConfig.getShowSql());\r
+ setHibernateProperty(hibernatePropBean, HibernateConfiguration.FORMAT_SQL,\r
+ hibernateConfig.getFormatSql());\r
+ }\r
+\r
+\r
+ private void setHibernateProperty(BeanDefinition hibernatePropBean, String key, Boolean value) {\r
+ if (value != null){\r
+ setHibernateProperty(hibernatePropBean, key, String.valueOf(value));\r
+ }\r
+ }\r
+ private void setHibernateProperty(BeanDefinition hibernatePropBean, String key, String value) {\r
+ if (value != null){\r
+ Properties props = (Properties)hibernatePropBean.getPropertyValues().get("properties");\r
+ props.setProperty(key, value);\r
+ }\r
+ }\r
+\r
\r
/**\r
* Tests if some DefinedTermsAreMissing.\r
*/\r
public boolean changeDataSource(ICdmDataSource dataSource){\r
//logger.info("Change datasource to : " + dataSource);\r
- return setNewDataSource(dataSource, DbSchemaValidation.VALIDATE, false, null);\r
+ return setNewDataSource(dataSource, DbSchemaValidation.VALIDATE, null, false, null);\r
}\r
\r
\r
*/\r
public boolean changeDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation){\r
//logger.info("Change datasource to : " + dataSource);\r
- return setNewDataSource(dataSource, dbSchemaValidation, false, null);\r
+ return setNewDataSource(dataSource, dbSchemaValidation, null, false, null);\r
}\r
\r
\r
*/\r
public boolean changeDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading){\r
logger.info("Change datasource to : " + dataSource);\r
- return setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading, null);\r
+ return setNewDataSource(dataSource, dbSchemaValidation, null, omitTermLoading, null);\r
}\r
\r
\r
public boolean changeDataSource(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading,\r
List<ApplicationListener> listeners){\r
logger.info("Change datasource to : " + dataSource);\r
- return setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading, listeners);\r
+ return setNewDataSource(dataSource, dbSchemaValidation, null, omitTermLoading, listeners);\r
}\r
\r
\r
init();\r
}\r
\r
-\r
- /*\r
- * (non-Javadoc)\r
- *\r
- * @see java.lang.Object#finalize()\r
- */\r
@Override\r
public void finalize(){\r
close();\r
}\r
\r
-\r
/**\r
* closes the application\r
*/\r
logger.info(beanName);\r
}\r
}\r
- configuration = (ICdmApplicationConfiguration) applicationContext.getBean("cdmApplicationDefaultConfiguration");\r
+ configuration = (ICdmRepository) applicationContext.getBean("cdmRepository");\r
try {\r
//FIXME:Remoting catching exection to allow for remoting\r
getDatabaseService().setApplicationController(this);\r
\r
@Override\r
public final ITaxonNodeService getTaxonNodeService(){\r
- return configuration.getTaxonNodeService();\r
+ try{\r
+ return configuration.getTaxonNodeService();\r
+ } catch (Exception e){\r
+ e.printStackTrace();\r
+ }\r
+ return null;\r
}\r
\r
\r
@Override\r
public ISequenceService getSequenceService(){\r
return configuration.getSequenceService();\r
- }
-
- @Override
- public IEventBaseService getEventBaseService() {
- return configuration.getEventBaseService();
}\r
-
+\r
+ @Override\r
+ public IEventBaseService getEventBaseService() {\r
+ return configuration.getEventBaseService();\r
+ }\r
+\r
\r
\r
@Override\r
public final IMediaService getMediaService(){\r
return configuration.getMediaService();\r
}\r
-
-
- @Override
- public final IMetadataService getMetadataService(){
- return configuration.getMetadataService();
- }
+\r
+\r
+ @Override\r
+ public final IMetadataService getMetadataService(){\r
+ return configuration.getMetadataService();\r
+ }\r
\r
\r
@Override\r
@Override\r
public final IFeatureTreeService getFeatureTreeService(){\r
return configuration.getFeatureTreeService();\r
- }
-
- @Override
- public final IPreferenceService getPreferenceService(){
- return configuration.getPreferenceService();
+ }\r
+\r
+ @Override\r
+ public final IPreferenceService getPreferenceService(){\r
+ return configuration.getPreferenceService();\r
}\r
\r
\r
return configuration.getEntityConstraintViolationService();\r
}\r
\r
-\r
- @Override\r
- public final IService<CdmBase> getMainService(){\r
- return configuration.getMainService();\r
- }\r
-\r
-\r
@Override\r
- public final IWorkingSetService getWorkingSetService(){\r
- return configuration.getWorkingSetService();\r
+ public final IDescriptiveDataSetService getDescriptiveDataSetService(){\r
+ return configuration.getDescriptiveDataSetService();\r
}\r
\r
\r
return;\r
}\r
\r
+\r
+ /**\r
+ * {@inheritDoc}\r
+ */\r
+ @Override\r
+ public IRightsService getRightsService() {\r
+ return configuration.getRightsService();\r
+ }\r
+\r
+\r
+ /**\r
+ * {@inheritDoc}\r
+ */\r
+ @Override\r
+ public IRegistrationService getRegistrationService() {\r
+ return configuration.getRegistrationService();\r
+ }\r
+\r
}\r
-
+\r