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

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

Introduction

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

Prototype

public final EventSource getSession() 

Source Link

Document

Returns the session event source for this event.

Usage

From source file:at.molindo.esi4j.module.hibernate.HibernateEventListener.java

License:Apache License

@Override
public void onPostInsert(PostInsertEvent event) {
    EventSession eventSession = findEventSession(event.getSession());
    if (eventSession != null) {
        eventSession.onPostInsert(event.getEntity());
    } else {//from  w  w w  .  j  ava  2 s .  c om
        _batchedEventProcessor.onPostInsert(event.getEntity());
    }
}

From source file:com.corundumstudio.hibernate.dsc.QueryCacheEntityListener.java

License:Apache License

@Override
public void onPostInsert(PostInsertEvent event) {
    Set<Entry<String, QueryListenerEntry>> values = getValue(event.getPersister());
    for (Entry<String, QueryListenerEntry> entry : values) {
        InsertOrDeleteCommand command = new InsertOrDeleteCommand();
        CacheCallback handler = entry.getValue().getHandler();
        handler.commonParams(command, event.getEntity());
        handler.onInsertOrDelete(command, event.getEntity());

        DynamicQueryCache queryCache = getQueryCache(event.getPersister(), entry.getKey(), entry.getValue());
        addResult(queryCache, entry.getValue(), command, event.getSession());
    }//  www . j a  v  a2 s  .  co m
}

From source file:com.googlecode.hibernate.audit.listener.AuditListener.java

License:Open Source License

public void onPostInsert(PostInsertEvent event) {
    try {//from  w  w  w .j  av a2 s  . co  m
        String entityName = event.getPersister().getEntityName();

        if (auditConfiguration.getExtensionManager().getAuditableInformationProvider()
                .isAuditable(entityName)) {
            AuditProcess auditProcess = auditConfiguration.getAuditProcessManager().get(event.getSession());

            AuditWorkUnit workUnit = new InsertAuditWorkUnit(entityName, event.getId(), event.getEntity(),
                    event.getPersister());
            auditProcess.addWorkUnit(workUnit);
        }
    } catch (RuntimeException e) {
        if (log.isErrorEnabled()) {
            log.error("RuntimeException occured during onPostInsert, will re-throw the exception", e);
        }
        throw e;
    }
}

From source file:org.cgiar.ccafs.marlo.data.HibernateAuditLogListener.java

License:Open Source License

@Override
public void onPostInsert(PostInsertEvent postInsertEvent) {

    Object entity = postInsertEvent.getEntity();
    LOG.debug("begin onPostInsert for Entity : " + entity);

    AuditLogContext auditLogContext = AuditLogContextProvider.getAuditLogContext();

    /**//from ww w  . j  a va  2 s.com
     * This is because our save(entity), update(entity) and delete(entity) methods on our DAOs should not
     * execute the listeners. There might be a better way to do this like conditionally active the listeners.
     */
    if (auditLogContext.getActionName() == null
            && CollectionUtils.isEmpty(auditLogContext.getRelationsNames())) {
        LOG.debug("No audit log context setup for insert on entity: " + entity);
        return;
    }

    /**
     * We might save many entities on a single request, but we only want to do the audit logging on one.
     */
    if (!entity.getClass().getCanonicalName().equals(auditLogContext.getEntityCanonicalName())) {
        LOG.debug("Entity : " + entity + " , is not the entity we want to audit log");
        return;
    }

    HashMap<String, Object> insertRecord = new HashMap<>();
    if (entity instanceof IAuditLog) {
        insertRecord.put(IAuditLog.ENTITY, entity);
        insertRecord.put(IAuditLog.PRINCIPAL, new Long(1));
        auditLogContext.getInserts().add(insertRecord);
        ClassMetadata classMetadata = postInsertEvent.getSession().getSessionFactory()
                .getClassMetadata(entity.getClass());
        Type[] types = classMetadata.getPropertyTypes();

        auditLogContext.getInserts().addAll(this.relations(postInsertEvent.getState(), types,
                ((IAuditLog) entity).getId(), true, postInsertEvent.getSession(), entity));
    }
    postInsertEvent.getSession().getActionQueue()
            .registerProcess(new MARLOAuditBeforeTransactionCompletionProcess());

}