/* * ome.security.basic.EventLogListener * * Copyright 2006 University of Dundee. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.security.basic; // Java imports // Third-party imports import ome.model.IObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.hibernate.event.PostDeleteEvent; import org.hibernate.event.PostDeleteEventListener; import org.hibernate.event.PostInsertEvent; import org.hibernate.event.PostInsertEventListener; import org.hibernate.event.PostUpdateEvent; import org.hibernate.event.PostUpdateEventListener; /** * responsible for responding to all Hibernate Events. Delegates tasks to * various components. It is assumed that graphs coming to the Hibernate methods * which produces these events have already been processed by the * {@link ome.tools.hibernate.UpdateFilter} */ public class EventLogListener implements PostUpdateEventListener, PostDeleteEventListener, PostInsertEventListener { private static final long serialVersionUID = 3245068515908082533L; private static Logger log = LoggerFactory.getLogger(EventLogListener.class); protected final CurrentDetails cd; /** * main constructor. */ public EventLogListener(CurrentDetails cd) { this.cd = cd; } // // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Acting as all hibernate triggers // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // public void onPostDelete(PostDeleteEvent event) { add("DELETE", event.getEntity()); } public void onPostInsert(PostInsertEvent event) { add("INSERT", event.getEntity()); } public void onPostUpdate(PostUpdateEvent event) { add("UPDATE", event.getEntity()); } // ~ Helpers // ========================================================================= void add(String action, Object entity) { if (entity instanceof IObject) { Class klass = entity.getClass(); Long id = ((IObject) entity).getId(); cd.addLog(action, klass, id); } } }