Project

General

Profile

Download (3.41 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
	/* (non-Javadoc)
24
	 * @see org.hibernate.integrator.spi.Integrator#integrate(org.hibernate.cfg.Configuration, org.hibernate.engine.spi.SessionFactoryImplementor, org.hibernate.service.spi.SessionFactoryServiceRegistry)
25
	 */
26
	@Override
27
	public void integrate(Configuration configuration,
28
			SessionFactoryImplementor sessionFactory,
29
			SessionFactoryServiceRegistry serviceRegistry) {
30
		if (logger.isInfoEnabled()){logger.info("Registering event listeners");}
31
		final EventListenerRegistry eventRegistry = serviceRegistry.getService(EventListenerRegistry.class);
32

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

    
36
        // prepend to register before or append to register after
37
        // this example will register a persist event listener
38
        eventRegistry.prependListeners(EventType.SAVE, new CacheStrategyGenerator(), new SaveEntityListener());
39
        eventRegistry.prependListeners(EventType.UPDATE, new CacheStrategyGenerator(), new UpdateEntityListener());
40
        eventRegistry.prependListeners(EventType.SAVE_UPDATE, new CacheStrategyGenerator(), new SaveOrUpdateEntityListener(), new Level2ValidationSaveOrUpdateEventListener());
41
        eventRegistry.appendListeners(EventType.DELETE, new CdmDeleteListener());
42
        eventRegistry.appendListeners(EventType.POST_LOAD, new CdmPostDataChangeObservableListener());
43
        eventRegistry.appendListeners(EventType.POST_INSERT, new CdmPostDataChangeObservableListener(), new Level3ValidationCRUDEventListener());
44
        eventRegistry.appendListeners(EventType.POST_UPDATE, new CdmPostDataChangeObservableListener(), new Level3ValidationCRUDEventListener());
45
        eventRegistry.appendListeners(EventType.POST_DELETE, new CdmPostDataChangeObservableListener(), new Level3ValidationCRUDEventListener());
46
    }
47

    
48

    
49
	/* (non-Javadoc)
50
	 * @see org.hibernate.integrator.spi.Integrator#integrate(org.hibernate.metamodel.source.MetadataImplementor, org.hibernate.engine.spi.SessionFactoryImplementor, org.hibernate.service.spi.SessionFactoryServiceRegistry)
51
	 */
52
	@Override
53
	public void integrate(MetadataImplementor metadata,
54
			SessionFactoryImplementor sessionFactory,
55
			SessionFactoryServiceRegistry serviceRegistry) {
56
		//nothing to do for now
57
		logger.warn("Metadata integrate not yet implemented");
58

    
59
	}
60

    
61
	/* (non-Javadoc)
62
	 * @see org.hibernate.integrator.spi.Integrator#disintegrate(org.hibernate.engine.spi.SessionFactoryImplementor, org.hibernate.service.spi.SessionFactoryServiceRegistry)
63
	 */
64
	@Override
65
	public void disintegrate(SessionFactoryImplementor sessionFactory,
66
			SessionFactoryServiceRegistry serviceRegistry) {
67
		//nothing to do for now
68
		logger.warn("Disintegrate not yet implemented");
69

    
70
	}
71

    
72
}
(7-7/17)