Project

General

Profile

Download (4.45 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.cdm.persistence.hibernate;
5

    
6
import org.apache.log4j.Logger;
7
import org.hibernate.cfg.Configuration;
8
import org.hibernate.engine.spi.SessionFactoryImplementor;
9
import org.hibernate.event.service.spi.EventListenerRegistry;
10
import org.hibernate.event.spi.EventType;
11
import org.hibernate.integrator.spi.Integrator;
12
import org.hibernate.metamodel.source.MetadataImplementor;
13
import org.hibernate.service.spi.SessionFactoryServiceRegistry;
14

    
15
/**
16
 * @author a.mueller
17
 * @created 30.03.2013
18
 *
19
 */
20
public class CdmListenerIntegrator implements Integrator {
21
	private static final Logger logger = Logger.getLogger(CdmListenerIntegrator.class);
22

    
23

    
24
	/*
25
	 * (non-Javadoc)
26
	 *
27
	 * @see org.hibernate.integrator.spi.Integrator#integrate(org.hibernate.cfg.Configuration,
28
	 * org.hibernate.engine.spi.SessionFactoryImplementor,
29
	 * org.hibernate.service.spi.SessionFactoryServiceRegistry)
30
	 */
31
	@Override
32
	public void integrate(Configuration configuration, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry){
33
		if (logger.isInfoEnabled()) {
34
			logger.info("Registering event listeners");
35
		}
36

    
37
		final EventListenerRegistry eventRegistry = serviceRegistry.getService(EventListenerRegistry.class);
38

    
39
		//duplication strategy
40
		eventRegistry.addDuplicationStrategy(CdmListenerDuplicationStrategy.NewInstance);
41

    
42
//		ValidationExecutor validationExecutor = new ValidationExecutor();
43
//		Level2ValidationEventListener l2Listener = new Level2ValidationEventListener();
44
//		l2Listener.setValidationExecutor(validationExecutor);
45
//		Level3ValidationEventListener l3Listener = new Level3ValidationEventListener();
46
//		l3Listener.setValidationExecutor(validationExecutor);
47

    
48
		// prepend to register before or append to register after
49
		// this example will register a persist event listener
50
		eventRegistry.prependListeners(EventType.SAVE, new CacheStrategyGenerator(), new SaveEntityListener());
51
		eventRegistry.prependListeners(EventType.UPDATE, new CacheStrategyGenerator(), new UpdateEntityListener());
52

    
53
		eventRegistry.prependListeners(EventType.SAVE_UPDATE, new CacheStrategyGenerator(), new SaveOrUpdateorMergeEntityListener());
54
		eventRegistry.prependListeners(EventType.MERGE, new CacheStrategyGenerator(), new SaveOrUpdateorMergeEntityListener());
55

    
56
//		eventRegistry.prependListeners(EventType.SAVE_UPDATE, new CacheStrategyGenerator(), new SaveOrUpdateEntityListener());
57
		//TODO Cherian move to SaveOrUpdateorMergeEntityListener
58
		eventRegistry.appendListeners(EventType.MERGE, new PostMergeEntityListener());
59

    
60
		eventRegistry.appendListeners(EventType.DELETE, new CdmDeleteListener());
61
		eventRegistry.appendListeners(EventType.POST_LOAD, new CdmPostDataChangeObservableListener());
62
//with validation
63
//		eventRegistry.appendListeners(EventType.POST_INSERT, new CdmPostDataChangeObservableListener(), l2Listener, l3Listener);
64
//		eventRegistry.appendListeners(EventType.POST_UPDATE, new CdmPostDataChangeObservableListener(), l2Listener, l3Listener);
65
//		eventRegistry.appendListeners(EventType.POST_DELETE, new CdmPostDataChangeObservableListener(), l3Listener);
66
//without validation
67
		eventRegistry.appendListeners(EventType.POST_INSERT, new CdmPostDataChangeObservableListener());
68
		eventRegistry.appendListeners(EventType.POST_UPDATE, new CdmPostDataChangeObservableListener());
69
		eventRegistry.appendListeners(EventType.POST_DELETE, new CdmPostDataChangeObservableListener());
70

    
71
		eventRegistry.appendListeners(EventType.PRE_INSERT, new CdmPreDataChangeObservableListener());
72
		eventRegistry.appendListeners(EventType.PRE_UPDATE, new CdmPreDataChangeObservableListener());
73
	}
74

    
75

    
76
	/*
77
	 * (non-Javadoc)
78
	 *
79
	 * @see org.hibernate.integrator.spi.Integrator#integrate(org.hibernate.metamodel.source.
80
	 * MetadataImplementor, org.hibernate.engine.spi.SessionFactoryImplementor,
81
	 * org.hibernate.service.spi.SessionFactoryServiceRegistry)
82
	 */
83
	@Override
84
	public void integrate(MetadataImplementor metadata, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry){
85
		//nothing to do for now
86
		logger.warn("Metadata integrate not yet implemented");
87
	}
88

    
89

    
90
	/*
91
	 * (non-Javadoc)
92
	 *
93
	 * @see org.hibernate.integrator.spi.Integrator#disintegrate(org.hibernate.engine.spi.
94
	 * SessionFactoryImplementor, org.hibernate.service.spi.SessionFactoryServiceRegistry)
95
	 */
96
	@Override
97
	public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry)
98
	{
99
		//nothing to do for now
100
		logger.warn("Disintegrate not yet implemented");
101
	}
102

    
103
}
(7-7/20)