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

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

Introduction

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

Prototype

String[] getPropertyNames();

Source Link

Document

Get the names of the class properties - doesn't have to be the names of the actual Java properties (used for XML generation only)

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);
    }// w  w w. ja va2s . c o  m
}

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;
        }//from ww w .  java 2s.  c om
    } 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:com.mg.framework.service.HibernateListenerInjectorImpl.java

License:Open Source License

private void setUpdatedAttributes(PersistentObject entity, Object[] state, EntityPersister entityPersister) {
    String[] propertyNames = entityPersister.getPropertyNames();
    int versionProperty = entityPersister.getVersionProperty();
    for (int i = 0, len = propertyNames.length; i < len; i++) {
        if (versionProperty == i) //http://issues.m-g.ru/bugzilla/show_bug.cgi?id=4535
            continue;

        String name = propertyNames[i];

        Type type = entityPersister.getPropertyType(name);
        //  ??  , ..  ? ?  
        if (type.isCollectionType() || type.isEntityType())
            continue;

        Object valueEntity = entity.getAttribute(name);
        Object value = state[i];//from w w w. j a va2  s  .  c  o  m
        if (valueEntity == null) {
            if (value != null)
                state[i] = null;
        } else if (value == null || !value.equals(valueEntity))
            state[i] = valueEntity;
    }
}

From source file:com.square.core.model.util.FormatObjectHibernateListener.java

License:Open Source License

/**
 * Formate un objet./*from   w  w  w .j ava  2  s  .c o  m*/
 * @param objet l'objet  formater.
 */
private void udpateEntity(Object entity, EntityPersister persister, Object[] state) {
    if (classesConcernees.contains(entity.getClass())) {
        final String[] properties = persister.getPropertyNames();
        for (int i = 0; i < properties.length; i++) {
            if (!champsAExclure.contains(properties[i])) {
                if (state[i] instanceof String && state[i] != null) {
                    final String value = formaterChaine(state[i].toString()).toLowerCase();
                    state[i] = value;
                    try {
                        PropertyUtils.setSimpleProperty(entity, properties[i], value);
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    } catch (InvocationTargetException e) {
                        e.printStackTrace();
                    } catch (NoSuchMethodException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

From source file:corner.orm.hibernate.expression.NewExpressionExample.java

License:Apache License

public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {

    EntityPersister meta = criteriaQuery.getFactory().getEntityPersister(criteriaQuery.getEntityName(criteria));
    String[] propertyNames = meta.getPropertyNames();
    Type[] propertyTypes = meta.getPropertyTypes();
    //TODO: get all properties, not just the fetched ones!
    Object[] values = meta.getPropertyValues(entity, getEntityMode(criteria, criteriaQuery));
    List<TypedValue> list = new ArrayList<TypedValue>();
    for (int i = 0; i < propertyNames.length; i++) {
        Object value = values[i];
        Type type = propertyTypes[i];
        String name = propertyNames[i];

        boolean isPropertyIncluded = i != meta.getVersionProperty() && isPropertyIncluded(value, name, type);

        if (isPropertyIncluded) {
            if (propertyTypes[i].isComponentType()) {
                addComponentTypedValues(name, value, (AbstractComponentType) type, list, criteria,
                        criteriaQuery);// ww w  . j a v  a 2 s . c o  m
            } else {
                addPropertyTypedValue(name, value, type, list);
            }
        }
    }
    return (TypedValue[]) list.toArray(TYPED_VALUES);
}

From source file:edu.utah.further.core.data.hibernate.listeners.PreUpdatePreventNullOverwriteListener.java

License:Apache License

@SuppressWarnings("resource")
@Override/*from   w  w  w  .j av  a  2s . c o m*/
public boolean onPreUpdate(final PreUpdateEvent event) {
    if (log.isDebugEnabled()) {
        log.debug("Received pre-update event");
    }
    final EntityPersister entityPersister = event.getPersister();
    final EntityMode entityMode = entityPersister.guessEntityMode(event.getEntity());
    final Connection connection = getConnection(entityPersister);
    final StatelessSession session = entityPersister.getFactory().openStatelessSession(connection);
    session.beginTransaction();
    final Serializable entityId = entityPersister.getIdentifier(event.getEntity(),
            (SessionImplementor) session);
    final Object existingEntity = session.get(event.getEntity().getClass(), entityId);

    if (log.isDebugEnabled()) {
        log.debug("Loaded existing entity " + existingEntity);
    }

    boolean updatedExistingEntity = false;
    for (int i = 0; i < entityPersister.getPropertyNames().length; i++) {
        final Object oldPropValue = entityPersister.getPropertyValue(existingEntity, i, entityMode);
        if (oldPropValue == null) {

            if (log.isDebugEnabled()) {
                log.debug("Found a property in the existing " + "entity that was null, checking new entity");
            }

            final Object newPropValue = entityPersister.getPropertyValue(event.getEntity(), i, entityMode);

            if (!(newPropValue instanceof Collection<?>) && newPropValue != null) {

                if (log.isDebugEnabled()) {
                    log.debug("The new entity contains a non-null " + "value, updating existing entity");
                }

                entityPersister.setPropertyValue(existingEntity, i, newPropValue, entityMode);
                updatedExistingEntity = true;
            }
        }
    }

    if (updatedExistingEntity) {
        entityPersister.getFactory().getCurrentSession().cancelQuery();
        session.update(existingEntity);
    }

    session.getTransaction().commit();
    session.close();

    return updatedExistingEntity;
}

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

License:Apache License

private void stateToEntity(Object[] state, Object entity, EntityPersister entityPersister) {

    if (state == null) {
        return;/*from w  w  w  . j a v a2 s  .  c o  m*/
    }

    String[] propertyNames = entityPersister.getPropertyNames();

    for (int i = 0; i < propertyNames.length; i++) {
        Object value = state[i];

        ReflectionUtil.setValueToBean(entity, propertyNames[i], value);

    }

}

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

License:Apache License

private void entityToState(Object entity, Object[] state, EntityPersister entityPersister) {

    if (state == null) {
        return;/*from  w  w w. j  ava 2s .c  om*/
    }

    String[] propertyNames = entityPersister.getPropertyNames();

    for (int i = 0; i < propertyNames.length; i++) {
        Object value = ReflectionUtil.getValueFromBean(entity, propertyNames[i]);

        state[i] = value;

    }
}

From source file:ome.tools.hibernate.HibernateUtils.java

License:Open Source License

/**
 * loads collections which have been filtered or nulled by the user
 * /*from ww w. j a  v a  2 s.  co m*/
 * @param entity
 *            IObject to have its collections reloaded
 * @param id
 *            persistent (db) id of this entity
 * @param currentState
 *            the possibly changed field data for this entity
 * @param previousState
 *            the field data as seen in the db
 * @param propertyNames
 *            field names
 * @param types
 *            Hibernate {@link Type} for each field
 * @param detailsIndex
 *            the index of the {@link Details} instance (perf opt)
 */
public static void fixNulledOrFilteredCollections(IObject entity, IObject target, EntityPersister persister,
        SessionImplementor source) {

    Object[] currentState = persister.getPropertyValues(entity, source.getEntityMode());
    Object[] previousState = persister.getPropertyValues(target, source.getEntityMode());
    String[] propertyNames = persister.getPropertyNames();
    Type[] types = persister.getPropertyTypes();

    int detailsIndex = detailsIndex(propertyNames);
    Details d = (Details) currentState[detailsIndex];
    if (d != null) {
        Set<String> s = d.filteredSet();
        for (String string : s) {
            string = LsidUtils.parseField(string);
            int idx = index(string, propertyNames);
            Object previous = previousState[idx];
            if (!(previous instanceof Collection)) // implies
            // not null
            {
                throw new InternalException(String.format(
                        "Invalid collection found for filtered " + "field %s in previous state for %s", string,
                        entity));
            }
            log("Copying filtered collection ", string);
            Collection copy = copy(((Collection) previous));
            persister.setPropertyValue(entity, idx, copy, source.getEntityMode());
        }
    }

    for (int i = 0; i < types.length; i++) {
        Type t = types[i];
        if (t.isCollectionType() && null == currentState[i]) {
            Object previous = previousState[i];
            if (previous == null) {
                // ignore. If the system gave it to us, it can handle it.
            } else if (previous instanceof Collection) {
                if (!Hibernate.isInitialized(previous)) {
                    log("Skipping uninitialized collection: ", propertyNames[i]);
                    persister.setPropertyValue(entity, i, previous, source.getEntityMode());
                } else {
                    log("Copying nulled collection: ", propertyNames[i]);
                    Collection copy = copy(((Collection) previous));
                    persister.setPropertyValue(entity, i, copy, source.getEntityMode());
                }
            } else if (previous instanceof Map) {
                if (!Hibernate.isInitialized(previous)) {
                    log("Skipping uninitialized map: ", propertyNames[i]);
                    persister.setPropertyValue(entity, i, previous, source.getEntityMode());
                } else {
                    Map copy = copy((Map) previous);
                    persister.setPropertyValue(entity, i, copy, source.getEntityMode());
                }
            } else {
                throw new InternalException(String.format(
                        "Invalid collection found for null " + "field %s in previous state for %s",
                        propertyNames[i], entity));
            }
        }
    }
}

From source file:org.babyfish.hibernate.persister.UncompletedInitializedProperties.java

License:Open Source License

static void update(EntityPersisterBridge entityPersisterBridge, Object[] state, Object entity, Serializable id,
        Object rowId, SessionImplementor session) {
    FieldInterceptor fieldInterceptor = FieldInterceptionHelper.extractFieldInterceptor(entity);
    if (!(fieldInterceptor instanceof HibernateObjectModelScalarLoader)) {
        return;/* w ww.  j av  a  2s .c o  m*/
    }
    HibernateObjectModelScalarLoader hibernateObjectModelScalarLoader = (HibernateObjectModelScalarLoader) fieldInterceptor;
    if (!hibernateObjectModelScalarLoader.isIncompletelyInitialized()) {
        return;
    }
    ObjectModel objectModel = hibernateObjectModelScalarLoader.getObjectModel();
    JPAObjectModelMetadata objectModelMetadata = objectModel.getObjectModelMetadata();
    EntityPersister entityPersister = entityPersisterBridge.getEntityPersister();
    String[] names = entityPersister.getPropertyNames();
    Type[] types = entityPersister.getPropertyTypes();
    boolean[] updateabilities = entityPersister.getPropertyUpdateability();

    List<Integer> updatePropertyIndexList = new ArrayList<>();
    for (int propertyIndex = 0; propertyIndex < names.length; propertyIndex++) {
        if (updateabilities[propertyIndex]) {
            Property property = objectModelMetadata.getMappingSources().get(names[propertyIndex]);
            if (property instanceof ScalarProperty) {
                ScalarProperty scalarProperty = (ScalarProperty) property;
                if (scalarProperty.isDeferrable()) {
                    int propertyId = scalarProperty.getId();
                    if (!objectModel.isDisabled(propertyId) && !objectModel.isUnloaded(propertyId)) {
                        updatePropertyIndexList.add(propertyIndex);
                    }
                }
            }
        }
    }
    if (updatePropertyIndexList.isEmpty()) {
        return;
    }
    int[] updatePropertyIndexes = new int[updatePropertyIndexList.size()];
    for (int i = updatePropertyIndexList.size() - 1; i >= 0; i--) {
        updatePropertyIndexes[i] = updatePropertyIndexList.get(i);
    }

    boolean[] tableUpdateNeeded = entityPersisterBridge.getTableUpdateNeeded(updatePropertyIndexes);
    boolean[][] propertyColumnUpdateable = entityPersisterBridge.getPropertyColumnUpdateable();
    for (int tableIndex = 0; tableIndex < entityPersisterBridge.getTableSpan(); tableIndex++) {
        if (tableUpdateNeeded[tableIndex]) {
            StringBuilder builder = new StringBuilder();
            builder.append("update ").append(entityPersisterBridge.getTableName(tableIndex)).append(" set ");
            boolean addComma = false;
            for (int propertyIndex : updatePropertyIndexes) {
                if (entityPersisterBridge.isPropertyOfTable(propertyIndex, tableIndex)) {
                    String[] columnNames = entityPersisterBridge.getPropertyColumnNames(propertyIndex);
                    for (int columnIndex = 0; columnIndex < columnNames.length; columnIndex++) {
                        if (propertyColumnUpdateable[propertyIndex][columnIndex]) {
                            if (addComma) {
                                builder.append(", ");
                            } else {
                                addComma = true;
                            }
                            builder.append(columnNames[columnIndex]).append(" = ?");
                        }
                    }
                }
            }
            if (!addComma) {
                continue;
            }
            builder.append(" where ");
            addComma = false;
            if (tableIndex == 0 && rowId != null) {
                builder.append(entityPersisterBridge.getRowIdName()).append(" = ?");
            } else {
                for (String keyColumn : entityPersisterBridge.getKeyColumns(tableIndex)) {
                    if (addComma) {
                        builder.append(", ");
                    } else {
                        addComma = true;
                    }
                    builder.append(keyColumn).append(" = ?");
                }
            }
            String sql = builder.toString();
            JdbcCoordinator jdbcCoordinator = session.getTransactionCoordinator().getJdbcCoordinator();
            PreparedStatement preparedStatement = jdbcCoordinator.getStatementPreparer().prepareStatement(sql);
            try {
                int paramIndex = 1;
                for (int propertyIndex : updatePropertyIndexes) {
                    if (entityPersisterBridge.isPropertyOfTable(propertyIndex, tableIndex)) {
                        types[propertyIndex].nullSafeSet(preparedStatement, state[propertyIndex], paramIndex,
                                propertyColumnUpdateable[propertyIndex], session);
                        paramIndex += ArrayHelper.countTrue(propertyColumnUpdateable[propertyIndex]);
                    }
                }
                if (tableIndex == 0 && rowId != null) {
                    preparedStatement.setObject(paramIndex, rowId);
                } else {
                    entityPersister.getIdentifierType().nullSafeSet(preparedStatement,
                            id != null ? id
                                    : objectModel.getScalar(objectModelMetadata.getEntityIdProperty().getId()),
                            paramIndex, session);
                }
                preparedStatement.executeUpdate();
            } catch (SQLException ex) {
                throw new HibernateException(ex);
            } finally {
                jdbcCoordinator.release(preparedStatement);
            }
        }
    }
}