Example usage for org.hibernate.persister.entity EntityPersister getPropertyValue

List of usage examples for org.hibernate.persister.entity EntityPersister getPropertyValue

Introduction

In this page you can find the example usage for org.hibernate.persister.entity EntityPersister getPropertyValue.

Prototype

Object getPropertyValue(Object object, String propertyName);

Source Link

Document

Get the value of a particular property

Usage

From source file:com.googlecode.hibernate.audit.synchronization.work.InsertAuditWorkUnit.java

License:Open Source License

private void processProperties(Session session, AuditConfiguration auditConfiguration, AuditEvent auditEvent,
        EntityPersister persister, Object entity, AuditObject auditObject) {

    for (String propertyName : persister.getPropertyNames()) {
        Type propertyType = persister.getPropertyType(propertyName);
        Object propertyValue = persister.getPropertyValue(entity, propertyName);

        processProperty(session, auditConfiguration, auditEvent, entity, propertyName, propertyValue,
                propertyType, auditObject);
    }/*from  ww w  .ja  va 2  s  .  c  om*/
}

From source file:com.googlecode.hibernate.audit.synchronization.work.UpdateAuditWorkUnit.java

License:Open Source License

private void processProperties(Session session, AuditConfiguration auditConfiguration, AuditEvent auditEvent,
        EntityPersister persister, Object entity, AuditObject auditObject) {
    String[] propertyNames = persister.getPropertyNames();

    int[] changedPropertyIndexes = null;
    if (oldState == null) {
        // if the old state does not exist - for example directly updating an entity that is not associated with the session before that.
        changedPropertyIndexes = new int[propertyNames.length];
        for (int i = 0; i < propertyNames.length; i++) {
            changedPropertyIndexes[i] = i;
        }//  w w  w . java  2s  .  com
    } else {
        changedPropertyIndexes = persister.findDirty(newState, oldState, entity, (SessionImplementor) session);
    }

    for (int i = 0; i < changedPropertyIndexes.length; i++) {
        String propertyName = propertyNames[changedPropertyIndexes[i]];

        if (auditConfiguration.getExtensionManager().getAuditableInformationProvider().isAuditable(entityName,
                propertyName)) {

            Type propertyType = persister.getPropertyType(propertyName);
            Object propertyValue = persister.getPropertyValue(entity, propertyName);

            processProperty(session, auditConfiguration, auditEvent, entity, propertyName, propertyValue,
                    propertyType, auditObject);
        }
    }
}

From source file:org.babyfish.hibernate.internal.SessionImplWrapper.java

License:Open Source License

@SuppressWarnings("unchecked")
protected static void delete(XSessionImplementor sessionProxy, Object object) {
    if (object != null) {
        SessionFactory sessionFactory = sessionProxy.getRawSessionImpl().getSessionFactory();
        PersistenceContext persistenceContext = ((org.hibernate.internal.SessionImpl) sessionProxy
                .getRawSessionImpl()).getPersistenceContext();
        Map<PersistentCollection, CollectionEntry> collectionEntries = persistenceContext
                .getCollectionEntries();
        for (Entry<PersistentCollection, CollectionEntry> entry : collectionEntries.entrySet()) {
            PersistentCollection persistentCollection = entry.getKey();
            if (persistentCollection.wasInitialized()) {
                CollectionMetadata collectionMetadata = sessionFactory
                        .getCollectionMetadata(persistentCollection.getRole());
                Class<?> elementClass = collectionMetadata.getElementType().getReturnedClass();
                if (elementClass.isAssignableFrom(object.getClass())) {
                    if (persistentCollection instanceof Map<?, ?>) {
                        ((Map<?, ?>) persistentCollection).values().remove(object);
                    } else if (persistentCollection instanceof Collection<?>) {
                        ((Collection<?>) persistentCollection).remove(object);
                    }/*from  w  w w. j  a v  a  2 s.  co  m*/
                }
            }
        }
        Class<?> clazz = object.getClass();
        Collection<HbmReference> hbmReferences = null;
        NavigableMap<Class<?>, Collection<HbmReference>> hbmReferencesByTargetClass = (NavigableMap<Class<?>, Collection<HbmReference>>) ((XSessionFactoryImplementor) sessionProxy
                .getFactory()).getInternalData(SessionFactoryImplWrapper.IDK_HBM_REFERENCES_BY_TARGET_CLASS);
        for (Entry<Class<?>, Collection<HbmReference>> entry : hbmReferencesByTargetClass.descendingMap()
                .entrySet()) {
            if (entry.getKey().isAssignableFrom(clazz)) {
                hbmReferences = entry.getValue();
                break;
            }
        }
        if (hbmReferences != null) {
            EntityReferenceComparator<? super Object> referenceComparator = EntityReferenceComparator
                    .getInstance();
            Entry<Object, EntityEntry>[] entityEntries = persistenceContext.reentrantSafeEntityEntries();
            if (entityEntries != null) {
                for (Entry<Object, EntityEntry> entry : entityEntries) {
                    Object entity = entry.getKey();
                    if (Hibernate.isInitialized(entity)) {
                        EntityPersister persister = entry.getValue().getPersister();
                        ClassMetadata classMetadata = persister.getClassMetadata();
                        for (HbmReference hbmReference : hbmReferences) {
                            if (hbmReference.ownerMetadata == classMetadata) {
                                Object expectedObject = persister.getPropertyValue(entity,
                                        hbmReference.propertyIndex);
                                if (referenceComparator.same(expectedObject, object)) {
                                    persister.setPropertyValue(entity, hbmReference.propertyIndex, null);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    sessionProxy.getRawSessionImpl().delete(object);
}

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

License:Open Source License

private static String getUid(EntityPersister persister, Object entity) {
    for (int i = 0; i < persister.getPropertyNames().length; i++) {
        if ("uid".equals(persister.getPropertyNames()[i]))
            return (String) persister.getPropertyValue(entity, i);
    }/*from w w  w .  ja  va2 s .co m*/
    return null;
}