Project

General

Profile

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

    
3
import org.hibernate.HibernateException;
4
import org.hibernate.event.SaveOrUpdateEvent;
5
import org.hibernate.event.SaveOrUpdateEventListener;
6
import org.joda.time.DateTime;
7
import org.springframework.security.core.Authentication;
8
import org.springframework.security.core.context.SecurityContextHolder;
9

    
10
import eu.etaxonomy.cdm.model.common.User;
11
import eu.etaxonomy.cdm.model.common.VersionableEntity;
12

    
13
public class SaveOrUpdateEntityListener implements SaveOrUpdateEventListener {
14

    
15
	public void onSaveOrUpdate(SaveOrUpdateEvent event)
16
			throws HibernateException {
17
		Object entity = event.getObject();
18
		if(entity != null && VersionableEntity.class.isAssignableFrom(entity.getClass())) {
19
			
20
			VersionableEntity versionableEntity = (VersionableEntity)entity;
21
			if (versionableEntity.getId()== 0){
22
				versionableEntity.setUpdated(new DateTime());
23
				Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
24
				if(authentication != null && authentication.getPrincipal() != null && authentication.getPrincipal() instanceof User) {
25
					User user = (User)authentication.getPrincipal();
26
					versionableEntity.setUpdatedBy(user);
27
				} 
28
			}
29
			
30
		}
31

    
32
	}
33

    
34
}
(9-9/10)