1 package eu
.etaxonomy
.cdm
.persistence
.hibernate
;
3 import org
.apache
.log4j
.Logger
;
4 import org
.hibernate
.HibernateException
;
5 import org
.hibernate
.event
.SaveOrUpdateEvent
;
6 import org
.hibernate
.event
.SaveOrUpdateEventListener
;
7 import org
.joda
.time
.DateTime
;
8 import org
.springframework
.security
.Authentication
;
9 import org
.springframework
.security
.context
.SecurityContextHolder
;
11 import eu
.etaxonomy
.cdm
.model
.common
.ICdmBase
;
12 import eu
.etaxonomy
.cdm
.model
.common
.User
;
14 public class SaveEntityListener
implements SaveOrUpdateEventListener
{
15 private static final long serialVersionUID
= -4295612947856041686L;
16 @SuppressWarnings("unused")
17 private static final Logger logger
= Logger
.getLogger(SaveEntityListener
.class);
19 public void onSaveOrUpdate(SaveOrUpdateEvent event
)
20 throws HibernateException
{
21 Object entity
= event
.getObject();
23 Class
<?
> entityClazz
= entity
.getClass();
24 if(ICdmBase
.class.isAssignableFrom(entityClazz
)) {
25 ICdmBase cdmBase
= (ICdmBase
)entity
;
26 cdmBase
.setCreated(new DateTime());
27 Authentication authentication
= SecurityContextHolder
.getContext().getAuthentication();
28 if(authentication
!= null && authentication
.getPrincipal() != null && authentication
.getPrincipal() instanceof User
) {
29 User user
= (User
)authentication
.getPrincipal();
30 cdmBase
.setCreatedBy(user
);