3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.cdm
.api
.application
;
13 import javax
.sql
.DataSource
;
15 import org
.apache
.log4j
.Logger
;
16 import org
.hibernate
.SessionFactory
;
17 import org
.springframework
.beans
.BeansException
;
18 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
19 import org
.springframework
.context
.ApplicationContext
;
20 import org
.springframework
.context
.ApplicationContextAware
;
21 import org
.springframework
.orm
.hibernate4
.HibernateTransactionManager
;
22 import org
.springframework
.security
.authentication
.ProviderManager
;
23 import org
.springframework
.security
.authentication
.UsernamePasswordAuthenticationToken
;
24 import org
.springframework
.security
.core
.Authentication
;
25 import org
.springframework
.security
.core
.context
.SecurityContext
;
26 import org
.springframework
.security
.core
.context
.SecurityContextHolder
;
27 import org
.springframework
.stereotype
.Component
;
28 import org
.springframework
.transaction
.PlatformTransactionManager
;
29 import org
.springframework
.transaction
.TransactionDefinition
;
30 import org
.springframework
.transaction
.TransactionStatus
;
31 import org
.springframework
.transaction
.support
.DefaultTransactionDefinition
;
33 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
34 import eu
.etaxonomy
.cdm
.api
.service
.IAgentService
;
35 import eu
.etaxonomy
.cdm
.api
.service
.IClassificationService
;
36 import eu
.etaxonomy
.cdm
.api
.service
.ICollectionService
;
37 import eu
.etaxonomy
.cdm
.api
.service
.ICommonService
;
38 import eu
.etaxonomy
.cdm
.api
.service
.IDatabaseService
;
39 import eu
.etaxonomy
.cdm
.api
.service
.IDescriptionService
;
40 import eu
.etaxonomy
.cdm
.api
.service
.IFeatureNodeService
;
41 import eu
.etaxonomy
.cdm
.api
.service
.IFeatureTreeService
;
42 import eu
.etaxonomy
.cdm
.api
.service
.IGrantedAuthorityService
;
43 import eu
.etaxonomy
.cdm
.api
.service
.IGroupService
;
44 import eu
.etaxonomy
.cdm
.api
.service
.IIdentificationKeyService
;
45 import eu
.etaxonomy
.cdm
.api
.service
.ILocationService
;
46 import eu
.etaxonomy
.cdm
.api
.service
.IMediaService
;
47 import eu
.etaxonomy
.cdm
.api
.service
.INameService
;
48 import eu
.etaxonomy
.cdm
.api
.service
.IOccurrenceService
;
49 import eu
.etaxonomy
.cdm
.api
.service
.IPolytomousKeyNodeService
;
50 import eu
.etaxonomy
.cdm
.api
.service
.IPolytomousKeyService
;
51 import eu
.etaxonomy
.cdm
.api
.service
.IPrimerService
;
52 import eu
.etaxonomy
.cdm
.api
.service
.IReferenceService
;
53 import eu
.etaxonomy
.cdm
.api
.service
.IService
;
54 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
55 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonService
;
56 import eu
.etaxonomy
.cdm
.api
.service
.ITermService
;
57 import eu
.etaxonomy
.cdm
.api
.service
.IUserService
;
58 import eu
.etaxonomy
.cdm
.api
.service
.IVocabularyService
;
59 import eu
.etaxonomy
.cdm
.api
.service
.IWorkingSetService
;
60 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
61 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.permission
.ICdmPermissionEvaluator
;
69 public class CdmApplicationDefaultConfiguration
implements ICdmApplicationConfiguration
, ApplicationContextAware
{
70 private static final Logger logger
= Logger
.getLogger(CdmApplicationDefaultConfiguration
.class);
72 protected ApplicationContext applicationContext
;
76 //@Qualifier("nameService")
77 private INameService nameService
;
79 //@Qualifier("taxonService")
80 private ITaxonService taxonService
;
82 //@Qualifier("classificationService")
83 private IClassificationService classificationService
;
85 //@Qualifier("referenceService")
86 private IReferenceService referenceService
;
88 //@Qualifier("agentService")
89 private IAgentService agentService
;
91 //@Qualifier("databaseService")
92 private IDatabaseService databaseService
;
94 //@Qualifier("termService")
95 private ITermService termService
;
97 private HibernateTransactionManager transactionManager
;
99 //@Qualifier("descriptionService")
100 private IDescriptionService descriptionService
;
102 //@Qualifier("occurrenceService")
103 private IOccurrenceService occurrenceService
;
105 //@Qualifier("primerService")
106 private IPrimerService primerService
;
108 //@Qualifier("mediaService")
109 private IMediaService mediaService
;
111 //@Qualifier("commonService")
112 private ICommonService commonService
;
114 private ILocationService locationService
;
116 private SessionFactory sessionFactory
;
118 private DataSource dataSource
;
120 private ProviderManager authenticationManager
;
122 private IUserService userService
;
124 private IGrantedAuthorityService grantedAuthorityService
;
126 private IGroupService groupService
;
128 private ICollectionService collectionService
;
130 private IFeatureTreeService featureTreeService
;
132 private IFeatureNodeService featureNodeService
;
134 private IVocabularyService vocabularyService
;
136 private ITaxonNodeService taxonNodeService
;
138 private IIdentificationKeyService identificationKeyService
;
140 private IPolytomousKeyService polytomousKeyService
;
142 private IPolytomousKeyNodeService polytomousKeyNodeService
;
144 private ICdmPermissionEvaluator permissionEvaluator
;
148 //@Qualifier("mainService")
149 private IService
<CdmBase
> mainService
;
152 private IWorkingSetService workingSetService
;
154 //********************** CONSTRUCTOR *********************************************************/
159 protected CdmApplicationDefaultConfiguration() {
162 // ****************************** APPLICATION CONTEXT *************************************************/
166 * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
169 public void setApplicationContext(ApplicationContext applicationContext
)
170 throws BeansException
{
171 this.applicationContext
= applicationContext
;
174 // ****************************** GETTER *************************************************/
178 public final Object
getBean(String name
){
179 return this.applicationContext
.getBean(name
);
183 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAgentService()
186 public IAgentService
getAgentService() {
187 return this.agentService
;
191 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDatabaseService()
194 public IDatabaseService
getDatabaseService() {
195 return this.databaseService
;
199 public void setDataSource(DataSource dataSource
) {
200 this.dataSource
= dataSource
;
204 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getNameService()
207 public INameService
getNameService() {
208 return this.nameService
;
212 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getReferenceService()
215 public IReferenceService
getReferenceService() {
216 return this.referenceService
;
220 public void setSessionFactory(SessionFactory sessionFactory
) {
221 this.sessionFactory
= sessionFactory
;
225 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTaxonService()
228 public ITaxonService
getTaxonService() {
229 return this.taxonService
;
234 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getClassificationService()
237 public IClassificationService
getClassificationService() {
238 return this.classificationService
;
242 public ITaxonNodeService
getTaxonNodeService(){
243 return this.taxonNodeService
;
247 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDescriptionService()
250 public IDescriptionService
getDescriptionService(){
251 return this.descriptionService
;
256 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getOccurrenceService()
259 public IOccurrenceService
getOccurrenceService(){
260 return this.occurrenceService
;
265 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getOccurrenceService()
268 public IPrimerService
getPrimerService(){
269 return this.primerService
;
274 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getMediaService()
277 public IMediaService
getMediaService(){
278 return this.mediaService
;
282 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTermService()
285 public ITermService
getTermService() {
286 return this.termService
;
290 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCommonService()
293 public ICommonService
getCommonService(){
294 return this.commonService
;
298 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getLocationService()
301 public ILocationService
getLocationService() {
302 return this.locationService
;
306 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getUserService()
309 public IUserService
getUserService() {
310 return this.userService
;
314 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getUserService()
317 public IGrantedAuthorityService
getGrantedAuthorityService() {
318 return this.grantedAuthorityService
;
322 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCommonService()
325 public IService
<CdmBase
> getMainService(){
326 return this.mainService
;
330 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTransactionManager()
333 public PlatformTransactionManager
getTransactionManager() {
334 return this.transactionManager
;
338 public void setTransactionManager(PlatformTransactionManager transactionManager
) {
339 this.transactionManager
= (HibernateTransactionManager
) transactionManager
;
344 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAuthenticationManager()
347 public ProviderManager
getAuthenticationManager() {
348 return this.authenticationManager
;
353 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#NewConversation()
356 public ConversationHolder
NewConversation() {
357 // TODO make this a prototype
358 return new ConversationHolder(dataSource
, sessionFactory
, transactionManager
);
363 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCollectionService()
366 public ICollectionService
getCollectionService() {
367 return collectionService
;
372 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getFeatureTreeService()
375 public IFeatureTreeService
getFeatureTreeService() {
376 return featureTreeService
;
381 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getFeatureNodeService()
384 public IFeatureNodeService
getFeatureNodeService(){
385 return featureNodeService
;
390 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getVocabularyService()
393 public IVocabularyService
getVocabularyService() {
394 return vocabularyService
;
398 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getIdentificationKeyService()
401 public IIdentificationKeyService
getIdentificationKeyService(){
402 return identificationKeyService
;
406 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPolytomousKeyService()
409 public IPolytomousKeyService
getPolytomousKeyService(){
410 return polytomousKeyService
;
414 public IPolytomousKeyNodeService
getPolytomousKeyNodeService(){
415 return polytomousKeyNodeService
;
419 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getWorkingSetService()
422 public IWorkingSetService
getWorkingSetService() {
423 return workingSetService
;
427 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getGroupService()
430 public IGroupService
getGroupService() {
436 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPermissionEvaluator()
439 public ICdmPermissionEvaluator
getPermissionEvaluator() {
440 return permissionEvaluator
;
444 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()
447 public TransactionStatus
startTransaction() {
448 return startTransaction(false);
453 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()
456 public TransactionStatus
startTransaction(Boolean readOnly
) {
458 PlatformTransactionManager txManager
= getTransactionManager();
460 DefaultTransactionDefinition defaultTxDef
= new DefaultTransactionDefinition();
461 defaultTxDef
.setReadOnly(readOnly
);
462 TransactionDefinition txDef
= defaultTxDef
;
464 // Log some transaction-related debug information.
465 if (logger
.isDebugEnabled()) {
466 logger
.debug("Transaction name = " + txDef
.getName());
467 logger
.debug("Transaction facets:");
468 logger
.debug("Propagation behavior = " + txDef
.getPropagationBehavior());
469 logger
.debug("Isolation level = " + txDef
.getIsolationLevel());
470 logger
.debug("Timeout = " + txDef
.getTimeout());
471 logger
.debug("Read Only = " + txDef
.isReadOnly());
472 // org.springframework.orm.hibernate4.HibernateTransactionManager
473 // provides more transaction/session-related debug information.
476 TransactionStatus txStatus
= txManager
.getTransaction(txDef
);
482 public void commitTransaction(TransactionStatus txStatus
){
483 PlatformTransactionManager txManager
= getTransactionManager();
484 txManager
.commit(txStatus
);
490 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#authenticate(java.lang.String, java.lang.String)
493 public void authenticate(String username
, String password
){
494 UsernamePasswordAuthenticationToken tokenForUser
= new UsernamePasswordAuthenticationToken(username
, password
);
495 Authentication authentication
= this.getAuthenticationManager().authenticate(tokenForUser
);
496 SecurityContext context
= SecurityContextHolder
.getContext();
497 context
.setAuthentication(authentication
);