Project

General

Profile

Download (13.2 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
 * Copyright (C) 2007 EDIT
4
 * European Distributed Institute of Taxonomy
5
 * http://www.e-taxonomy.eu
6
 *
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.
9
 */
10

    
11
package eu.etaxonomy.cdm.api.application;
12

    
13
import javax.sql.DataSource;
14

    
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.hibernate5.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;
32

    
33
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
34
import eu.etaxonomy.cdm.api.service.IAgentService;
35
import eu.etaxonomy.cdm.api.service.IAnnotationService;
36
import eu.etaxonomy.cdm.api.service.IClassificationService;
37
import eu.etaxonomy.cdm.api.service.ICollectionService;
38
import eu.etaxonomy.cdm.api.service.ICommonService;
39
import eu.etaxonomy.cdm.api.service.IDatabaseService;
40
import eu.etaxonomy.cdm.api.service.IDescriptionService;
41
import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService;
42
import eu.etaxonomy.cdm.api.service.IEntityValidationService;
43
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
44
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
45
import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;
46
import eu.etaxonomy.cdm.api.service.IGroupService;
47
import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;
48
import eu.etaxonomy.cdm.api.service.ILocationService;
49
import eu.etaxonomy.cdm.api.service.IMediaService;
50
import eu.etaxonomy.cdm.api.service.IMetadataService;
51
import eu.etaxonomy.cdm.api.service.INameService;
52
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
53
import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
54
import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
55
import eu.etaxonomy.cdm.api.service.IProgressMonitorService;
56
import eu.etaxonomy.cdm.api.service.IReferenceService;
57
import eu.etaxonomy.cdm.api.service.IService;
58
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
59
import eu.etaxonomy.cdm.api.service.ITaxonService;
60
import eu.etaxonomy.cdm.api.service.ITermService;
61
import eu.etaxonomy.cdm.api.service.IUserService;
62
import eu.etaxonomy.cdm.api.service.IVocabularyService;
63
import eu.etaxonomy.cdm.api.service.IWorkingSetService;
64
import eu.etaxonomy.cdm.api.service.molecular.IAmplificationService;
65
import eu.etaxonomy.cdm.api.service.molecular.IPrimerService;
66
import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
67
import eu.etaxonomy.cdm.model.common.CdmBase;
68
import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator;
69

    
70
/**
71
 * @author a.mueller
72
 * @created 21.05.2008
73
 * @version 1.0
74
 */
75
@Component
76
public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfiguration, ApplicationContextAware {
77
	private static final Logger logger = Logger.getLogger(CdmApplicationDefaultConfiguration.class);
78

    
79
	protected ApplicationContext applicationContext;
80

    
81
	@Autowired
82
    //@Qualifier("nameService")
83
    private IAnnotationService annotationService;
84

    
85
	@Autowired
86
	//@Qualifier("nameService")
87
	private INameService nameService;
88
	@Autowired
89
	//@Qualifier("taxonService")
90
	private ITaxonService taxonService;
91
	@Autowired
92
	//@Qualifier("classificationService")
93
	private IClassificationService classificationService;
94
	@Autowired
95
	//@Qualifier("referenceService")
96
	private IReferenceService referenceService;
97
	@Autowired
98
	//@Qualifier("agentService")
99
	private IAgentService agentService;
100
	@Autowired
101
	//@Qualifier("databaseService")
102
	private IDatabaseService databaseService;
103
	@Autowired
104
	//@Qualifier("termService")
105
	private ITermService termService;
106
	//@Autowired
107
	private HibernateTransactionManager transactionManager;
108
	@Autowired
109
	//@Qualifier("descriptionService")
110
	private IDescriptionService descriptionService;
111
	@Autowired
112
	//@Qualifier("occurrenceService")
113
	private IOccurrenceService occurrenceService;
114
	@Autowired
115
	//@Qualifier("primerService")
116
	private IPrimerService primerService;
117
	@Autowired
118
	//@Qualifier("amplificationService")
119
	private IAmplificationService amplificationService;
120
	@Autowired
121
	//@Qualifier("sequenceService")
122
	private ISequenceService sequenceService;
123
	@Autowired
124
	//@Qualifier("mediaService")
125
	private IMediaService mediaService;
126
    @Autowired
127
    //@Qualifier("mediaService")
128
    private IMetadataService metadataService;
129
	@Autowired
130
	//@Qualifier("commonService")
131
	private ICommonService commonService;
132
	@Autowired
133
	private ILocationService locationService;
134
	//@Autowired
135
	private SessionFactory sessionFactory;
136
	//@Autowired
137
	private DataSource dataSource;
138
	@Autowired
139
	private ProviderManager authenticationManager;
140
	@Autowired
141
	private IUserService userService;
142
	@Autowired
143
	private IGrantedAuthorityService grantedAuthorityService;
144
	@Autowired
145
	private IGroupService groupService;
146
	@Autowired
147
	private ICollectionService collectionService;
148
	@Autowired
149
	private IFeatureTreeService featureTreeService;
150
	@Autowired
151
	private IFeatureNodeService featureNodeService;
152
	@Autowired
153
	private IVocabularyService vocabularyService;
154
	@Autowired
155
	private ITaxonNodeService taxonNodeService;
156
	@Autowired
157
	private IIdentificationKeyService identificationKeyService;
158
	@Autowired
159
	private IPolytomousKeyService polytomousKeyService;
160
	@Autowired
161
	private IPolytomousKeyNodeService polytomousKeyNodeService;
162
	@Autowired
163
	private IProgressMonitorService progressMonitorService;
164
	@Autowired
165
	private IEntityValidationService entityValidationService;
166
	@Autowired
167
	private IEntityConstraintViolationService entityConstraintViolationService;
168
	@Autowired
169
	private ICdmPermissionEvaluator permissionEvaluator;
170

    
171
	//	@Autowired
172
	//@Qualifier("mainService")
173
	private IService<CdmBase> mainService;
174

    
175
	@Autowired
176
	private IWorkingSetService workingSetService;
177

    
178

    
179
	//********************** CONSTRUCTOR *********************************************************/
180

    
181
	/**
182
	 * Constructor
183
	 */
184
	protected CdmApplicationDefaultConfiguration(){}
185

    
186

    
187
	// ****************************** APPLICATION CONTEXT *************************************************/
188

    
189
	@Override
190
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{
191
		this.applicationContext = applicationContext;
192
	}
193

    
194
	// ****************************** GETTER *************************************************/
195

    
196
	@Override
197
	public final Object getBean(String name){
198
	    return this.applicationContext.getBean(name);
199
	}
200

    
201
	@Override
202
	public IAnnotationService getAnnotationService(){
203
	    return this.annotationService;
204
	}
205

    
206
	@Override
207
	public IAgentService getAgentService(){
208
		return this.agentService;
209
	}
210

    
211
	@Override
212
	public IDatabaseService getDatabaseService(){
213
		return this.databaseService;
214
	}
215

    
216

    
217
	@Autowired
218
	public void setDataSource(DataSource dataSource){
219
		this.dataSource = dataSource;
220
	}
221

    
222
	@Override
223
	public INameService getNameService(){
224
		return this.nameService;
225
	}
226

    
227
	@Override
228
	public IReferenceService getReferenceService(){
229
		return this.referenceService;
230
	}
231

    
232
	@Autowired
233
	public void setSessionFactory(SessionFactory sessionFactory){
234
		this.sessionFactory = sessionFactory;
235
	}
236

    
237
	@Override
238
	public ITaxonService getTaxonService(){
239
		return this.taxonService;
240
	}
241

    
242
	@Override
243
	public IClassificationService getClassificationService(){
244
		return this.classificationService;
245
	}
246

    
247
	@Override
248
	public ITaxonNodeService getTaxonNodeService(){
249
		return this.taxonNodeService;
250
	}
251

    
252
	@Override
253
	public IDescriptionService getDescriptionService(){
254
		return this.descriptionService;
255
	}
256

    
257
	@Override
258
	public IOccurrenceService getOccurrenceService(){
259
		return this.occurrenceService;
260
	}
261

    
262
	@Override
263
	public IPrimerService getPrimerService(){
264
		return this.primerService;
265
	}
266

    
267
	@Override
268
	public IAmplificationService getAmplificationService(){
269
		return this.amplificationService;
270
	}
271

    
272
	@Override
273
	public ISequenceService getSequenceService(){
274
		return this.sequenceService;
275
	}
276

    
277
	@Override
278
	public IMediaService getMediaService(){
279
		return this.mediaService;
280
	}
281

    
282
    /**
283
     * {@inheritDoc}
284
     */
285
    @Override
286
    public IMetadataService getMetadataService() {
287
        return this.metadataService;
288
    }
289

    
290
	@Override
291
	public ITermService getTermService(){
292
		return this.termService;
293
	}
294

    
295
	@Override
296
	public ICommonService getCommonService(){
297
		return this.commonService;
298
	}
299

    
300
	@Override
301
	public ILocationService getLocationService(){
302
		return this.locationService;
303
	}
304

    
305
	@Override
306
	public IUserService getUserService(){
307
		return this.userService;
308
	}
309

    
310
	@Override
311
	public IGrantedAuthorityService getGrantedAuthorityService(){
312
		return this.grantedAuthorityService;
313
	}
314

    
315
	@Override
316
	public IService<CdmBase> getMainService(){
317
		return this.mainService;
318
	}
319

    
320
	@Override
321
	public PlatformTransactionManager getTransactionManager(){
322
		return this.transactionManager;
323
	}
324

    
325

    
326
	@Autowired
327
	public void setTransactionManager(PlatformTransactionManager transactionManager){
328
		this.transactionManager = (HibernateTransactionManager) transactionManager;
329
	}
330

    
331
	@Override
332
	public ProviderManager getAuthenticationManager(){
333
		return this.authenticationManager;
334
	}
335

    
336
	@Override
337
	public ConversationHolder NewConversation(){
338
		// TODO make this a prototype
339
		return new ConversationHolder(dataSource, sessionFactory, transactionManager);
340
	}
341

    
342
	@Override
343
	public ICollectionService getCollectionService(){
344
		return collectionService;
345
	}
346

    
347
	@Override
348
	public IFeatureTreeService getFeatureTreeService(){
349
		return featureTreeService;
350
	}
351

    
352
	@Override
353
	public IFeatureNodeService getFeatureNodeService(){
354
		return featureNodeService;
355
	}
356

    
357
	@Override
358
	public IVocabularyService getVocabularyService(){
359
		return vocabularyService;
360
	}
361

    
362
	@Override
363
	public IIdentificationKeyService getIdentificationKeyService(){
364
		return identificationKeyService;
365
	}
366

    
367
	@Override
368
	public IPolytomousKeyService getPolytomousKeyService(){
369
		return polytomousKeyService;
370
	}
371

    
372

    
373
	@Override
374
	public IPolytomousKeyNodeService getPolytomousKeyNodeService(){
375
		return polytomousKeyNodeService;
376
	}
377

    
378
    /**
379
     * {@inheritDoc}
380
     */
381
    @Override
382
    public IProgressMonitorService getProgressMonitorService() {
383
        return progressMonitorService;
384
    }
385

    
386
	@Override
387
	public IWorkingSetService getWorkingSetService(){
388
		return workingSetService;
389
	}
390

    
391
	@Override
392
	public IGroupService getGroupService(){
393
		return groupService;
394
	}
395

    
396

    
397
	@Override
398
	public IEntityValidationService getEntityValidationService(){
399
		return entityValidationService;
400
	}
401

    
402

    
403
	@Override
404
	public IEntityConstraintViolationService getEntityConstraintViolationService(){
405
		return entityConstraintViolationService;
406
	}
407

    
408
	@Override
409
	public ICdmPermissionEvaluator getPermissionEvaluator(){
410
		return permissionEvaluator;
411
	}
412

    
413
	@Override
414
	public TransactionStatus startTransaction(){
415
		return startTransaction(false);
416
	}
417

    
418
	@Override
419
	public TransactionStatus startTransaction(Boolean readOnly){
420

    
421
		PlatformTransactionManager txManager = getTransactionManager();
422

    
423
		DefaultTransactionDefinition defaultTxDef = new DefaultTransactionDefinition();
424
		defaultTxDef.setReadOnly(readOnly);
425
		TransactionDefinition txDef = defaultTxDef;
426

    
427
		// Log some transaction-related debug information.
428
		if (logger.isDebugEnabled()) {
429
			logger.debug("Transaction name = " + txDef.getName());
430
			logger.debug("Transaction facets:");
431
			logger.debug("Propagation behavior = " + txDef.getPropagationBehavior());
432
			logger.debug("Isolation level = " + txDef.getIsolationLevel());
433
			logger.debug("Timeout = " + txDef.getTimeout());
434
			logger.debug("Read Only = " + txDef.isReadOnly());
435
			// org.springframework.orm.hibernate5.HibernateTransactionManager
436
			// provides more transaction/session-related debug information.
437
		}
438

    
439
		TransactionStatus txStatus = txManager.getTransaction(txDef);
440
		return txStatus;
441
	}
442

    
443

    
444
	@Override
445
	public void commitTransaction(TransactionStatus txStatus){
446
		PlatformTransactionManager txManager = getTransactionManager();
447
		txManager.commit(txStatus);
448
		return;
449
	}
450

    
451
	@Override
452
	public void authenticate(String username, String password){
453
		UsernamePasswordAuthenticationToken tokenForUser = new UsernamePasswordAuthenticationToken(username, password);
454
		Authentication authentication = this.getAuthenticationManager().authenticate(tokenForUser);
455
		SecurityContext context = SecurityContextHolder.getContext();
456
		context.setAuthentication(authentication);
457
	}
458
}
(2-2/6)