Project

General

Profile

Download (3.17 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.boot.Metadata;
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.service.spi.SessionFactoryServiceRegistry;
13

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

    
22
	@Override
23
	public void integrate(Metadata metadata,
24
	        SessionFactoryImplementor sessionFactory,
25
	        SessionFactoryServiceRegistry serviceRegistry)
26
	{
27
	    if (logger.isInfoEnabled()) {
28
			logger.info("Registering event listeners");
29
		}
30

    
31
		final EventListenerRegistry eventRegistry = serviceRegistry.getService(EventListenerRegistry.class);
32

    
33
		//duplication strategy
34
		eventRegistry.addDuplicationStrategy(CdmListenerDuplicationStrategy.NewInstance);
35

    
36
//		ValidationExecutor validationExecutor = new ValidationExecutor();
37
//		Level2ValidationEventListener l2Listener = new Level2ValidationEventListener();
38
//		l2Listener.setValidationExecutor(validationExecutor);
39
//		Level3ValidationEventListener l3Listener = new Level3ValidationEventListener();
40
//		l3Listener.setValidationExecutor(validationExecutor);
41

    
42
		// prepend to register before or append to register after
43
		// this example will register a persist event listener
44
		eventRegistry.prependListeners(EventType.SAVE, new CacheStrategyGenerator(), new SaveEntityListener());
45
		eventRegistry.prependListeners(EventType.UPDATE, new CacheStrategyGenerator(), new UpdateEntityListener());
46
		eventRegistry.prependListeners(EventType.SAVE_UPDATE, new CacheStrategyGenerator(), new SaveOrUpdateEntityListener());
47
		eventRegistry.appendListeners(EventType.MERGE, new PostMergeEntityListener());
48
//		eventRegistry.appendListeners(EventType.DELETE, new CdmDeleteListener());
49
		eventRegistry.appendListeners(EventType.POST_LOAD, new CdmPostDataChangeObservableListener());
50
//with validation
51
//		eventRegistry.appendListeners(EventType.POST_INSERT, new CdmPostDataChangeObservableListener(), l2Listener, l3Listener);
52
//		eventRegistry.appendListeners(EventType.POST_UPDATE, new CdmPostDataChangeObservableListener(), l2Listener, l3Listener);
53
//		eventRegistry.appendListeners(EventType.POST_DELETE, new CdmPostDataChangeObservableListener(), l3Listener);
54
//without validation
55
		eventRegistry.appendListeners(EventType.POST_INSERT, new CdmPostDataChangeObservableListener());
56
		eventRegistry.appendListeners(EventType.POST_UPDATE, new CdmPostDataChangeObservableListener());
57
		eventRegistry.appendListeners(EventType.POST_DELETE, new CdmPostDataChangeObservableListener());
58

    
59
		eventRegistry.appendListeners(EventType.PRE_INSERT, new CdmPreDataChangeListener());
60
		eventRegistry.appendListeners(EventType.PRE_UPDATE, new CdmPreDataChangeListener());
61
	}
62

    
63
	@Override
64
	public void disintegrate(SessionFactoryImplementor sessionFactory,
65
	        SessionFactoryServiceRegistry serviceRegistry)
66
	{
67
		//nothing to do for now
68
		logger.warn("Disintegrate ListenerIntegrator not yet implemented");
69
	}
70

    
71
}
(7-7/21)