- corrected recursive autowiring
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / cdm / api / application / CdmApplicationRemoteConfiguration.java
1 /**
2 * Copyright (C) 2014 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9
10 package eu.etaxonomy.cdm.api.application;
11
12 import javax.sql.DataSource;
13
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;
29
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;
67
68
69 /**
70 * CDM Application Configuration class which manages the configuration for remoting
71 * clients
72 *
73 */
74 @Component
75 public class CdmApplicationRemoteConfiguration implements ICdmApplicationConfiguration, ApplicationContextAware {
76
77 @SuppressWarnings("unused")
78 private static final Logger logger = Logger.getLogger(CdmApplicationRemoteConfiguration.class);
79
80 protected ApplicationContext applicationContext;
81
82 @Autowired
83 //@Qualifier("nameService")
84 private INameService nameService;
85 @Autowired
86 //@Qualifier("taxonService")
87 private ITaxonService taxonService;
88 @Autowired
89 //@Qualifier("classificationService")
90 private IClassificationService classificationService;
91 @Autowired
92 //@Qualifier("referenceService")
93 private IReferenceService referenceService;
94 @Autowired
95 //@Qualifier("agentService")
96 private IAgentService agentService;
97 @Autowired
98 //@Qualifier("databaseService")
99 private IDatabaseService databaseService;
100 @Autowired
101 //@Qualifier("termService")
102 private ITermService termService;
103 //@Autowired
104 private HibernateTransactionManager transactionManager;
105 @Autowired
106 //@Qualifier("descriptionService")
107 private IDescriptionService descriptionService;
108 @Autowired
109 //@Qualifier("occurrenceService")
110 private IOccurrenceService occurrenceService;
111 @Autowired
112 //@Qualifier("primerService")
113 private IPrimerService primerService;
114 @Autowired
115 //@Qualifier("amplificationService")
116 private IAmplificationService amplificationService;
117 @Autowired
118 //@Qualifier("sequenceService")
119 private ISequenceService sequenceService;
120 @Autowired
121 //@Qualifier("mediaService")
122 private IMediaService mediaService;
123 @Autowired
124 //@Qualifier("commonService")
125 private ICommonService commonService;
126 @Autowired
127 private ILocationService locationService;
128 //@Autowired
129 private SessionFactory sessionFactory;
130 //@Autowired
131 private DataSource dataSource;
132 @Autowired
133 private ProviderManager authenticationManager;
134 @Autowired
135 private IUserService userService;
136 @Autowired
137 private IGrantedAuthorityService grantedAuthorityService;
138 @Autowired
139 private IGroupService groupService;
140 @Autowired
141 private ICollectionService collectionService;
142 @Autowired
143 private IFeatureTreeService featureTreeService;
144 @Autowired
145 private IFeatureNodeService featureNodeService;
146 @Autowired
147 private IVocabularyService vocabularyService;
148 @Autowired
149 private ITaxonNodeService taxonNodeService;
150 @Autowired
151 private IIdentificationKeyService identificationKeyService;
152 @Autowired
153 private IPolytomousKeyService polytomousKeyService;
154 @Autowired
155 private IPolytomousKeyNodeService polytomousKeyNodeService;
156 @Autowired
157 private IEntityValidationService entityValidationService;
158 @Autowired
159 private IEntityConstraintViolationService entityConstraintViolationService;
160 @Autowired
161 private ICdmPermissionEvaluator permissionEvaluator;
162
163
164
165 @Autowired
166 private IEditGeoService editGeoService;
167 @Autowired
168 private ICachedCommonService cachedCommonService;
169
170 @Autowired
171 private IWorkingSetService workingSetService;
172
173 @Autowired
174 protected ICdmEntitySessionManager cdmEntitySessionManager;
175
176 private IService<CdmBase> mainService;
177
178 public CdmApplicationRemoteConfiguration() {}
179
180 // ****************************** APPLICATION CONTEXT *************************************************/
181
182 @Override
183 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{
184 this.applicationContext = applicationContext;
185 }
186
187 /* (non-Javadoc)
188 * @see eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration#getTransactionManager()
189 */
190 @Override
191 public PlatformTransactionManager getTransactionManager() throws UnsupportedOperationException {
192 throw new UnsupportedOperationException("getTransactionManager is not implemented for CdmApplicationRemoteConfiguration");
193 }
194
195
196
197 /**
198 * @return
199 */
200 public IEditGeoService getEditGeoService() {
201 return this.editGeoService;
202 }
203
204 /**
205 * @return
206 */
207 public ICachedCommonService getCachedCommonService(){
208 return this.cachedCommonService;
209 }
210
211
212 public ICdmEntitySessionManager getCdmEntitySessionManager() {
213 return this.cdmEntitySessionManager;
214 }
215
216
217
218
219
220
221 // ****************************** GETTER *************************************************/
222
223 @Override
224 public final Object getBean(String name){
225 return this.applicationContext.getBean(name);
226 }
227
228 @Override
229 public IAgentService getAgentService(){
230 return this.agentService;
231 }
232
233 @Override
234 public IDatabaseService getDatabaseService(){
235 return this.databaseService;
236 }
237
238 @Override
239 public INameService getNameService(){
240 return this.nameService;
241 }
242
243 @Override
244 public IReferenceService getReferenceService(){
245 return this.referenceService;
246 }
247
248 @Override
249 public ITaxonService getTaxonService(){
250 return this.taxonService;
251 }
252
253 @Override
254 public IClassificationService getClassificationService(){
255 return this.classificationService;
256 }
257
258 @Override
259 public ITaxonNodeService getTaxonNodeService(){
260 return this.taxonNodeService;
261 }
262
263 @Override
264 public IDescriptionService getDescriptionService(){
265 return this.descriptionService;
266 }
267
268 @Override
269 public IOccurrenceService getOccurrenceService(){
270 return this.occurrenceService;
271 }
272
273 @Override
274 public IPrimerService getPrimerService(){
275 return this.primerService;
276 }
277
278 @Override
279 public IAmplificationService getAmplificationService(){
280 return this.amplificationService;
281 }
282
283 @Override
284 public ISequenceService getSequenceService(){
285 return this.sequenceService;
286 }
287
288 @Override
289 public IMediaService getMediaService(){
290 return this.mediaService;
291 }
292
293 @Override
294 public ITermService getTermService(){
295 return this.termService;
296 }
297
298 @Override
299 public ICommonService getCommonService(){
300 return this.commonService;
301 }
302
303 @Override
304 public ILocationService getLocationService(){
305 return this.locationService;
306 }
307
308 @Override
309 public IUserService getUserService(){
310 return this.userService;
311 }
312
313 @Override
314 public IGrantedAuthorityService getGrantedAuthorityService(){
315 return this.grantedAuthorityService;
316 }
317
318 @Override
319 public IService<CdmBase> getMainService(){
320 return this.mainService;
321 }
322
323
324 @Override
325 public ProviderManager getAuthenticationManager(){
326 return this.authenticationManager;
327 }
328
329
330 @Override
331 public ConversationHolder NewConversation() {
332 return new ConversationHolderMock();
333 }
334
335 @Override
336 public ICollectionService getCollectionService(){
337 return collectionService;
338 }
339
340 @Override
341 public IFeatureTreeService getFeatureTreeService(){
342 return featureTreeService;
343 }
344
345 @Override
346 public IFeatureNodeService getFeatureNodeService(){
347 return featureNodeService;
348 }
349
350 @Override
351 public IVocabularyService getVocabularyService(){
352 return vocabularyService;
353 }
354
355 @Override
356 public IIdentificationKeyService getIdentificationKeyService(){
357 return identificationKeyService;
358 }
359
360 @Override
361 public IPolytomousKeyService getPolytomousKeyService(){
362 return polytomousKeyService;
363 }
364
365
366 @Override
367 public IPolytomousKeyNodeService getPolytomousKeyNodeService(){
368 return polytomousKeyNodeService;
369 }
370
371 @Override
372 public IWorkingSetService getWorkingSetService(){
373 return workingSetService;
374 }
375
376 @Override
377 public IGroupService getGroupService(){
378 return groupService;
379 }
380
381
382 @Override
383 public IEntityValidationService getEntityValidationService(){
384 return entityValidationService;
385 }
386
387
388 @Override
389 public IEntityConstraintViolationService getEntityConstraintViolationService(){
390 return entityConstraintViolationService;
391 }
392
393 @Override
394 public ICdmPermissionEvaluator getPermissionEvaluator(){
395 return permissionEvaluator;
396 }
397
398
399 @Override
400 public TransactionStatus startTransaction() throws UnsupportedOperationException {
401 throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");
402 }
403
404 @Override
405 public TransactionStatus startTransaction(Boolean readOnly) throws UnsupportedOperationException {
406 throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");
407 }
408
409
410 @Override
411 public void commitTransaction(TransactionStatus txStatus) throws UnsupportedOperationException {
412 throw new UnsupportedOperationException("commitTransaction is not implemented for CdmApplicationRemoteConfiguration");
413 }
414
415 @Override
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);
421 }
422 }