Project

General

Profile

Download (2.61 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.persistence.hibernate;
2

    
3
import java.util.Map;
4

    
5
import org.hibernate.HibernateException;
6
import org.hibernate.event.MergeEvent;
7
import org.joda.time.DateTime;
8
import org.springframework.security.Authentication;
9
import org.springframework.security.context.SecurityContextHolder;
10

    
11
import eu.etaxonomy.cdm.model.common.ICdmBase;
12
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
13
import eu.etaxonomy.cdm.model.common.User;
14
import eu.etaxonomy.cdm.model.common.VersionableEntity;
15
import eu.etaxonomy.cdm.model.name.NonViralName;
16

    
17
public class MergeEntityListener implements
18
		org.hibernate.event.MergeEventListener {
19

    
20
	public void onMerge(MergeEvent event) throws HibernateException {
21
		Object entity = event.getOriginal();
22
        if (entity != null){
23
            Class<?> entityClazz = entity.getClass();
24
            if(ICdmBase.class.isAssignableFrom(entityClazz)) {
25
	            ICdmBase cdmBase = (ICdmBase)entity;
26
                if(cdmBase.getId() == 0) {
27
                	cdmBase.setCreated(new DateTime());
28
  				    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
29
  				    if(authentication != null && authentication.getPrincipal() != null && authentication.getPrincipal() instanceof User) {
30
  				      User user = (User)authentication.getPrincipal();
31
  				      cdmBase.setCreatedBy(user);
32
  				    }
33
                  } else if(VersionableEntity.class.isAssignableFrom(entityClazz)) {
34
    			    VersionableEntity versionableEntity = (VersionableEntity)cdmBase;
35
    			    versionableEntity.setUpdated(new DateTime());
36
    			    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
37
    			    if(authentication != null && authentication.getPrincipal() != null && authentication.getPrincipal() instanceof User) {
38
    			      User user = (User)authentication.getPrincipal();
39
    			      versionableEntity.setUpdatedBy(user);
40
    			    } 
41
    		      }
42
            }
43
            
44
        	//title cache
45
        	if(IdentifiableEntity.class.isAssignableFrom(entityClazz)) {
46
        		IdentifiableEntity identifiableEntity = (IdentifiableEntity)entity;
47
        		identifiableEntity.getTitleCache();
48
            }
49
        	
50
        	//non-viral-name caches
51
        	if(NonViralName.class.isAssignableFrom(entityClazz)) {
52
        		NonViralName nonViralName = (NonViralName)entity;
53
        		nonViralName.getFullTitleCache();
54
        		nonViralName.getAuthorshipCache();
55
        		nonViralName.getNameCache();
56
            }
57
        }
58
	}
59

    
60
	public void onMerge(MergeEvent arg0, Map arg1) throws HibernateException {
61
		// TODO Auto-generated method stub
62

    
63
	}
64

    
65
}
(7-7/9)