X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/552ad6cc332e1ca9cca4c585084892f88c9266ae..8b8385d3408b81faf20781d9ce548203714ac93c:/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationDefaultConfiguration.java diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationDefaultConfiguration.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationDefaultConfiguration.java index 820c8918f8..08804043cf 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationDefaultConfiguration.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationDefaultConfiguration.java @@ -1,12 +1,12 @@ // $Id$ /** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ + * Copyright (C) 2007 EDIT + * European Distributed Institute of Taxonomy + * http://www.e-taxonomy.eu + * + * The contents of this file are subject to the Mozilla Public License Version 1.1 + * See LICENSE.TXT at the top of this package for the full license terms. + */ package eu.etaxonomy.cdm.api.application; @@ -14,26 +14,59 @@ import javax.sql.DataSource; import org.apache.log4j.Logger; import org.hibernate.SessionFactory; +import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.orm.hibernate3.HibernateTransactionManager; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.orm.hibernate5.HibernateTransactionManager; +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.stereotype.Component; import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.support.DefaultTransactionDefinition; 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.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.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator; /** * @author a.mueller @@ -41,10 +74,15 @@ import eu.etaxonomy.cdm.model.common.CdmBase; * @version 1.0 */ @Component -public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfiguration { - @SuppressWarnings("unused") +public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfiguration, ApplicationContextAware { private static final Logger logger = Logger.getLogger(CdmApplicationDefaultConfiguration.class); + protected ApplicationContext applicationContext; + + @Autowired + //@Qualifier("nameService") + private IAnnotationService annotationService; + @Autowired //@Qualifier("nameService") private INameService nameService; @@ -52,6 +90,9 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig //@Qualifier("taxonService") private ITaxonService taxonService; @Autowired + //@Qualifier("classificationService") + private IClassificationService classificationService; + @Autowired //@Qualifier("referenceService") private IReferenceService referenceService; @Autowired @@ -63,7 +104,7 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig @Autowired //@Qualifier("termService") private ITermService termService; - @Autowired + //@Autowired private HibernateTransactionManager transactionManager; @Autowired //@Qualifier("descriptionService") @@ -72,128 +113,355 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig //@Qualifier("occurrenceService") private IOccurrenceService occurrenceService; @Autowired + //@Qualifier("primerService") + private IPrimerService primerService; + @Autowired + //@Qualifier("amplificationService") + private IAmplificationService amplificationService; + @Autowired + //@Qualifier("sequenceService") + private ISequenceService sequenceService; + @Autowired + //@Qualifier("eventBaseService") + private IEventBaseService eventBaseService; + @Autowired //@Qualifier("mediaService") private IMediaService mediaService; + @Autowired + //@Qualifier("mediaService") + private IMetadataService metadataService; @Autowired //@Qualifier("commonService") private ICommonService commonService; @Autowired private ILocationService locationService; + //@Autowired + private SessionFactory sessionFactory; + //@Autowired + private DataSource dataSource; + @Autowired + private ProviderManager authenticationManager; @Autowired private IUserService userService; -// @Autowired + @Autowired + private IGrantedAuthorityService grantedAuthorityService; + @Autowired + private IGroupService groupService; + @Autowired + private ICollectionService collectionService; + @Autowired + private IFeatureTreeService featureTreeService; + @Autowired + private IFeatureNodeService featureNodeService; + @Autowired + private IVocabularyService vocabularyService; + @Autowired + private ITaxonNodeService taxonNodeService; + @Autowired + private IIdentificationKeyService identificationKeyService; + @Autowired + private IPolytomousKeyService polytomousKeyService; + @Autowired + private IPolytomousKeyNodeService polytomousKeyNodeService; + @Autowired + private IProgressMonitorService progressMonitorService; + @Autowired + private IEntityValidationService entityValidationService; + @Autowired + private IEntityConstraintViolationService entityConstraintViolationService; + @Autowired + private ICdmPermissionEvaluator permissionEvaluator; + + // @Autowired //@Qualifier("mainService") private IService mainService; + @Autowired - private SessionFactory sessionFactory; - @Autowired - private DataSource dataSource; + private IWorkingSetService workingSetService; + + + //********************** CONSTRUCTOR *********************************************************/ - /** - * + * Constructor */ - public CdmApplicationDefaultConfiguration() { + protected CdmApplicationDefaultConfiguration(){} + + + // ****************************** APPLICATION CONTEXT *************************************************/ + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{ + this.applicationContext = applicationContext; } - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAgentService() - */ - public IAgentService getAgentService() { + // ****************************** GETTER *************************************************/ + + @Override + public final Object getBean(String name){ + return this.applicationContext.getBean(name); + } + + @Override + public IAnnotationService getAnnotationService(){ + return this.annotationService; + } + + @Override + public IAgentService getAgentService(){ return this.agentService; } - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDatabaseService() - */ - public IDatabaseService getDatabaseService() { + @Override + public IDatabaseService getDatabaseService(){ return this.databaseService; } - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getNameService() - */ - public INameService getNameService() { + + @Autowired + public void setDataSource(DataSource dataSource){ + this.dataSource = dataSource; + } + + @Override + public INameService getNameService(){ return this.nameService; } - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getReferenceService() - */ - public IReferenceService getReferenceService() { + @Override + public IReferenceService getReferenceService(){ return this.referenceService; } - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTaxonService() - */ - public ITaxonService getTaxonService() { + @Autowired + public void setSessionFactory(SessionFactory sessionFactory){ + this.sessionFactory = sessionFactory; + } + + @Override + public ITaxonService getTaxonService(){ return this.taxonService; } - - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDescriptionService() - */ + + @Override + public IClassificationService getClassificationService(){ + return this.classificationService; + } + + @Override + public ITaxonNodeService getTaxonNodeService(){ + return this.taxonNodeService; + } + + @Override public IDescriptionService getDescriptionService(){ return this.descriptionService; } + @Override public IOccurrenceService getOccurrenceService(){ return this.occurrenceService; } + @Override + public IPrimerService getPrimerService(){ + return this.primerService; + } + + @Override + public IAmplificationService getAmplificationService(){ + return this.amplificationService; + } + + @Override + public ISequenceService getSequenceService(){ + return this.sequenceService; + } + + @Override + public IEventBaseService getEventBaseService() { + return this.eventBaseService; + } + + @Override public IMediaService getMediaService(){ return this.mediaService; } - - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTermService() - */ - public ITermService getTermService() { + + /** + * {@inheritDoc} + */ + @Override + public IMetadataService getMetadataService() { + return this.metadataService; + } + + @Override + public ITermService getTermService(){ return this.termService; } - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCommonService() - */ + @Override public ICommonService getCommonService(){ return this.commonService; } - - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getLocationService() - */ - public ILocationService getLocationService() { + + @Override + public ILocationService getLocationService(){ return this.locationService; } - - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getUserService() - */ - public IUserService getUserService() { + + @Override + public IUserService getUserService(){ return this.userService; } - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCommonService() - */ + @Override + public IGrantedAuthorityService getGrantedAuthorityService(){ + return this.grantedAuthorityService; + } + + @Override public IService getMainService(){ return this.mainService; } - - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTransactionManager() - */ - public PlatformTransactionManager getTransactionManager() { + + @Override + public PlatformTransactionManager getTransactionManager(){ return this.transactionManager; } - /* (non-Javadoc) - * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#NewConversation() - */ - public ConversationHolder NewConversation() { + + @Autowired + public void setTransactionManager(PlatformTransactionManager transactionManager){ + this.transactionManager = (HibernateTransactionManager) transactionManager; + } + + @Override + public ProviderManager getAuthenticationManager(){ + return this.authenticationManager; + } + + @Override + public ConversationHolder NewConversation(){ // TODO make this a prototype return new ConversationHolder(dataSource, sessionFactory, transactionManager); - } - + } + + @Override + public ICollectionService getCollectionService(){ + return collectionService; + } + + @Override + public IFeatureTreeService getFeatureTreeService(){ + return featureTreeService; + } + + @Override + public IFeatureNodeService getFeatureNodeService(){ + return featureNodeService; + } + + @Override + public IVocabularyService getVocabularyService(){ + return vocabularyService; + } + + @Override + public IIdentificationKeyService getIdentificationKeyService(){ + return identificationKeyService; + } + + @Override + public IPolytomousKeyService getPolytomousKeyService(){ + return polytomousKeyService; + } + + + @Override + public IPolytomousKeyNodeService getPolytomousKeyNodeService(){ + return polytomousKeyNodeService; + } + + /** + * {@inheritDoc} + */ + @Override + public IProgressMonitorService getProgressMonitorService() { + return progressMonitorService; + } + + @Override + public IWorkingSetService getWorkingSetService(){ + return workingSetService; + } + + @Override + public IGroupService getGroupService(){ + return groupService; + } + + + @Override + public IEntityValidationService getEntityValidationService(){ + return entityValidationService; + } + + + @Override + public IEntityConstraintViolationService getEntityConstraintViolationService(){ + return entityConstraintViolationService; + } + + @Override + public ICdmPermissionEvaluator getPermissionEvaluator(){ + return permissionEvaluator; + } + + @Override + public TransactionStatus startTransaction(){ + return startTransaction(false); + } + + @Override + public TransactionStatus startTransaction(Boolean readOnly){ + + PlatformTransactionManager txManager = getTransactionManager(); + + DefaultTransactionDefinition defaultTxDef = new DefaultTransactionDefinition(); + defaultTxDef.setReadOnly(readOnly); + TransactionDefinition txDef = defaultTxDef; + + // Log some transaction-related debug information. + if (logger.isDebugEnabled()) { + logger.debug("Transaction name = " + txDef.getName()); + logger.debug("Transaction facets:"); + logger.debug("Propagation behavior = " + txDef.getPropagationBehavior()); + logger.debug("Isolation level = " + txDef.getIsolationLevel()); + logger.debug("Timeout = " + txDef.getTimeout()); + logger.debug("Read Only = " + txDef.isReadOnly()); + // org.springframework.orm.hibernate5.HibernateTransactionManager + // provides more transaction/session-related debug information. + } + + TransactionStatus txStatus = txManager.getTransaction(txDef); + return txStatus; + } + + + @Override + public void commitTransaction(TransactionStatus txStatus){ + PlatformTransactionManager txManager = getTransactionManager(); + txManager.commit(txStatus); + return; + } + + @Override + public void authenticate(String username, String password){ + UsernamePasswordAuthenticationToken tokenForUser = new UsernamePasswordAuthenticationToken(username, password); + Authentication authentication = this.getAuthenticationManager().authenticate(tokenForUser); + SecurityContext context = SecurityContextHolder.getContext(); + context.setAuthentication(authentication); + } }