|
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.
|