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
.hibernate3
.HibernateTransactionManager
;
22 import org
.springframework
.security
.access
.PermissionEvaluator
;
23 import org
.springframework
.security
.authentication
.ProviderManager
;
24 import org
.springframework
.stereotype
.Component
;
25 import org
.springframework
.transaction
.PlatformTransactionManager
;
26 import org
.springframework
.transaction
.TransactionDefinition
;
27 import org
.springframework
.transaction
.TransactionStatus
;
28 import org
.springframework
.transaction
.support
.DefaultTransactionDefinition
;
30 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
31 import eu
.etaxonomy
.cdm
.api
.service
.IAgentService
;
32 import eu
.etaxonomy
.cdm
.api
.service
.IClassificationService
;
33 import eu
.etaxonomy
.cdm
.api
.service
.ICollectionService
;
34 import eu
.etaxonomy
.cdm
.api
.service
.ICommonService
;
35 import eu
.etaxonomy
.cdm
.api
.service
.IDatabaseService
;
36 import eu
.etaxonomy
.cdm
.api
.service
.IDescriptionService
;
37 import eu
.etaxonomy
.cdm
.api
.service
.IFeatureNodeService
;
38 import eu
.etaxonomy
.cdm
.api
.service
.IFeatureTreeService
;
39 import eu
.etaxonomy
.cdm
.api
.service
.IGrantedAuthorityService
;
40 import eu
.etaxonomy
.cdm
.api
.service
.IGroupService
;
41 import eu
.etaxonomy
.cdm
.api
.service
.IIdentificationKeyService
;
42 import eu
.etaxonomy
.cdm
.api
.service
.ILocationService
;
43 import eu
.etaxonomy
.cdm
.api
.service
.IMediaService
;
44 import eu
.etaxonomy
.cdm
.api
.service
.INameService
;
45 import eu
.etaxonomy
.cdm
.api
.service
.IOccurrenceService
;
46 import eu
.etaxonomy
.cdm
.api
.service
.IPolytomousKeyNodeService
;
47 import eu
.etaxonomy
.cdm
.api
.service
.IPolytomousKeyService
;
48 import eu
.etaxonomy
.cdm
.api
.service
.IReferenceService
;
49 import eu
.etaxonomy
.cdm
.api
.service
.IService
;
50 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
51 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonService
;
52 import eu
.etaxonomy
.cdm
.api
.service
.ITermService
;
53 import eu
.etaxonomy
.cdm
.api
.service
.IUserService
;
54 import eu
.etaxonomy
.cdm
.api
.service
.IVocabularyService
;
55 import eu
.etaxonomy
.cdm
.api
.service
.IWorkingSetService
;
56 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
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 PermissionEvaluator 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)
164 public void setApplicationContext(ApplicationContext applicationContext
)
165 throws BeansException
{
166 this.applicationContext
= applicationContext
;
169 // ****************************** GETTER *************************************************/
172 public final Object
getBean(String name
){
173 return this.applicationContext
.getBean(name
);
177 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAgentService()
179 public IAgentService
getAgentService() {
180 return this.agentService
;
184 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDatabaseService()
186 public IDatabaseService
getDatabaseService() {
187 return this.databaseService
;
191 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getNameService()
193 public INameService
getNameService() {
194 return this.nameService
;
198 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getReferenceService()
200 public IReferenceService
getReferenceService() {
201 return this.referenceService
;
205 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTaxonService()
207 public ITaxonService
getTaxonService() {
208 return this.taxonService
;
213 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getClassificationService()
215 public IClassificationService
getClassificationService() {
216 return this.classificationService
;
219 public ITaxonNodeService
getTaxonNodeService(){
220 return this.taxonNodeService
;
224 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDescriptionService()
226 public IDescriptionService
getDescriptionService(){
227 return this.descriptionService
;
232 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getOccurrenceService()
234 public IOccurrenceService
getOccurrenceService(){
235 return this.occurrenceService
;
240 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getMediaService()
242 public IMediaService
getMediaService(){
243 return this.mediaService
;
247 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTermService()
249 public ITermService
getTermService() {
250 return this.termService
;
254 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCommonService()
256 public ICommonService
getCommonService(){
257 return this.commonService
;
261 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getLocationService()
263 public ILocationService
getLocationService() {
264 return this.locationService
;
268 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getUserService()
270 public IUserService
getUserService() {
271 return this.userService
;
275 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getUserService()
277 public IGrantedAuthorityService
getGrantedAuthorityService() {
278 return this.grantedAuthorityService
;
282 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCommonService()
284 public IService
<CdmBase
> getMainService(){
285 return this.mainService
;
289 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTransactionManager()
291 public PlatformTransactionManager
getTransactionManager() {
292 return this.transactionManager
;
297 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAuthenticationManager()
299 public ProviderManager
getAuthenticationManager() {
300 return this.authenticationManager
;
305 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#NewConversation()
307 public ConversationHolder
NewConversation() {
308 // TODO make this a prototype
309 return new ConversationHolder(dataSource
, sessionFactory
, transactionManager
);
314 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCollectionService()
316 public ICollectionService
getCollectionService() {
317 return collectionService
;
322 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getFeatureTreeService()
324 public IFeatureTreeService
getFeatureTreeService() {
325 return featureTreeService
;
330 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getFeatureNodeService()
332 public IFeatureNodeService
getFeatureNodeService(){
333 return featureNodeService
;
338 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getVocabularyService()
340 public IVocabularyService
getVocabularyService() {
341 return vocabularyService
;
345 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getIdentificationKeyService()
347 public IIdentificationKeyService
getIdentificationKeyService(){
348 return identificationKeyService
;
352 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPolytomousKeyService()
354 public IPolytomousKeyService
getPolytomousKeyService(){
355 return polytomousKeyService
;
358 public IPolytomousKeyNodeService
getPolytomousKeyNodeService(){
359 return polytomousKeyNodeService
;
363 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getWorkingSetService()
366 public IWorkingSetService
getWorkingSetService() {
367 return workingSetService
;
371 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getGroupService()
374 public IGroupService
getGroupService() {
380 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPermissionEvaluator()
382 public PermissionEvaluator
getPermissionEvaluator() {
383 return permissionEvaluator
;
387 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()
390 public TransactionStatus
startTransaction() {
391 return startTransaction(false);
396 * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()
399 public TransactionStatus
startTransaction(Boolean readOnly
) {
401 PlatformTransactionManager txManager
= getTransactionManager();
403 DefaultTransactionDefinition defaultTxDef
= new DefaultTransactionDefinition();
404 defaultTxDef
.setReadOnly(readOnly
);
405 TransactionDefinition txDef
= defaultTxDef
;
407 // Log some transaction-related debug information.
408 if (logger
.isDebugEnabled()) {
409 logger
.debug("Transaction name = " + txDef
.getName());
410 logger
.debug("Transaction facets:");
411 logger
.debug("Propagation behavior = " + txDef
.getPropagationBehavior());
412 logger
.debug("Isolation level = " + txDef
.getIsolationLevel());
413 logger
.debug("Timeout = " + txDef
.getTimeout());
414 logger
.debug("Read Only = " + txDef
.isReadOnly());
415 // org.springframework.orm.hibernate3.HibernateTransactionManager
416 // provides more transaction/session-related debug information.
419 TransactionStatus txStatus
= txManager
.getTransaction(txDef
);
424 public void commitTransaction(TransactionStatus txStatus
){
425 PlatformTransactionManager txManager
= getTransactionManager();
426 txManager
.commit(txStatus
);