details: /erp/devel/pi/rev/c4e24674dbf8
changeset: 9073:c4e24674dbf8
user: Martin Taal <martin.taal <at> openbravo.com>
date: Thu Dec 09 18:25:07 2010 +0100
summary: Added logic to compute the row number for a given record id
diffstat:
src/org/openbravo/dal/service/OBQuery.java | 38 ++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
diffs (55 lines):
diff -r 79e55dfc8af0 -r c4e24674dbf8 src/org/openbravo/dal/service/OBQuery.java
--- a/src/org/openbravo/dal/service/OBQuery.java Thu Dec 09 09:43:14
2010 +0100
+++ b/src/org/openbravo/dal/service/OBQuery.java Thu Dec 09 18:25:07
2010 +0100
@@ -123,6 +123,14 @@
}
/**
+ * @return the underlying hibernate query object which provides an
additional api (for example
+ * scroll).
+ */
+ public Query createHibernateQuery() {
+ return createQuery();
+ }
+
+ /**
* Makes it possible to get a {...@link ScrollableResults} from the
underlying Query object.
*
* @param scrollMode
@@ -151,6 +159,36 @@
return ((Number) qry.uniqueResult()).intValue();
}
+ /**
+ * Computes the row number of a record which has the id which is passed in
as a parameter.
+ *
+ * @param targetId
+ * the record id
+ * @return the row number or -1 if not found
+ */
+ public int getRowNumber(String targetId) {
+ String qryStr = createQueryString();
+ if (qryStr.toLowerCase().contains(FROM_SPACED)) {
+ final int index = qryStr.indexOf(FROM_SPACED) + FROM_SPACED.length();
+ qryStr = qryStr.substring(index);
+ }
+ final Query qry = getSession().createQuery("select id " + FROM_SPACED +
qryStr);
+ setParameters(qry);
+
+ final ScrollableResults results = qry.scroll(ScrollMode.FORWARD_ONLY);
+ try {
+ while (results.next()) {
+ final String id = results.getString(0);
+ if (id.equals(targetId)) {
+ return results.getRowNumber();
+ }
+ }
+ } finally {
+ results.close();
+ }
+ return -1;
+ }
+
private String stripOrderBy(String qryStr) {
if (qryStr.toLowerCase().indexOf(ORDERBY) != -1) {
return qryStr.substring(0, qryStr.toLowerCase().indexOf(ORDERBY));
------------------------------------------------------------------------------
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits