Example usage for org.hibernate.event.spi SaveOrUpdateEvent getSession

List of usage examples for org.hibernate.event.spi SaveOrUpdateEvent getSession

Introduction

In this page you can find the example usage for org.hibernate.event.spi SaveOrUpdateEvent getSession.

Prototype

public final EventSource getSession() 

Source Link

Document

Returns the session event source for this event.

Usage

From source file:org.egov.infra.config.persistence.event.listener.HibernateEventListener.java

License:Open Source License

/**
 * For new objects that are created, this event is used to set the audit properties. This is done here instead of the
 * pre-insert event because Hibernate checks for not-null constraints before the pre-update and pre-insert are fired.
 *///from ww w. j  a v a 2s  .  c  o  m
@Override
public void onSaveOrUpdate(final SaveOrUpdateEvent event) {
    final EventSource session = event.getSession();
    final Object object = event.getObject();
    if (object instanceof BaseModel
            && !session.getPersistenceContext().reassociateIfUninitializedProxy(object)) {
        // only update the entity if it has been changed
        final Date currentDate = new Date();
        final User usr = session.load(User.class, ApplicationThreadLocals.getUserId());

        final BaseModel entity = (BaseModel) session.getPersistenceContext().unproxyAndReassociate(object);
        if (entity.getCreatedBy() == null) {
            entity.setCreatedDate(currentDate);
            entity.setCreatedBy(usr);
            entity.setModifiedBy(usr);
            entity.setModifiedDate(currentDate);
        }

    } else if (object instanceof Auditable
            && !session.getPersistenceContext().reassociateIfUninitializedProxy(object)) {
        final User usr = session.load(User.class, ApplicationThreadLocals.getUserId());
        final AbstractAuditable entity = (AbstractAuditable) session.getPersistenceContext()
                .unproxyAndReassociate(object);
        if (entity.getCreatedBy() == null) {
            final Date currentDate = new Date();
            entity.setCreatedDate(currentDate);
            entity.setCreatedBy(usr);
            entity.setLastModifiedBy(usr);
            entity.setLastModifiedDate(currentDate);
        }
    }

}

From source file:org.grails.orm.hibernate.event.listener.HibernateEventListener.java

License:Apache License

public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException {
    Object entity = event.getObject();
    if (entity != null) {
        ClosureEventListener eventListener;
        EventSource session = event.getSession();
        eventListener = findEventListener(entity, (SessionFactoryImplementor) session.getSessionFactory());
        if (eventListener != null) {
            eventListener.onSaveOrUpdate(event);
        }//from   w w  w. j av a2 s  .co  m
    }
}

From source file:org.granite.tide.hibernate4.HibernateSaveOrUpdateListener.java

License:Open Source License

@Override
public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException {
    try {/*  w  w w.  j a va 2 s .  c o  m*/
        super.onSaveOrUpdate(event);
    } catch (StaleObjectStateException e) {
        HibernateOptimisticLockException.rethrowOptimisticLockException(event.getSession(), e);
    }
}

From source file:org.openeos.hibernate.internal.observers.DAOListenerManager.java

License:Apache License

@SuppressWarnings("unchecked")
private void fireSaveOrUpdateEvent(SaveOrUpdateEvent event, boolean before) {
    org.openeos.dao.SaveOrUpdateEvent<Object> ourEvent = new org.openeos.dao.SaveOrUpdateEvent<Object>(
            event.getSession(), event.getObject(), event.getResultId());
    try {//  w w  w . j  a  va2  s . c  o  m
        for (SaveOrUpdateListener<Object> listener : getListenerByObject(SaveOrUpdateListener.class,
                event.getObject())) {
            LOG.debug(
                    MessageFormat.format("Calling SaveOrUpdateListener. Object: {0} Before: {1} Listener: {2}",
                            event.getObject().toString(), Boolean.toString(before), listener.toString()));
            if (before) {
                listener.beforeSaveOrUpdate(ourEvent);
            } else {
                listener.afterSaveOrUpdate(ourEvent);
            }
        }
    } catch (UserException ex) {
        // TODO
        throw new HibernateException(ex);
    }

}