+++ /dev/null
-// $Id: CdmApplicationController.java 11680 2011-04-04 17:07:39Z a.mueller $\r
-/**\r
- * Copyright (C) 2007 EDIT\r
- * European Distributed Institute of Taxonomy \r
- * http://www.e-taxonomy.eu\r
- * \r
- * The contents of this file are subject to the Mozilla Public License Version 1.1\r
- * See LICENSE.TXT at the top of this package for the full license terms.\r
- */\r
-\r
-\r
-package eu.etaxonomy.cdm.api.application;\r
-\r
-import java.util.UUID;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;\r
-import org.springframework.context.support.AbstractApplicationContext;\r
-import org.springframework.context.support.GenericApplicationContext;\r
-import org.springframework.core.io.ClassPathResource;\r
-import org.springframework.core.io.Resource;\r
-import org.springframework.security.access.PermissionEvaluator;\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.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.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.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.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.IReferenceService;\r
-import eu.etaxonomy.cdm.api.service.IService;\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.IWorkingSetService;\r
-import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
-import eu.etaxonomy.cdm.common.monitor.NullProgressMonitor;\r
-import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
-import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator;\r
-\r
-\r
-/**\r
- * @author a.mueller\r
- * @author j.koch\r
- *\r
- */\r
-public class CdmApplicationRemoteController implements ICdmApplicationRemoteConfiguration {\r
- private static final Logger logger = Logger.getLogger(CdmApplicationRemoteController.class);\r
- \r
- public static final String DEFAULT_APPLICATION_CONTEXT_RESOURCE = "/eu/etaxonomy/cdm/remotingApplicationContext.xml";\r
- \r
- public AbstractApplicationContext applicationContext;\r
- private ICdmApplicationRemoteConfiguration configuration; \r
- private Resource applicationContextResource;\r
- private IProgressMonitor progressMonitor;\r
- \r
- /**\r
- * Constructor, opens a spring ApplicationContext with defaults\r
- */\r
- public static CdmApplicationRemoteController NewInstance() {\r
- logger.info("Configure CdmApplicationRemoteController with defaults");\r
- return new CdmApplicationRemoteController(null, null);\r
- }\r
- \r
- /**\r
- * Constructor, opens a spring ApplicationContext with given application context\r
- * @param applicationContextResource\r
- */\r
- public static CdmApplicationRemoteController NewInstance(Resource applicationContextResource, IProgressMonitor progressMonitor) {\r
- logger.info("Configure CdmApplicationRemoteController with given application context");\r
- return new CdmApplicationRemoteController(applicationContextResource, progressMonitor);\r
- }\r
-\r
- /**\r
- * Constructor, starts the application remote controller\r
- * @param applicationContextResource\r
- */\r
- private CdmApplicationRemoteController(Resource applicationContextResource, IProgressMonitor progressMonitor){\r
- logger.info("Start CdmApplicationRemoteController");\r
- this.applicationContextResource = applicationContextResource != null ? applicationContextResource : new ClassPathResource(DEFAULT_APPLICATION_CONTEXT_RESOURCE);\r
- this.progressMonitor = progressMonitor != null ? progressMonitor : new NullProgressMonitor();\r
- setNewApplicationContext();\r
- }\r
- \r
- /**\r
- * Sets the application context to a new spring ApplicationContext and initializes the Controller\r
- */\r
- private boolean setNewApplicationContext(){\r
- logger.info("Set new application context");\r
- progressMonitor.beginTask("Start application context.", 6);\r
- progressMonitor.worked(1);\r
-\r
- GenericApplicationContext applicationContext = new GenericApplicationContext();\r
- \r
- XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(applicationContext);\r
- progressMonitor.subTask("Registering resources.");\r
- xmlReader.loadBeanDefinitions(applicationContextResource);\r
- progressMonitor.worked(1);\r
- \r
- progressMonitor.subTask("This might take a while ...");\r
- applicationContext.refresh();\r
- applicationContext.start();\r
- progressMonitor.worked(1);\r
- \r
- progressMonitor.subTask("Cleaning up.");\r
- setApplicationContext(applicationContext);\r
- progressMonitor.done();\r
- return true;\r
- }\r
- \r
- /**\r
- * Tests if some DefinedTermsAreMissing.\r
- * @return true, if at least one is missing, else false\r
- */\r
- public boolean testDefinedTermsAreMissing(){\r
- UUID englishUuid = UUID.fromString("e9f8cdb7-6819-44e8-95d3-e2d0690c3523");\r
- DefinedTermBase<?> english = this.getTermService().find(englishUuid);\r
- if ( english == null || ! english.getUuid().equals(englishUuid)){\r
- return true;\r
- }else{\r
- return false;\r
- }\r
- }\r
- \r
- /**\r
- * Sets a new application Context.\r
- * @param ac\r
- */\r
- public void setApplicationContext(AbstractApplicationContext ac){\r
- closeApplicationContext(); //closes old application context if necessary\r
- applicationContext = ac;\r
- applicationContext.registerShutdownHook();\r
- init();\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see java.lang.Object#finalize()\r
- */\r
- public void finalize(){\r
- close();\r
- }\r
- \r
- /**\r
- * closes the application\r
- */\r
- public void close(){\r
- closeApplicationContext();\r
- }\r
- \r
- /**\r
- * closes the application context\r
- */\r
- private void closeApplicationContext(){\r
- if (applicationContext != null){\r
- logger.info("Close ApplicationContext");\r
- applicationContext.close();\r
- }\r
- }\r
- \r
- private void init(){\r
- logger.info("Init " + this.getClass().getName() + " ... ");\r
- //if (logger.isInfoEnabled()){\r
- for (String beanName : applicationContext.getBeanDefinitionNames()){ \r
- logger.debug(beanName);}\r
- //}\r
- //TODO delete next row (was just for testing)\r
- //if (logger.isInfoEnabled()){\r
- logger.info("Registered Beans: ");\r
- String[] beanNames = applicationContext.getBeanDefinitionNames();\r
- for (String beanName : beanNames){\r
- logger.info(beanName);\r
- }\r
- //}\r
- //configuration = new CdmApplicationRemoteConfiguration();\r
- configuration = (ICdmApplicationRemoteConfiguration) applicationContext.getBean("cdmApplicationRemoteConfiguration");\r
- }\r
- \r
- \r
-\r
- /* ****** Services *********/\r
- \r
- public final INameService getNameService(){\r
- return configuration.getNameService();\r
- }\r
-\r
- public final ITaxonService getTaxonService(){\r
- return configuration.getTaxonService();\r
- }\r
- \r
- public final IClassificationService getClassificationService(){\r
- return configuration.getClassificationService();\r
- }\r
- \r
- public final ITaxonNodeService getTaxonNodeService(){\r
- return configuration.getTaxonNodeService();\r
- }\r
-\r
- public final IReferenceService getReferenceService(){\r
- return configuration.getReferenceService();\r
- }\r
- \r
- public final IAgentService getAgentService(){\r
- return configuration.getAgentService();\r
- }\r
- \r
- public final ITermService getTermService(){\r
- return configuration.getTermService();\r
- }\r
-\r
- public final IDescriptionService getDescriptionService(){\r
- return configuration.getDescriptionService();\r
- }\r
- \r
- public final IOccurrenceService getOccurrenceService(){\r
- return configuration.getOccurrenceService();\r
- }\r
-\r
- public final IMediaService getMediaService(){\r
- return configuration.getMediaService();\r
- }\r
-\r
- public final ICommonService getCommonService(){\r
- return configuration.getCommonService();\r
- }\r
- \r
- public final ILocationService getLocationService(){\r
- return configuration.getLocationService();\r
- }\r
- \r
- public final IUserService getUserService(){\r
- return configuration.getUserService();\r
- }\r
-\r
- public IGroupService getGroupService() {\r
- return configuration.getGroupService();\r
- }\r
- \r
- public final ICollectionService getCollectionService(){\r
- return configuration.getCollectionService();\r
- }\r
- \r
- public final IFeatureTreeService getFeatureTreeService(){\r
- return configuration.getFeatureTreeService();\r
- }\r
- \r
- public final IFeatureNodeService getFeatureNodeService(){\r
- return configuration.getFeatureNodeService();\r
- }\r
- \r
- public final IVocabularyService getVocabularyService(){\r
- return configuration.getVocabularyService();\r
- }\r
- \r
- public final IIdentificationKeyService getIdentificationKeyService(){\r
- return configuration.getIdentificationKeyService();\r
- }\r
-\r
- public final IPolytomousKeyService getPolytomousKeyService(){\r
- return configuration.getPolytomousKeyService();\r
- }\r
-\r
- public final IPolytomousKeyNodeService getPolytomousKeyNodeService(){\r
- return configuration.getPolytomousKeyNodeService();\r
- }\r
- \r
- public final IService<CdmBase> getMainService(){\r
- return configuration.getMainService();\r
- }\r
- \r
- public final IWorkingSetService getWorkingSetService(){\r
- return configuration.getWorkingSetService();\r
- }\r
-\r
-\r
- @Override\r
- public ProviderManager getAuthenticationManager() {\r
- return configuration.getAuthenticationManager();\r
- }\r
-\r
-\r
-\r
- @Override\r
- public ConversationHolder NewConversation() {\r
- return configuration.NewConversation();\r
- }\r
-\r
- @Override\r
- public Object getBean(String name) {\r
- return configuration.getBean(name);\r
- }\r
-\r
- @Override\r
- public IGrantedAuthorityService getGrantedAuthorityService() {\r
- return configuration.getGrantedAuthorityService();\r
- }\r
-\r
- @Override\r
- public ICdmPermissionEvaluator getPermissionEvaluator() {\r
- return configuration.getPermissionEvaluator();\r
- }\r
-\r
- @Override\r
- public void authenticate(String username, String password) {\r
- configuration.authenticate(username, password);\r
- \r
- }\r
-\r
-\r
-}\r