Example usage for org.hibernate.event.spi PostUpdateEvent getPersister

List of usage examples for org.hibernate.event.spi PostUpdateEvent getPersister

Introduction

In this page you can find the example usage for org.hibernate.event.spi PostUpdateEvent getPersister.

Prototype

public EntityPersister getPersister() 

Source Link

Usage

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

License:Apache License

@Override
public void onPostUpdate(PostUpdateEvent event) {
    Set<Entry<String, QueryListenerEntry>> values = getValue(event.getPersister());
    for (Entry<String, QueryListenerEntry> entry : values) {
        UpdateCommand command = new UpdateCommand();
        CacheCallback handler = entry.getValue().getHandler();
        handler.commonParams(command, event.getEntity());
        handler.onUpdate(command, event.getEntity());

        DynamicQueryCache queryCache = getQueryCache(event.getPersister(), entry.getKey(), entry.getValue());
        if (command.isAddResult() || command.isUniqueResult()) {
            addResult(queryCache, entry.getValue(), command, event.getSession());
        }/*from w ww.  j  a va  2 s .c  om*/
        if (command.isRemoveResult()) {
            removeResult(queryCache, entry.getValue(), command, event.getSession());
        }
    }
}

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

License:Open Source License

public void onPostUpdate(PostUpdateEvent event) {
    try {/*from w  ww.  j  ava 2 s .  c om*/
        String entityName = event.getPersister().getEntityName();

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

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

From source file:es.logongas.ix3.dao.impl.rules.EventListenerImplRuleEngine.java

License:Apache License

@Override
public void onPostUpdate(PostUpdateEvent pue) {
    autowired();//from  w w  w .j  a v  a  2s .  c  om
    EntityMode entityMode = pue.getPersister().getEntityMode();

    RuleContext ruleContext = new RuleContextImplNoPrincipal(pue.getEntity(),
            getOriginalEntity(pue.getOldState(), pue.getPersister()));

    fireRules(ruleContext, pue.getPersister(), pue.getState(), entityMode, RuleGroupPredefined.PostUpdate.class,
            RuleGroupPredefined.PostInsertOrUpdate.class, RuleGroupPredefined.PostUpdateOrDelete.class,
            RuleGroupPredefined.PostInsertOrUpdateOrDelete.class);
}

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

License:Apache License

public void onPostUpdate(PostUpdateEvent event) {
    ClosureEventListener eventListener = findEventListener(event.getEntity(),
            event.getPersister().getFactory());
    if (eventListener != null) {
        eventListener.onPostUpdate(event);
    }// www . j  av  a  2s  .  com
}

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

License:Open Source License

public void onPostUpdate(PostUpdateEvent event) {
    if (DataPublishListener.handleExclude(event.getEntity()))
        return;/*w ww. j  a  v  a  2  s.  com*/

    if (event.getDirtyProperties() != null && event.getDirtyProperties().length > 0) {
        Object change = getChange(event.getPersister(), event.getSession(),
                event.getPersister().getEntityName(), event.getId(), event.getEntity());
        if (change instanceof Change) {
            for (int i = 0; i < event.getDirtyProperties().length; i++) {
                int pidx = event.getDirtyProperties()[i];
                String pname = event.getPersister().getPropertyNames()[pidx];
                if (AnnotationUtils.isAnnotatedWith(event.getEntity(), pname, ExcludeFromDataPublish.class))
                    continue;

                ((Change) change).getChanges().put(pname, event.getState()[pidx]);
            }
        } else if (change == null)
            DataContext.addUpdate(EntityUpdateType.UPDATE, event.getEntity(), event.getEntity());
    }
}

From source file:org.zanata.service.impl.EntityListenerUtil.java

License:Open Source License

/**
 * Try to locate index for field in the entity. We try to optimize a
 * bit here since the index should be consistent and only need to be looked
 * up once. If the given index is not null, it means it has been looked up
 * and set already so we just return that value. Otherwise it will look it
 * up in hibernate persister and return the index value.
 *
 * @param slugFieldIndex//from  w w  w.  j a  v  a  2 s. c  o  m
 *            if not null it will be the index to use
 * @param event
 *            post update event for an entity
 * @param entityField field name to look up in entity
 * @return looked up index for a given field for the entity
 */
static int getFieldIndex(Integer slugFieldIndex, PostUpdateEvent event, String entityField) {
    if (slugFieldIndex != null) {
        return slugFieldIndex;
    }
    String[] propertyNames = event.getPersister().getPropertyNames();
    int i;
    for (i = 0; i < propertyNames.length; i++) {
        String propertyName = propertyNames[i];
        if (propertyName.equals(entityField)) {
            return i;
        }
    }
    log.error("can not find {} index in entity [{}] properties [{}]", entityField, event.getEntity(),
            Lists.newArrayList(propertyNames));
    throw new IllegalStateException("can not find " + entityField + " index in entity properties");
}