List of usage examples for org.hibernate.persister.entity EntityPersister getPropertyNames
String[] getPropertyNames();
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); } } } }