From: <gca...@us...> - 2014-05-22 09:21:03
|
Revision: 4572 http://openutils.svn.sourceforge.net/openutils/?rev=4572&view=rev Author: gcatania Date: 2014-05-22 09:20:59 +0000 (Thu, 22 May 2014) Log Message: ----------- BSHD-21 fix performance problems with find filtered first Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2014-05-21 19:28:04 UTC (rev 4571) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2014-05-22 09:20:59 UTC (rev 4572) @@ -29,7 +29,6 @@ import it.openutils.hibernate.example.FilterMetadataSupport; import java.io.Serializable; -import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; @@ -269,7 +268,7 @@ */ public T findFilteredFirst(T filter) { - return getFirstInCollection(findFiltered(filter)); + return findFilteredFirst(defaultExample(filter)); } /** @@ -277,7 +276,7 @@ */ public T findFilteredFirst(ExampleTree exampleTree) { - return getFirstInCollection(findFiltered(exampleTree)); + return findFilteredFirst(exampleTree, new Order[0]); } /** @@ -285,25 +284,32 @@ */ public T findFilteredFirst(T filter, final Order... orders) { - return getFirstInCollection(findFiltered(filter, orders)); + return findFilteredFirst(defaultExample(filter), orders); } /** * {@inheritDoc} */ - public T findFilteredFirst(ExampleTree exampleTree, final Order... orders) + public T findFilteredFirst(T filter, List< ? extends Criterion> criteria) { - return getFirstInCollection(findFiltered(exampleTree, orders)); + ExampleTree exampleTree = defaultExample(filter); + appendToRoot(exampleTree, criteria); + return findFilteredFirst(exampleTree, new Order[0]); } /** * {@inheritDoc} */ - public T findFilteredFirst(T filter, List< ? extends Criterion> criteria) + public T findFilteredFirst(ExampleTree exampleTree, final Order... orders) { - ExampleTree exampleTree = defaultExample(filter); - appendToRoot(exampleTree, criteria); - return getFirstInCollection(getThis().findFiltered(exampleTree, Integer.MAX_VALUE, 0, getDefaultOrder())); + List<T> found = getThis().findFiltered(exampleTree, 1, 0, orders); + if (found.isEmpty()) + { + return null; + } + T result = found.get(0); + Hibernate.initialize(result); + return result; } /** @@ -665,22 +671,6 @@ } /** - * Returns the first object in the collection or null if the collection is null or empty. - * @param list collection - * @return first element in the list - */ - private T getFirstInCollection(Collection< ? extends T> list) - { - if (list != null && !list.isEmpty()) - { - T result = list.iterator().next(); - Hibernate.initialize(result); - return result; - } - return null; - } - - /** * appends the input criterions to the input example tree as root entity criterions * @param exampleTree the example tree * @param criterions the criterions to append This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |