You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2008/06/15 08:27:16 UTC
svn commit: r667930 - in /ofbiz/trunk:
applications/accounting/src/org/ofbiz/accounting/
applications/content/src/org/ofbiz/content/content/
applications/order/src/org/ofbiz/order/shoppingcart/
framework/base/src/base/org/ofbiz/base/util/ framework/web...
Author: jacopoc
Date: Sat Jun 14 23:27:15 2008
New Revision: 667930
URL: http://svn.apache.org/viewvc?rev=667930&view=rev
Log:
Added support for the skip-end attribute to form widgets of type "multi": now it is easier to add "global" form parameters to multi forms by concatenating a single form to a multi form with skip-end set to true.
Modified the way submitted multi form rows are counted: now the hidden _rowCount field in the form is no more needed because rows are counted in the ServiceMultiEventHandler (using the util methods that I have implemented in the UtilHttp class).
Modified:
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/GlEvents.java
ofbiz/trunk/applications/content/src/org/ofbiz/content/content/UploadContentAndImage.java
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartEvents.java
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/ServiceMultiEventHandler.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/GlEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/GlEvents.java?rev=667930&r1=667929&r2=667930&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/GlEvents.java (original)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/GlEvents.java Sat Jun 14 23:27:15 2008
@@ -36,6 +36,7 @@
import org.ofbiz.service.LocalDispatcher;
import org.ofbiz.service.ServiceUtil;
import org.ofbiz.service.GenericServiceException;
+import org.ofbiz.webapp.event.EventHandlerException;
public class GlEvents {
@@ -52,10 +53,8 @@
double reconciledBalance = 0.00;
boolean isSelected;
String debitCreditFlag;
- int rowCount = 0;
- if (ctx.containsKey("_rowCount")) {
- rowCount = Integer.parseInt((String)ctx.get("_rowCount")); //get the number of rows
- }
+ // The number of multi form rows is retrieved
+ int rowCount = UtilHttp.getMultiFormRowCount(ctx);
for (int i = 0; i < rowCount; i++) { //for calculating amount per glAccountId
double amount = 0.00;
String suffix = UtilHttp.MULTI_ROW_DELIMITER + i;
Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/content/UploadContentAndImage.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/content/UploadContentAndImage.java?rev=667930&r1=667929&r2=667930&view=diff
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/content/UploadContentAndImage.java (original)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/content/UploadContentAndImage.java Sat Jun 14 23:27:15 2008
@@ -386,11 +386,11 @@
}
if (Debug.infoOn()) Debug.logInfo("[UploadContentAndImage]passedParams: " + passedParams, module);
- String strRowCount = (String)passedParams.get("_rowCount");
- if (UtilValidate.isEmpty(strRowCount)) {
- strRowCount = "1";
+ // The number of multi form rows is retrieved
+ int rowCount = UtilHttp.getMultiFormRowCount(request);
+ if (rowCount < 1) {
+ rowCount = 1;
}
- int rowCount = Integer.parseInt(strRowCount);
TransactionUtil.begin();
for (int i=0; i < rowCount; i++) {
String suffix = "_o_" + i;
Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartEvents.java?rev=667930&r1=667929&r2=667930&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartEvents.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartEvents.java Sat Jun 14 23:27:15 2008
@@ -1700,10 +1700,6 @@
String itemType = null;
String itemDescription = "";
- String rowCountField = null;
- int rowCount = 0; // number of rows of products to add
- String DELIMITER = "_o_"; // delimiter, separating field from row number
-
// Get the parameters as a MAP, remove the productId and quantity params.
Map paramMap = UtilHttp.getParameterMap(request);
@@ -1713,24 +1709,14 @@
String shoppingListId = request.getParameter("shoppingListId");
String shoppingListItemSeqId = request.getParameter("shoppingListItemSeqId");
- // try to get the rowCount information passed in from request
- if (paramMap.containsKey("_rowCount")) {
- rowCountField = (String) paramMap.remove("_rowCount");
- } else {
- Debug.logWarning("No _rowCount was passed in", ShoppingCartEvents.module);
- }
- try {
- rowCount = Integer.parseInt(rowCountField);
- } catch (NumberFormatException e) {
- Debug.logWarning("Invalid value for rowCount =" + rowCountField, module);
- }
-
+ // The number of multi form rows is retrieved
+ int rowCount = UtilHttp.getMultiFormRowCount(paramMap);
if (rowCount < 1) {
Debug.logWarning("No rows to process, as rowCount = " + rowCount, module);
} else {
for (int i = 0; i < rowCount; i++) {
controlDirective = null; // re-initialize each time
- String thisSuffix = DELIMITER + i; // current suffix after each field id
+ String thisSuffix = UtilHttp.MULTI_ROW_DELIMITER + i; // current suffix after each field id
// get the productId
if (paramMap.containsKey("productId" + thisSuffix)) {
Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java?rev=667930&r1=667929&r2=667930&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java Sat Jun 14 23:27:15 2008
@@ -440,14 +440,8 @@
//boolean checkGlobalScope = (!context.containsKey("_checkGlobalScope"))? false :
// "Y".equalsIgnoreCase((String)context.get("_checkGlobalScope"));
- int rowCount = 0; // parsed int value
- try {
- if (context.containsKey("_rowCount")) {
- rowCount = Integer.parseInt((String)context.get("_rowCount"));
- }
- } catch (NumberFormatException e) {
- //throw new EventHandlerException("Invalid value for _rowCount");
- }
+ // The number of multi form rows is retrieved
+ int rowCount = UtilHttp.getMultiFormRowCount(context);
// assume that the facility is the same for all requirements
String facilityId = (String) context.get("facilityId_o_0");
Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java?rev=667930&r1=667929&r2=667930&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java (original)
+++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java Sat Jun 14 23:27:15 2008
@@ -1161,4 +1161,41 @@
}
return false;
}
+
+ /** Returns the number or rows submitted by a multi form.
+ */
+ public static int getMultiFormRowCount(HttpServletRequest request) {
+ // The number of multi form rows is computed selecting the maximum index
+ int rowCount = 0;
+ return UtilHttp.getMultiFormRowCount(UtilHttp.getParameterMap(request));
+ }
+ /** Returns the number or rows submitted by a multi form.
+ */
+ public static int getMultiFormRowCount(Map requestMap) {
+ // The number of multi form rows is computed selecting the maximum index
+ int rowCount = 0;
+ Set<String> parameterNames = requestMap.keySet();
+ String maxRowIndex = "";
+ int rowDelimiterLength = UtilHttp.MULTI_ROW_DELIMITER.length();
+ for (String parameterName: parameterNames) {
+ int rowDelimiterIndex = (parameterName != null? parameterName.indexOf(UtilHttp.MULTI_ROW_DELIMITER): -1);
+ if (rowDelimiterIndex > 0) {
+ String thisRowIndex = parameterName.substring(rowDelimiterIndex + rowDelimiterLength);
+ if (maxRowIndex.length() < thisRowIndex.length()) {
+ maxRowIndex = thisRowIndex;
+ } else if (maxRowIndex.length() == thisRowIndex.length() && maxRowIndex.compareTo(thisRowIndex) < 0) {
+ maxRowIndex = thisRowIndex;
+ }
+ }
+ }
+ if (UtilValidate.isNotEmpty(maxRowIndex)) {
+ try {
+ rowCount = Integer.parseInt(maxRowIndex);
+ rowCount++; // row indexes are zero based
+ } catch (NumberFormatException e) {
+ Debug.logWarning("Invalid value for row index found: " + maxRowIndex, module);
+ }
+ }
+ return rowCount;
+ }
}
Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/ServiceMultiEventHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/ServiceMultiEventHandler.java?rev=667930&r1=667929&r2=667930&view=diff
==============================================================================
--- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/ServiceMultiEventHandler.java (original)
+++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/event/ServiceMultiEventHandler.java Sat Jun 14 23:27:15 2008
@@ -139,18 +139,8 @@
boolean checkGlobalScope = request.getParameter("_checkGlobalScope") == null ? true :
!"N".equalsIgnoreCase(request.getParameter("_checkGlobalScope"));
- // get the number of rows
- String rowCountField = request.getParameter("_rowCount");
- if (rowCountField == null) {
- throw new EventHandlerException("Required field _rowCount is missing");
- }
-
- int rowCount = 0; // parsed int value
- try {
- rowCount = Integer.parseInt(rowCountField);
- } catch (NumberFormatException e) {
- throw new EventHandlerException("Invalid value for _rowCount");
- }
+ // The number of multi form rows is retrieved
+ int rowCount = UtilHttp.getMultiFormRowCount(request);
if (rowCount < 1) {
throw new EventHandlerException("No rows to process");
}
Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=667930&r1=667929&r2=667930&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Sat Jun 14 23:27:15 2008
@@ -1088,7 +1088,9 @@
formStringRenderer.renderFormatListWrapperClose(writer, context, this);
- formStringRenderer.renderMultiFormClose(writer, context, this);
+ if (!skipEnd) {
+ formStringRenderer.renderMultiFormClose(writer, context, this);
+ }
}
Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java?rev=667930&r1=667929&r2=667930&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java Sat Jun 14 23:27:15 2008
@@ -1123,6 +1123,11 @@
writer.append(modelForm.getCurrentFormName(context));
writer.append("\">");
+ boolean useRowSubmit = modelForm.getUseRowSubmit();
+ if (useRowSubmit) {
+ writer.append("<input type=\"hidden\" name=\"_useRowSubmit\" value=\"Y\"/>");
+ }
+
appendWhitespace(writer);
}
@@ -1149,19 +1154,6 @@
* @see org.ofbiz.widget.form.FormStringRenderer#renderFormClose(java.io.Writer, java.util.Map, org.ofbiz.widget.form.ModelForm)
*/
public void renderMultiFormClose(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
- String rowCount = modelForm.getPassedRowCount(context);
- if (UtilValidate.isEmpty(rowCount)) {
- int rCount = modelForm.getRowCount();
- rowCount = Integer.toString(rCount);
- }
- if (UtilValidate.isNotEmpty(rowCount)) {
- writer.append("<input type=\"hidden\" name=\"_rowCount\" value=\"" + rowCount + "\"/>");
- }
- boolean useRowSubmit = modelForm.getUseRowSubmit();
- if (useRowSubmit) {
- writer.append("<input type=\"hidden\" name=\"_useRowSubmit\" value=\"Y\"/>");
- }
-
Iterator submitFields = modelForm.getMultiSubmitFields().iterator();
while (submitFields.hasNext()) {
ModelFormField submitField = (ModelFormField)submitFields.next();