2 * Copyright (C) 2014 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.api
.application
;
12 import javax
.sql
.DataSource
;
14 import org
.apache
.log4j
.Logger
;
15 import org
.hibernate
.SessionFactory
;
16 import org
.springframework
.beans
.BeansException
;
17 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
18 import org
.springframework
.context
.ApplicationContext
;
19 import org
.springframework
.context
.ApplicationContextAware
;
20 import org
.springframework
.orm
.hibernate4
.HibernateTransactionManager
;
21 import org
.springframework
.security
.authentication
.ProviderManager
;
22 import org
.springframework
.security
.authentication
.UsernamePasswordAuthenticationToken
;
23 import org
.springframework
.security
.core
.Authentication
;
24 import org
.springframework
.security
.core
.context
.SecurityContext
;
25 import org
.springframework
.security
.core
.context
.SecurityContextHolder
;
26 import org
.springframework
.stereotype
.Component
;
27 import org
.springframework
.transaction
.PlatformTransactionManager
;
28 import org
.springframework
.transaction
.TransactionStatus
;
30 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
31 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolderMock
;
32 import eu
.etaxonomy
.cdm
.api
.service
.IAgentService
;
33 import eu
.etaxonomy
.cdm
.api
.service
.IClassificationService
;
34 import eu
.etaxonomy
.cdm
.api
.service
.ICollectionService
;
35 import eu
.etaxonomy
.cdm
.api
.service
.ICommonService
;
36 import eu
.etaxonomy
.cdm
.api
.service
.IDatabaseService
;
37 import eu
.etaxonomy
.cdm
.api
.service
.IDescriptionService
;
38 import eu
.etaxonomy
.cdm
.api
.service
.IEntityConstraintViolationService
;
39 import eu
.etaxonomy
.cdm
.api
.service
.IEntityValidationService
;
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
.api
.service
.molecular
.IAmplificationService
;
60 import eu
.etaxonomy
.cdm
.api
.service
.molecular
.IPrimerService
;
61 import eu
.etaxonomy
.cdm
.api
.service
.molecular
.ISequenceService
;
62 import eu
.etaxonomy
.cdm
.ext
.geo
.IEditGeoService
;
63 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
64 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.permission
.ICdmPermissionEvaluator
;
65 import eu
.etaxonomy
.taxeditor
.service
.ICachedCommonService
;
66 import eu
.etaxonomy
.taxeditor
.session
.ICdmEntitySessionManager
;
70 * CDM Application Configuration class which manages the configuration for remoting
75 public class CdmApplicationRemoteConfiguration
implements ICdmApplicationConfiguration
, ApplicationContextAware
{
77 @SuppressWarnings("unused")
78 private static final Logger logger
= Logger
.getLogger(CdmApplicationRemoteConfiguration
.class);
80 protected ApplicationContext applicationContext
;
83 //@Qualifier("nameService")
84 private INameService nameService
;
86 //@Qualifier("taxonService")
87 private ITaxonService taxonService
;
89 //@Qualifier("classificationService")
90 private IClassificationService classificationService
;
92 //@Qualifier("referenceService")
93 private IReferenceService referenceService
;
95 //@Qualifier("agentService")
96 private IAgentService agentService
;
98 //@Qualifier("databaseService")
99 private IDatabaseService databaseService
;
101 //@Qualifier("termService")
102 private ITermService termService
;
104 private HibernateTransactionManager transactionManager
;
106 //@Qualifier("descriptionService")
107 private IDescriptionService descriptionService
;
109 //@Qualifier("occurrenceService")
110 private IOccurrenceService occurrenceService
;
112 //@Qualifier("primerService")
113 private IPrimerService primerService
;
115 //@Qualifier("amplificationService")
116 private IAmplificationService amplificationService
;
118 //@Qualifier("sequenceService")
119 private ISequenceService sequenceService
;
121 //@Qualifier("mediaService")
122 private IMediaService mediaService
;
124 //@Qualifier("commonService")
125 private ICommonService commonService
;
127 private ILocationService locationService
;
129 private SessionFactory sessionFactory
;
131 private DataSource dataSource
;
133 private ProviderManager authenticationManager
;
135 private IUserService userService
;
137 private IGrantedAuthorityService grantedAuthorityService
;
139 private IGroupService groupService
;
141 private ICollectionService collectionService
;
143 private IFeatureTreeService featureTreeService
;
145 private IFeatureNodeService featureNodeService
;
147 private IVocabularyService vocabularyService
;
149 private ITaxonNodeService taxonNodeService
;
151 private IIdentificationKeyService identificationKeyService
;
153 private IPolytomousKeyService polytomousKeyService
;
155 private IPolytomousKeyNodeService polytomousKeyNodeService
;
157 private IEntityValidationService entityValidationService
;
159 private IEntityConstraintViolationService entityConstraintViolationService
;
161 private ICdmPermissionEvaluator permissionEvaluator
;
166 private IEditGeoService editGeoService
;
168 private ICachedCommonService cachedCommonService
;
171 private IWorkingSetService workingSetService
;
174 protected ICdmEntitySessionManager cdmEntitySessionManager
;
176 private IService
<CdmBase
> mainService
;
178 public CdmApplicationRemoteConfiguration() {}
180 // ****************************** APPLICATION CONTEXT *************************************************/
183 public void setApplicationContext(ApplicationContext applicationContext
) throws BeansException
{
184 this.applicationContext
= applicationContext
;
188 * @see eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration#getTransactionManager()
191 public PlatformTransactionManager
getTransactionManager() throws UnsupportedOperationException
{
192 throw new UnsupportedOperationException("getTransactionManager is not implemented for CdmApplicationRemoteConfiguration");
200 public IEditGeoService
getEditGeoService() {
201 return this.editGeoService
;
207 public ICachedCommonService
getCachedCommonService(){
208 return this.cachedCommonService
;
212 public ICdmEntitySessionManager
getCdmEntitySessionManager() {
213 return this.cdmEntitySessionManager
;
221 // ****************************** GETTER *************************************************/
224 public final Object
getBean(String name
){
225 return this.applicationContext
.getBean(name
);
229 public IAgentService
getAgentService(){
230 return this.agentService
;
234 public IDatabaseService
getDatabaseService(){
235 return this.databaseService
;
239 public INameService
getNameService(){
240 return this.nameService
;
244 public IReferenceService
getReferenceService(){
245 return this.referenceService
;
249 public ITaxonService
getTaxonService(){
250 return this.taxonService
;
254 public IClassificationService
getClassificationService(){
255 return this.classificationService
;
259 public ITaxonNodeService
getTaxonNodeService(){
260 return this.taxonNodeService
;
264 public IDescriptionService
getDescriptionService(){
265 return this.descriptionService
;
269 public IOccurrenceService
getOccurrenceService(){
270 return this.occurrenceService
;
274 public IPrimerService
getPrimerService(){
275 return this.primerService
;
279 public IAmplificationService
getAmplificationService(){
280 return this.amplificationService
;
284 public ISequenceService
getSequenceService(){
285 return this.sequenceService
;
289 public IMediaService
getMediaService(){
290 return this.mediaService
;
294 public ITermService
getTermService(){
295 return this.termService
;
299 public ICommonService
getCommonService(){
300 return this.commonService
;
304 public ILocationService
getLocationService(){
305 return this.locationService
;
309 public IUserService
getUserService(){
310 return this.userService
;
314 public IGrantedAuthorityService
getGrantedAuthorityService(){
315 return this.grantedAuthorityService
;
319 public IService
<CdmBase
> getMainService(){
320 return this.mainService
;
325 public ProviderManager
getAuthenticationManager(){
326 return this.authenticationManager
;
331 public ConversationHolder
NewConversation() {
332 return new ConversationHolderMock();
336 public ICollectionService
getCollectionService(){
337 return collectionService
;
341 public IFeatureTreeService
getFeatureTreeService(){
342 return featureTreeService
;
346 public IFeatureNodeService
getFeatureNodeService(){
347 return featureNodeService
;
351 public IVocabularyService
getVocabularyService(){
352 return vocabularyService
;
356 public IIdentificationKeyService
getIdentificationKeyService(){
357 return identificationKeyService
;
361 public IPolytomousKeyService
getPolytomousKeyService(){
362 return polytomousKeyService
;
367 public IPolytomousKeyNodeService
getPolytomousKeyNodeService(){
368 return polytomousKeyNodeService
;
372 public IWorkingSetService
getWorkingSetService(){
373 return workingSetService
;
377 public IGroupService
getGroupService(){
383 public IEntityValidationService
getEntityValidationService(){
384 return entityValidationService
;
389 public IEntityConstraintViolationService
getEntityConstraintViolationService(){
390 return entityConstraintViolationService
;
394 public ICdmPermissionEvaluator
getPermissionEvaluator(){
395 return permissionEvaluator
;
400 public TransactionStatus
startTransaction() throws UnsupportedOperationException
{
401 throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");
405 public TransactionStatus
startTransaction(Boolean readOnly
) throws UnsupportedOperationException
{
406 throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");
411 public void commitTransaction(TransactionStatus txStatus
) throws UnsupportedOperationException
{
412 throw new UnsupportedOperationException("commitTransaction is not implemented for CdmApplicationRemoteConfiguration");
416 public void authenticate(String username
, String password
){
417 UsernamePasswordAuthenticationToken tokenForUser
= new UsernamePasswordAuthenticationToken(username
, password
);
418 Authentication authentication
= this.getAuthenticationManager().authenticate(tokenForUser
);
419 SecurityContext context
= SecurityContextHolder
.getContext();
420 context
.setAuthentication(authentication
);