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
.IReferenceService
;
52 import eu
.etaxonomy
.cdm
.api
.service
.IService
;
53 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
54 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonService
;
55 import eu
.etaxonomy
.cdm
.api
.service
.ITermService
;
56 import eu
.etaxonomy
.cdm
.api
.service
.IUserService
;
57 import eu
.etaxonomy
.cdm
.api
.service
.IVocabularyService
;
58 import eu
.etaxonomy
.cdm
.api
.service
.IWorkingSetService
;
59 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
60 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.permission
.ICdmPermissionEvaluator
;
68 public class CdmApplicationDefaultConfiguration
implements ICdmApplicationConfiguration
, ApplicationContextAware
{
69 private static final Logger logger
= Logger
.getLogger(CdmApplicationDefaultConfiguration
.class);
71 protected ApplicationContext applicationContext
;
75 //@Qualifier("nameService")
76 private INameService nameService
;
78 //@Qualifier("taxonService")
79 private ITaxonService taxonService
;
81 //@Qualifier("classificationService")
82 private IClassificationService classificationService
;
84 //@Qualifier("referenceService")
85 private IReferenceService referenceService
;
87 //@Qualifier("agentService")
88 private IAgentService agentService
;
90 //@Qualifier("databaseService")
91 private IDatabaseService databaseService
;
93 //@Qualifier("termService")
94 private ITermService termService
;
96 private HibernateTransactionManager transactionManager
;
98 //@Qualifier("descriptionService")
99 private IDescriptionService descriptionService
;
101 //@Qualifier("occurrenceService")
102 private IOccurrenceService occurrenceService
;
104 //@Qualifier("mediaService")
105 private IMediaService mediaService
;
107 //@Qualifier("commonService")
108 private ICommonService commonService
;
110 private ILocationService locationService
;
112 private SessionFactory sessionFactory
;
114 private DataSource dataSource
;
116 private ProviderManager authenticationManager
;
118 private IUserService userService
;
120 private IGrantedAuthorityService grantedAuthorityService
;
122 private IGroupService groupService
;
124 private ICollectionService collectionService
;
126 private IFeatureTreeService featureTreeService
;
128 private IFeatureNodeService featureNodeService
;
130 private IVocabularyService vocabularyService
;
132 private ITaxonNodeService taxonNodeService
;
134 private IIdentificationKeyService identificationKeyService
;
136 private IPolytomousKeyService polytomousKeyService
;
138 private IPolytomousKeyNodeService polytomousKeyNodeService
;
140 private ICdmPermissionEvaluator permissionEvaluator
;
144 //@Qualifier("mainService")
145 private IService
<CdmBase
> mainService
;
148 private IWorkingSetService workingSetService
;
150 //********************** CONSTRUCTOR *********************************************************/
155 protected CdmApplicationDefaultConfiguration() {
158 // ****************************** APPLICATION CONTEXT *************************************************/
162 * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
165 public void setApplicationContext(ApplicationContext applicationContext
)
166 throws BeansException
{
167 this.applicationContext
= applicationContext
;
170 // ****************************** GETTER *************************************************/
174 public final Object
getBean(String name
){
175 return this.applicationContext
.getBean(name
);
179 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAgentService()
182 public IAgentService
getAgentService() {
183 return this.agentService
;
187 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDatabaseService()
190 public IDatabaseService
getDatabaseService() {
191 return this.databaseService
;
195 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getNameService()
198 public INameService
getNameService() {
199 return this.nameService
;
203 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getReferenceService()
206 public IReferenceService
getReferenceService() {
207 return this.referenceService
;
211 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTaxonService()
214 public ITaxonService
getTaxonService() {
215 return this.taxonService
;
220 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getClassificationService()
223 public IClassificationService
getClassificationService() {
224 return this.classificationService
;
228 public ITaxonNodeService
getTaxonNodeService(){
229 return this.taxonNodeService
;
233 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDescriptionService()
236 public IDescriptionService
getDescriptionService(){
237 return this.descriptionService
;
242 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getOccurrenceService()
245 public IOccurrenceService
getOccurrenceService(){
246 return this.occurrenceService
;
251 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getMediaService()
254 public IMediaService
getMediaService(){
255 return this.mediaService
;
259 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTermService()
262 public ITermService
getTermService() {
263 return this.termService
;
267 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCommonService()
270 public ICommonService
getCommonService(){
271 return this.commonService
;
275 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getLocationService()
278 public ILocationService
getLocationService() {
279 return this.locationService
;
283 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getUserService()
286 public IUserService
getUserService() {
287 return this.userService
;
291 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getUserService()
294 public IGrantedAuthorityService
getGrantedAuthorityService() {
295 return this.grantedAuthorityService
;
299 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCommonService()
302 public IService
<CdmBase
> getMainService(){
303 return this.mainService
;
307 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTransactionManager()
310 public PlatformTransactionManager
getTransactionManager() {
311 return this.transactionManager
;
316 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAuthenticationManager()
319 public ProviderManager
getAuthenticationManager() {
320 return this.authenticationManager
;
325 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#NewConversation()
328 public ConversationHolder
NewConversation() {
329 // TODO make this a prototype
330 return new ConversationHolder(dataSource
, sessionFactory
, transactionManager
);
335 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCollectionService()
338 public ICollectionService
getCollectionService() {
339 return collectionService
;
344 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getFeatureTreeService()
347 public IFeatureTreeService
getFeatureTreeService() {
348 return featureTreeService
;
353 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getFeatureNodeService()
356 public IFeatureNodeService
getFeatureNodeService(){
357 return featureNodeService
;
362 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getVocabularyService()
365 public IVocabularyService
getVocabularyService() {
366 return vocabularyService
;
370 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getIdentificationKeyService()
373 public IIdentificationKeyService
getIdentificationKeyService(){
374 return identificationKeyService
;
378 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPolytomousKeyService()
381 public IPolytomousKeyService
getPolytomousKeyService(){
382 return polytomousKeyService
;
386 public IPolytomousKeyNodeService
getPolytomousKeyNodeService(){
387 return polytomousKeyNodeService
;
391 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getWorkingSetService()
394 public IWorkingSetService
getWorkingSetService() {
395 return workingSetService
;
399 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getGroupService()
402 public IGroupService
getGroupService() {
408 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPermissionEvaluator()
411 public ICdmPermissionEvaluator
getPermissionEvaluator() {
412 return permissionEvaluator
;
416 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()
419 public TransactionStatus
startTransaction() {
420 return startTransaction(false);
425 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()
428 public TransactionStatus
startTransaction(Boolean readOnly
) {
430 PlatformTransactionManager txManager
= getTransactionManager();
432 DefaultTransactionDefinition defaultTxDef
= new DefaultTransactionDefinition();
433 defaultTxDef
.setReadOnly(readOnly
);
434 TransactionDefinition txDef
= defaultTxDef
;
436 // Log some transaction-related debug information.
437 if (logger
.isDebugEnabled()) {
438 logger
.debug("Transaction name = " + txDef
.getName());
439 logger
.debug("Transaction facets:");
440 logger
.debug("Propagation behavior = " + txDef
.getPropagationBehavior());
441 logger
.debug("Isolation level = " + txDef
.getIsolationLevel());
442 logger
.debug("Timeout = " + txDef
.getTimeout());
443 logger
.debug("Read Only = " + txDef
.isReadOnly());
444 // org.springframework.orm.hibernate4.HibernateTransactionManager
445 // provides more transaction/session-related debug information.
448 TransactionStatus txStatus
= txManager
.getTransaction(txDef
);
454 public void commitTransaction(TransactionStatus txStatus
){
455 PlatformTransactionManager txManager
= getTransactionManager();
456 txManager
.commit(txStatus
);
462 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#authenticate(java.lang.String, java.lang.String)
465 public void authenticate(String username
, String password
){
466 UsernamePasswordAuthenticationToken tokenForUser
= new UsernamePasswordAuthenticationToken(username
, password
);
467 Authentication authentication
= this.getAuthenticationManager().authenticate(tokenForUser
);
468 SecurityContext context
= SecurityContextHolder
.getContext();
469 context
.setAuthentication(authentication
);