2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.persistence
.hibernate
;
12 import org
.apache
.log4j
.Logger
;
13 import org
.hibernate
.HibernateException
;
14 import org
.hibernate
.event
.SaveOrUpdateEvent
;
15 import org
.hibernate
.event
.SaveOrUpdateEventListener
;
16 import org
.joda
.time
.DateTime
;
17 import org
.springframework
.security
.core
.Authentication
;
18 import org
.springframework
.security
.core
.context
.SecurityContextHolder
;
20 import eu
.etaxonomy
.cdm
.model
.common
.ICdmBase
;
21 import eu
.etaxonomy
.cdm
.model
.common
.User
;
23 public class SaveEntityListener
implements SaveOrUpdateEventListener
{
24 private static final long serialVersionUID
= -4295612947856041686L;
25 @SuppressWarnings("unused")
26 private static final Logger logger
= Logger
.getLogger(SaveEntityListener
.class);
28 public void onSaveOrUpdate(SaveOrUpdateEvent event
) throws HibernateException
{
29 Object entity
= event
.getObject();
31 Class
<?
> entityClazz
= entity
.getClass();
32 if(ICdmBase
.class.isAssignableFrom(entityClazz
)) {
33 ICdmBase cdmBase
= (ICdmBase
)entity
;
34 cdmBase
.setCreated(new DateTime());
35 Authentication authentication
= SecurityContextHolder
.getContext().getAuthentication();
36 if(authentication
!= null && authentication
.getPrincipal() != null && authentication
.getPrincipal() instanceof User
) {
37 User user
= (User
)authentication
.getPrincipal();
38 cdmBase
.setCreatedBy(user
);