From: <gca...@us...> - 2012-07-02 12:44:10
|
Revision: 4087 http://openutils.svn.sourceforge.net/openutils/?rev=4087&view=rev Author: gcatania Date: 2012-07-02 12:44:01 +0000 (Mon, 02 Jul 2012) Log Message: ----------- BSHD-11 also fixed in FilterMetadataSupport Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2012-06-29 16:59:49 UTC (rev 4086) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2012-07-02 12:44:01 UTC (rev 4087) @@ -45,8 +45,6 @@ import org.hibernate.criterion.Example; import org.hibernate.criterion.Example.PropertySelector; import org.hibernate.criterion.MatchMode; -import org.hibernate.criterion.Restrictions; -import org.hibernate.engine.SessionImplementor; import org.hibernate.metadata.ClassMetadata; import org.hibernate.type.Type; @@ -265,7 +263,7 @@ } ClassMetadata classMetadata = sessionFactory.getClassMetadata(Hibernate.getClass(entity)); - addIdentifierRestriction(crit, entity, classMetadata); // BSHD-11 + ExampleTreeUtils.addIdentifierRestriction(crit, entity, classMetadata, sessionFactory.getCurrentSession()); // BSHD-11 Type[] types = classMetadata.getPropertyTypes(); String[] names = classMetadata.getPropertyNames(); @@ -300,25 +298,6 @@ } } - /* - * BSHD-11 - */ - private void addIdentifierRestriction(Criteria crit, Object entity, ClassMetadata classMetadata) - { - String identifierName = classMetadata.getIdentifierPropertyName(); - if (identifierName != null) - { - // TODO is this cast really necessary? Will it fail in future hibernate versions? - SessionImplementor si = (SessionImplementor) sessionFactory.getCurrentSession(); - - Object idValue = classMetadata.getIdentifier(entity, si); - if (idValue != null) // TODO should we use property selectors instead? - { - crit.add(Restrictions.idEq(idValue)); - } - } - } - private Example example(Object entity, String associationPath) { Example ex = Example.create(entity); Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java 2012-06-29 16:59:49 UTC (rev 4086) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java 2012-07-02 12:44:01 UTC (rev 4087) @@ -30,6 +30,11 @@ import java.util.Collection; import org.apache.commons.lang3.StringUtils; +import org.hibernate.Criteria; +import org.hibernate.Session; +import org.hibernate.criterion.Restrictions; +import org.hibernate.engine.SessionImplementor; +import org.hibernate.metadata.ClassMetadata; /** @@ -144,4 +149,28 @@ return propertyNames.length > 0 ? StringUtils.join(propertyNames, '.') : StringUtils.EMPTY; } + /** + * adds the identifier restriction to the input criteria, if required + * @param crit the criteria + * @param entity the entity to use as example + * @param classMetadata the class metadata to use + * @param ses the current session + * @see BSHD-11 + */ + public static void addIdentifierRestriction(Criteria crit, Object entity, ClassMetadata classMetadata, Session ses) + { + String identifierName = classMetadata.getIdentifierPropertyName(); + if (identifierName != null) + { + // TODO is this cast really necessary? Will it fail in future hibernate versions? + SessionImplementor si = (SessionImplementor) ses; + + Object idValue = classMetadata.getIdentifier(entity, si); + if (idValue != null) // TODO should we use property selectors instead? + { + crit.add(Restrictions.idEq(idValue)); + } + } + } + } Modified: trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2012-06-29 16:59:49 UTC (rev 4086) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2012-07-02 12:44:01 UTC (rev 4087) @@ -116,6 +116,9 @@ Map<String, FilterMetadata> currFilterMetadata = getFilterMetadata(path); crit.add(example(entity, currFilterMetadata.keySet())); ClassMetadata classMetadata = sessionFactory.getClassMetadata(Hibernate.getClass(entity)); + + ExampleTreeUtils.addIdentifierRestriction(crit, entity, classMetadata, sessionFactory.getCurrentSession()); // BSHD-11 + Type[] types = classMetadata.getPropertyTypes(); String[] names = classMetadata.getPropertyNames(); for (int i = 0; i < types.length; i++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |