details:   /erp/devel/main/rev/c4e24674dbf8
changeset: 9087: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

details:   /erp/devel/main/rev/3322e18ae878
changeset: 9088:3322e18ae878
user:      Martin Taal <martin.taal <at> openbravo.com>
date:      Thu Dec 09 18:34:01 2010 +0100
summary:   Removed unneeded method, added javadoc

details:   /erp/devel/main/rev/35c9b49515ef
changeset: 9089:35c9b49515ef
user:      RM packaging bot <staff.rm <at> openbravo.com>
date:      Fri Dec 10 06:35:55 2010 +0000
summary:   CI: promote changesets from pi to main

diffstat:

 src-db/database/sourcedata/AD_MODULE.xml   |   4 +-
 src/org/openbravo/dal/service/OBQuery.java |  32 ++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 2 deletions(-)

diffs (63 lines):

diff -r 79e55dfc8af0 -r 35c9b49515ef src-db/database/sourcedata/AD_MODULE.xml
--- a/src-db/database/sourcedata/AD_MODULE.xml  Thu Dec 09 09:43:14 2010 +0100
+++ b/src-db/database/sourcedata/AD_MODULE.xml  Fri Dec 10 06:35:55 2010 +0000
@@ -6,7 +6,7 @@
 <!--0-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--0-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--0-->  <NAME><![CDATA[Core]]></NAME>
-<!--0-->  <VERSION><![CDATA[2.50.19053]]></VERSION>
+<!--0-->  <VERSION><![CDATA[2.50.19088]]></VERSION>
 <!--0-->  <DESCRIPTION><![CDATA[Core module is the base one]]></DESCRIPTION>
 <!--0-->  <HELP><![CDATA[Core module is the base one, all developments in core 
are included as part of the standard Openbravo ERP.]]></HELP>
 <!--0-->  <URL><![CDATA[www.openbravo.com]]></URL>
@@ -22,7 +22,7 @@
 <!--0-->  <ISTRANSLATIONMODULE><![CDATA[N]]></ISTRANSLATIONMODULE>
 <!--0-->  <HASREFERENCEDATA><![CDATA[Y]]></HASREFERENCEDATA>
 <!--0-->  <REFERENCEDATAINFO><![CDATA[Standard document types for orders, 
invoices, etc. and settings]]></REFERENCEDATAINFO>
-<!--0-->  <VERSION_LABEL><![CDATA[dev]]></VERSION_LABEL>
+<!--0-->  <VERSION_LABEL><![CDATA[CI]]></VERSION_LABEL>
 <!--0-->  <ISCOMMERCIAL><![CDATA[N]]></ISCOMMERCIAL>
 <!--0--></AD_MODULE>
 
diff -r 79e55dfc8af0 -r 35c9b49515ef 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        Fri Dec 10 06:35:55 
2010 +0000
@@ -151,6 +151,38 @@
     return ((Number) qry.uniqueResult()).intValue();
   }
 
+  /**
+   * Computes the row number of a record which has the id which is passed in 
as a parameter. The
+   * rownumber computation takes into account the filter and sorting settings 
of the the OBQuery
+   * object.
+   * 
+   * @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

Reply via email to