From: <gca...@us...> - 2013-03-12 09:07:06
|
Revision: 4201 http://openutils.svn.sourceforge.net/openutils/?rev=4201&view=rev Author: gcatania Date: 2013-03-12 09:06:55 +0000 (Tue, 12 Mar 2013) Log Message: ----------- BSHD-20 make identifier restrictions alternative to examples and filter metadata 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 2013-03-12 08:58:39 UTC (rev 4200) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTree.java 2013-03-12 09:06:55 UTC (rev 4201) @@ -251,6 +251,18 @@ private void createSubExamples(Criteria crit, Object entity, String[] walkedProperties) { + ClassMetadata classMetadata = ExampleTreeUtils.getClassMetadata(entity, sessionFactory); + boolean isIdSet = ExampleTreeUtils.addIdentifierRestriction( + crit, + entity, + classMetadata, + sessionFactory.getCurrentSession()); // BSHD-11 + if (isIdSet) + { + // BSHD-20 if the identifier is set on a property, do not impose further conditions + return; + } + String associationPath = ExampleTreeUtils.getPath(walkedProperties); crit.add(example(entity, associationPath)); for (Criterion c : getAdditionalConditions(associationPath)) @@ -258,8 +270,6 @@ crit.add(c); } - ClassMetadata classMetadata = ExampleTreeUtils.getClassMetadata(entity, sessionFactory); - 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++) 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 2013-03-12 08:58:39 UTC (rev 4200) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/ExampleTreeUtils.java 2013-03-12 09:06:55 UTC (rev 4201) @@ -177,9 +177,11 @@ * @param entity the entity to use as example * @param classMetadata the class metadata to use * @param ses the current session - * @see BSHD-11 + * @return true if the identifier restriction has been added, false otherwise + * @see BSHD-11, BSHD-20 */ - public static void addIdentifierRestriction(Criteria crit, Object entity, ClassMetadata classMetadata, Session ses) + public static boolean addIdentifierRestriction(Criteria crit, Object entity, ClassMetadata classMetadata, + Session ses) { String identifierName = classMetadata.getIdentifierPropertyName(); if (identifierName != null) @@ -191,8 +193,10 @@ if (idValue != null) // TODO should we use property selectors instead? { crit.add(Restrictions.idEq(idValue)); + return true; } } + return false; } } 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 2013-03-12 08:58:39 UTC (rev 4200) +++ trunk/openutils-bshd5/src/main/java/it/openutils/hibernate/example/FilterMetadataSupport.java 2013-03-12 09:06:55 UTC (rev 4201) @@ -108,12 +108,22 @@ private void createSubExamples(Criteria crit, Object entity, String[] walkedProperties) { + ClassMetadata classMetadata = ExampleTreeUtils.getClassMetadata(entity, sessionFactory); + boolean isIdSet = ExampleTreeUtils.addIdentifierRestriction( + crit, + entity, + classMetadata, + sessionFactory.getCurrentSession()); // BSHD-11 + if (isIdSet) + { + // BSHD-20 if the identifier is set on a property, do not impose further conditions + return; + } + String path = ExampleTreeUtils.getPath(walkedProperties); Map<String, FilterMetadata> currFilterMetadata = getFilterMetadata(path); crit.add(example(entity, currFilterMetadata.keySet())); - ClassMetadata classMetadata = ExampleTreeUtils.getClassMetadata(entity, sessionFactory); - 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. |