details:   /erp/devel/pi/rev/8a6fc6fe95f8
changeset: 7604:8a6fc6fe95f8
user:      Stefan Hühner <stefan.huehner <at> openbravo.com>
date:      Mon Jun 14 18:42:55 2010 +0200
summary:   Issue 12981: Fix formatting

details:   /erp/devel/pi/rev/713673c0d94d
changeset: 7605:713673c0d94d
user:      Stefan Hühner <stefan.huehner <at> openbravo.com>
date:      Mon Jun 14 18:46:15 2010 +0200
summary:   Fixed 12981: Fix selecting multiple records with special characters 
in data
Code change to add xml-cdata to the id#rowkey output of the getIdsInRange
request as the rowkey part of this reponse can contain special characters
like '&'.

diffstat:

 src/org/openbravo/erpCommon/info/BusinessPartnerMultiple.java |  36 +++--
 src/org/openbravo/erpCommon/info/ProductMultiple.java         |  35 +++--
 src/org/openbravo/erpCommon/info/ProjectMultiple.java         |  68 ++++++----
 3 files changed, 76 insertions(+), 63 deletions(-)

diffs (truncated from 317 to 300 lines):

diff -r 37271534c60d -r 713673c0d94d 
src/org/openbravo/erpCommon/info/BusinessPartnerMultiple.java
--- a/src/org/openbravo/erpCommon/info/BusinessPartnerMultiple.java     Mon Jun 
14 16:18:28 2010 +0200
+++ b/src/org/openbravo/erpCommon/info/BusinessPartnerMultiple.java     Mon Jun 
14 18:46:15 2010 +0200
@@ -215,27 +215,27 @@
         String strOrderBy = SelectorUtility.buildOrderByClause(strOrderCols, 
strOrderDirs);
         page = TableSQLData.calcAndGetBackendPage(vars, 
"BusinessPartnerData.currentPage");
         if (vars.getStringParameter("movePage", "").length() > 0) {
-               // on movePage action force executing countRows again
-               strNewFilter = "";
+          // on movePage action force executing countRows again
+          strNewFilter = "";
         }
         int oldOffset = offset;
         offset = (page * TableSQLData.maxRowsPerGridPage) + offset;
         log4j.debug("relativeOffset: " + oldOffset + " absoluteOffset: " + 
offset);
         // New filter or first load
         if (strNewFilter.equals("1") || strNewFilter.equals("")) {
-                String rownum = "0", oraLimit1 = null, oraLimit2 = null, 
pgLimit = null;
-                if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
-                        oraLimit1 = String.valueOf(offset + 
TableSQLData.maxRowsPerGridPage);
-                        oraLimit2 = (offset + 1) + " AND " + oraLimit1;
-                        rownum = "ROWNUM";
-                } else {
-                        pgLimit = TableSQLData.maxRowsPerGridPage + " OFFSET " 
+ offset;
-                }
-          strNumRows = BusinessPartnerMultipleData.countRows(this,rownum, 
Utility.getContext(this, vars,
-              "#User_Client", "BusinessPartner"), Utility.getContext(this, 
vars,
+          String rownum = "0", oraLimit1 = null, oraLimit2 = null, pgLimit = 
null;
+          if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
+            oraLimit1 = String.valueOf(offset + 
TableSQLData.maxRowsPerGridPage);
+            oraLimit2 = (offset + 1) + " AND " + oraLimit1;
+            rownum = "ROWNUM";
+          } else {
+            pgLimit = TableSQLData.maxRowsPerGridPage + " OFFSET " + offset;
+          }
+          strNumRows = BusinessPartnerMultipleData.countRows(this, rownum, 
Utility.getContext(this,
+              vars, "#User_Client", "BusinessPartner"), 
Utility.getContext(this, vars,
               "#AccessibleOrgTree", "BusinessPartner"), strKey, strName, 
strContact, strZIP,
               strProvincia, (strBpartners.equals("costumer") ? "clients" : 
""), (strBpartners
-                  .equals("vendor") ? "vendors" : ""), strCity,pgLimit, 
oraLimit1, oraLimit2);
+                  .equals("vendor") ? "vendors" : ""), strCity, pgLimit, 
oraLimit1, oraLimit2);
           vars.setSessionValue("BusinessPartnerMultipleInfo.numrows", 
strNumRows);
         } else {
           strNumRows = 
vars.getSessionValue("BusinessPartnerMultipleInfo.numrows");
@@ -302,7 +302,8 @@
     strRowsData.append("    <title>").append(title).append("</title>\n");
     strRowsData.append("    
<description>").append(description).append("</description>\n");
     strRowsData.append("  </status>\n");
-    strRowsData.append("  <rows numRows=\"").append(strNumRows).append("\" 
backendPage=\"" + page + "\">\n");
+    strRowsData.append("  <rows numRows=\"").append(strNumRows).append(
+        "\" backendPage=\"" + page + "\">\n");
     if (data != null && data.length > 0) {
       for (int j = 0; j < data.length; j++) {
         strRowsData.append("    <tr>\n");
@@ -369,13 +370,13 @@
       String strOrderBy = SelectorUtility.buildOrderByClause(strOrderCols, 
strOrderDirs);
       String strPage = vars.getSessionValue("ProductMultiple|currentPage", 
"0");
       int page = Integer.valueOf(strPage);
-      
+
       int oldMinOffset = minOffset;
       int oldMaxOffset = maxOffset;
       minOffset = (page * TableSQLData.maxRowsPerGridPage) + minOffset;
       maxOffset = (page * TableSQLData.maxRowsPerGridPage) + maxOffset;
       log4j.debug("relativeMinOffset: " + oldMinOffset + " absoluteMinOffset: 
" + minOffset);
-      log4j.debug("relativeMaxOffset: " + oldMaxOffset + " absoluteMaxOffset: 
" + maxOffset); 
+      log4j.debug("relativeMaxOffset: " + oldMaxOffset + " absoluteMaxOffset: 
" + maxOffset);
       // Filtering result
       if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
         String oraLimit1 = String.valueOf(maxOffset);
@@ -400,7 +401,8 @@
       res = new FieldProvider[data.length];
       for (int i = 0; i < data.length; i++) {
         SQLReturnObject sqlReturnObject = new SQLReturnObject();
-        sqlReturnObject.setData("id", data[i].getField("rowkey"));
+        String resValue = "<![CDATA[" + data[i].getField("rowkey") + "]]>";
+        sqlReturnObject.setData("id", resValue);
         res[i] = sqlReturnObject;
       }
     } catch (Exception e) {
diff -r 37271534c60d -r 713673c0d94d 
src/org/openbravo/erpCommon/info/ProductMultiple.java
--- a/src/org/openbravo/erpCommon/info/ProductMultiple.java     Mon Jun 14 
16:18:28 2010 +0200
+++ b/src/org/openbravo/erpCommon/info/ProductMultiple.java     Mon Jun 14 
18:46:15 2010 +0200
@@ -213,8 +213,8 @@
         String strOrderBy = SelectorUtility.buildOrderByClause(strOrderCols, 
strOrderDirs);
         page = TableSQLData.calcAndGetBackendPage(vars, 
"ProjectData.currentPage");
         if (vars.getStringParameter("movePage", "").length() > 0) {
-               // on movePage action force executing countRows again
-               strNewFilter = "";
+          // on movePage action force executing countRows again
+          strNewFilter = "";
         }
         int oldOffset = offset;
         offset = (page * TableSQLData.maxRowsPerGridPage) + offset;
@@ -224,17 +224,18 @@
           // or
           // first
           // load
-                String rownum = "0", oraLimit1 = null, oraLimit2 = null, 
pgLimit = null;
-                if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
-                        oraLimit1 = String.valueOf(offset + 
TableSQLData.maxRowsPerGridPage);
-                        oraLimit2 = (offset + 1) + " AND " + oraLimit1;
-                        rownum = "ROWNUM";
-                } else {
-                        pgLimit = TableSQLData.maxRowsPerGridPage + " OFFSET " 
+ offset;
-                }
-          strNumRows = ProductMultipleData.countRows(this,rownum, strKey, 
strName, strProductCategory,
+          String rownum = "0", oraLimit1 = null, oraLimit2 = null, pgLimit = 
null;
+          if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
+            oraLimit1 = String.valueOf(offset + 
TableSQLData.maxRowsPerGridPage);
+            oraLimit2 = (offset + 1) + " AND " + oraLimit1;
+            rownum = "ROWNUM";
+          } else {
+            pgLimit = TableSQLData.maxRowsPerGridPage + " OFFSET " + offset;
+          }
+          strNumRows = ProductMultipleData.countRows(this, rownum, strKey, 
strName,
+              strProductCategory,
               Utility.getContext(this, vars, "#User_Client", 
"ProductMultiple"), Utility
-                  .getSelectorOrgs(this, vars, strOrg),pgLimit, oraLimit1, 
oraLimit2);
+                  .getSelectorOrgs(this, vars, strOrg), pgLimit, oraLimit1, 
oraLimit2);
           vars.setSessionValue("BusinessPartnerInfo.numrows", strNumRows);
         } else {
           strNumRows = vars.getSessionValue("BusinessPartnerInfo.numrows");
@@ -294,7 +295,8 @@
     strRowsData.append("    <title>").append(title).append("</title>\n");
     strRowsData.append("    
<description>").append(description).append("</description>\n");
     strRowsData.append("  </status>\n");
-    strRowsData.append("  <rows numRows=\"").append(strNumRows).append("\" 
backendPage=\"" + page + "\">\n");
+    strRowsData.append("  <rows numRows=\"").append(strNumRows).append(
+        "\" backendPage=\"" + page + "\">\n");
     if (data != null && data.length > 0) {
       for (int j = 0; j < data.length; j++) {
         strRowsData.append("    <tr>\n");
@@ -354,13 +356,13 @@
       String strOrderBy = SelectorUtility.buildOrderByClause(strOrderCols, 
strOrderDirs);
       String strPage = vars.getSessionValue("ProductMultiple|currentPage", 
"0");
       int page = Integer.valueOf(strPage);
-      
+
       int oldMinOffset = minOffset;
       int oldMaxOffset = maxOffset;
       minOffset = (page * TableSQLData.maxRowsPerGridPage) + minOffset;
       maxOffset = (page * TableSQLData.maxRowsPerGridPage) + maxOffset;
       log4j.debug("relativeMinOffset: " + oldMinOffset + " absoluteMinOffset: 
" + minOffset);
-      log4j.debug("relativeMaxOffset: " + oldMaxOffset + " absoluteMaxOffset: 
" + maxOffset); 
+      log4j.debug("relativeMaxOffset: " + oldMaxOffset + " absoluteMaxOffset: 
" + maxOffset);
       // Filtering result
       if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
         String oraLimit1 = String.valueOf(maxOffset);
@@ -382,7 +384,8 @@
       res = new FieldProvider[data.length];
       for (int i = 0; i < data.length; i++) {
         SQLReturnObject sqlReturnObject = new SQLReturnObject();
-        sqlReturnObject.setData("id", data[i].getField("rowkey"));
+        String resValue = "<![CDATA[" + data[i].getField("rowkey") + "]]>";
+        sqlReturnObject.setData("id", resValue);
         res[i] = sqlReturnObject;
       }
     } catch (Exception e) {
diff -r 37271534c60d -r 713673c0d94d 
src/org/openbravo/erpCommon/info/ProjectMultiple.java
--- a/src/org/openbravo/erpCommon/info/ProjectMultiple.java     Mon Jun 14 
16:18:28 2010 +0200
+++ b/src/org/openbravo/erpCommon/info/ProjectMultiple.java     Mon Jun 14 
18:46:15 2010 +0200
@@ -32,7 +32,6 @@
 import org.openbravo.base.secureApp.HttpSecureAppServlet;
 import org.openbravo.base.secureApp.VariablesSecureApp;
 import org.openbravo.data.FieldProvider;
-import org.openbravo.erpCommon.utility.ComboTableData;
 import org.openbravo.erpCommon.utility.OBError;
 import org.openbravo.erpCommon.utility.SQLReturnObject;
 import org.openbravo.erpCommon.utility.TableSQLData;
@@ -86,10 +85,11 @@
       String strSortDirs = vars.getInStringParameter("sort_dirs", 
directionFilter);
 
       if (action.equalsIgnoreCase("getRows")) { // Asking for data rows
-        printGridData(response, vars, strKey, strName, strOrg, strSortCols, 
strSortDirs, strOffset, strPageSize, strNewFilter);
+        printGridData(response, vars, strKey, strName, strOrg, strSortCols, 
strSortDirs, strOffset,
+            strPageSize, strNewFilter);
       } else if (action.equalsIgnoreCase("getIdsInRange")) {
         // asking for selected rows
-        printGridDataSelectedRows(response, vars, strKey, strName,  strOrg, 
strSortCols, strSortDirs);
+        printGridDataSelectedRows(response, vars, strKey, strName, strOrg, 
strSortCols, strSortDirs);
       } else {
         throw new ServletException("Unimplemented action in DATA request: " + 
action);
       }
@@ -170,8 +170,8 @@
   }
 
   private void printGridData(HttpServletResponse response, VariablesSecureApp 
vars, String strKey,
-      String strName, String strOrg, String strOrderCols, String strOrderDirs, 
String strOffset, String strPageSize, String strNewFilter)
-      throws IOException, ServletException {
+      String strName, String strOrg, String strOrderCols, String strOrderDirs, 
String strOffset,
+      String strPageSize, String strNewFilter) throws IOException, 
ServletException {
     if (log4j.isDebugEnabled())
       log4j.debug("Output: print page rows");
     int page = 0;
@@ -190,8 +190,8 @@
         String strOrderBy = SelectorUtility.buildOrderByClause(strOrderCols, 
strOrderDirs);
         page = TableSQLData.calcAndGetBackendPage(vars, 
"BusinessPartnerData.currentPage");
         if (vars.getStringParameter("movePage", "").length() > 0) {
-               // on movePage action force executing countRows again
-               strNewFilter = "";
+          // on movePage action force executing countRows again
+          strNewFilter = "";
         }
         int oldOffset = offset;
         offset = (page * TableSQLData.maxRowsPerGridPage) + offset;
@@ -201,16 +201,17 @@
           // or
           // first
           // load
-               String rownum = "0", oraLimit1 = null, oraLimit2 = null, 
pgLimit = null;
-               if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
-                       oraLimit1 = String.valueOf(offset + 
TableSQLData.maxRowsPerGridPage);
-                       oraLimit2 = (offset + 1) + " AND " + oraLimit1;
-                       rownum = "ROWNUM";
-               } else {
-                       pgLimit = TableSQLData.maxRowsPerGridPage + " OFFSET " 
+ offset;
-               }
-          strNumRows = ProjectMultipleData.countRows(this,rownum, strKey, 
strName, Utility.getContext(this, vars, "#User_Client", "ProjectMultiple"), 
Utility
-                  .getSelectorOrgs(this, vars, strOrg),pgLimit, oraLimit1, 
oraLimit2);
+          String rownum = "0", oraLimit1 = null, oraLimit2 = null, pgLimit = 
null;
+          if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
+            oraLimit1 = String.valueOf(offset + 
TableSQLData.maxRowsPerGridPage);
+            oraLimit2 = (offset + 1) + " AND " + oraLimit1;
+            rownum = "ROWNUM";
+          } else {
+            pgLimit = TableSQLData.maxRowsPerGridPage + " OFFSET " + offset;
+          }
+          strNumRows = ProjectMultipleData.countRows(this, rownum, strKey, 
strName, Utility
+              .getContext(this, vars, "#User_Client", "ProjectMultiple"), 
Utility.getSelectorOrgs(
+              this, vars, strOrg), pgLimit, oraLimit1, oraLimit2);
           vars.setSessionValue("ProjectInfo.numrows", strNumRows);
         } else {
           strNumRows = vars.getSessionValue("ProjectInfo.numrows");
@@ -220,12 +221,14 @@
         if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
           String oraLimit1 = String.valueOf(offset + pageSize);
           String oraLimit2 = (offset + 1) + " AND " + oraLimit1;
-          data = ProjectMultipleData.select(this, "ROWNUM", strKey, strName, 
Utility.getContext(this, vars, "#User_Client", "ProjectMultiple"), Utility
-                  .getSelectorOrgs(this, vars, strOrg), strOrderBy, "", 
oraLimit1, oraLimit2);
+          data = ProjectMultipleData.select(this, "ROWNUM", strKey, strName, 
Utility.getContext(
+              this, vars, "#User_Client", "ProjectMultiple"), 
Utility.getSelectorOrgs(this, vars,
+              strOrg), strOrderBy, "", oraLimit1, oraLimit2);
         } else {
           String pgLimit = pageSize + " OFFSET " + offset;
-          data = ProjectMultipleData.select(this, "1", strKey, strName, 
Utility.getContext(this, vars, "#User_Client", "ProjectMultiple"), 
Utility.getSelectorOrgs(
-              this, vars, strOrg), strOrderBy, pgLimit, "", "");
+          data = ProjectMultipleData.select(this, "1", strKey, strName, 
Utility.getContext(this,
+              vars, "#User_Client", "ProjectMultiple"),
+              Utility.getSelectorOrgs(this, vars, strOrg), strOrderBy, 
pgLimit, "", "");
         }
       } catch (ServletException e) {
         log4j.error("Error in print page data: " + e);
@@ -268,7 +271,8 @@
     strRowsData.append("    <title>").append(title).append("</title>\n");
     strRowsData.append("    
<description>").append(description).append("</description>\n");
     strRowsData.append("  </status>\n");
-    strRowsData.append("  <rows numRows=\"").append(strNumRows).append("\" 
backendPage=\"" + page + "\">\n");
+    strRowsData.append("  <rows numRows=\"").append(strNumRows).append(
+        "\" backendPage=\"" + page + "\">\n");
     if (data != null && data.length > 0) {
       for (int j = 0; j < data.length; j++) {
         strRowsData.append("    <tr>\n");
@@ -313,7 +317,8 @@
    * 
    */
   private void printGridDataSelectedRows(HttpServletResponse response, 
VariablesSecureApp vars,
-      String strKey, String strName, String strOrg, String strOrderCols, 
String strOrderDirs) throws IOException, ServletException {
+      String strKey, String strName, String strOrg, String strOrderCols, 
String strOrderDirs)
+      throws IOException, ServletException {
     int minOffset = new 
Integer(vars.getStringParameter("minOffset")).intValue();
     int maxOffset = new 
Integer(vars.getStringParameter("maxOffset")).intValue();
     log4j.debug("Output: print page ids, minOffset: " + minOffset + ", 
maxOffset: " + maxOffset);
@@ -327,25 +332,27 @@
       String strOrderBy = SelectorUtility.buildOrderByClause(strOrderCols, 
strOrderDirs);
       String strPage = vars.getSessionValue("ProductMultiple|currentPage", 
"0");
       int page = Integer.valueOf(strPage);
-      
+
       int oldMinOffset = minOffset;
       int oldMaxOffset = maxOffset;
       minOffset = (page * TableSQLData.maxRowsPerGridPage) + minOffset;
       maxOffset = (page * TableSQLData.maxRowsPerGridPage) + maxOffset;
       log4j.debug("relativeMinOffset: " + oldMinOffset + " absoluteMinOffset: 
" + minOffset);
-      log4j.debug("relativeMaxOffset: " + oldMaxOffset + " absoluteMaxOffset: 
" + maxOffset); 
+      log4j.debug("relativeMaxOffset: " + oldMaxOffset + " absoluteMaxOffset: 
" + maxOffset);
       // Filtering result
       if (this.myPool.getRDBMS().equalsIgnoreCase("ORACLE")) {
         String oraLimit1 = String.valueOf(maxOffset);
         String oraLimit2 = (minOffset + 1) + " AND " + oraLimit1;
-        data = ProjectMultipleData.select(this, "ROWNUM", strKey, strName, 
Utility.getContext(this, vars, "#User_Client", "ProjectMultiple"), Utility
-                .getSelectorOrgs(this, vars, strOrg), strOrderBy, "", 
oraLimit1, oraLimit2);
+        data = ProjectMultipleData.select(this, "ROWNUM", strKey, strName, 
Utility.getContext(this,
+            vars, "#User_Client", "ProjectMultiple"), 
Utility.getSelectorOrgs(this, vars, strOrg),
+            strOrderBy, "", oraLimit1, oraLimit2);
       } else {
         // minOffset and maxOffset are zero based so pageSize is difference +1
         int pageSize = maxOffset - minOffset + 1;
         String pgLimit = pageSize + " OFFSET " + minOffset;
-        data = ProjectMultipleData.select(this, "1", strKey, strName, 
Utility.getContext(this, vars, "#User_Client", "ProjectMultiple"), 
Utility.getSelectorOrgs(

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to