You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2019/01/01 18:50:47 UTC

svn commit: r1850113 - /ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java

Author: jleroux
Date: Tue Jan  1 18:50:47 2019
New Revision: 1850113

URL: http://svn.apache.org/viewvc?rev=1850113&view=rev
Log:
Improved: function parseBigDecimalForEntity is in wrong location
(OFBIZ-10689)

Renames parseBigDecimalForEntity method to parseBigDecimalFromParameter
parseBigDecimalFromParameter now uses ObjectType::simpleTypeOrObjectConvert
underneath
Removes deprecated and unused parseDoubleForEntity method

Modified:
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java

Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java?rev=1850113&r1=1850112&r2=1850113&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java Tue Jan  1 18:50:47 2019
@@ -25,6 +25,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.regex.Matcher;
@@ -35,6 +36,7 @@ import javax.servlet.http.HttpServletRes
 import javax.servlet.http.HttpSession;
 
 import org.apache.ofbiz.base.util.Debug;
+import org.apache.ofbiz.base.util.GeneralException;
 import org.apache.ofbiz.base.util.ObjectType;
 import org.apache.ofbiz.base.util.UtilDateTime;
 import org.apache.ofbiz.base.util.UtilGenerics;
@@ -60,6 +62,7 @@ import org.apache.ofbiz.service.GenericS
 import org.apache.ofbiz.service.LocalDispatcher;
 import org.apache.ofbiz.webapp.website.WebSiteWorker;
 
+
 /**
  * Product Information Related Events
  */
@@ -432,10 +435,10 @@ public class ProductEvents {
                     product.set("lastModifiedDate", nowTimestamp);
                     product.setString("lastModifiedByUserLogin", userLogin.getString("userLoginId"));
                     try {
-                        product.set("productHeight", parseBigDecimalForEntity(request.getParameter("productHeight")));
-                        product.set("productWidth", parseBigDecimalForEntity(request.getParameter("productWidth")));
-                        product.set("productDepth", parseBigDecimalForEntity(request.getParameter("productDepth")));
-                        product.set("productWeight", parseBigDecimalForEntity(request.getParameter("weight")));
+                        product.set("productHeight", parseBigDecimalFromParameter("productHeight", request));
+                        product.set("productWidth", parseBigDecimalFromParameter("productWidth", request));
+                        product.set("productDepth", parseBigDecimalFromParameter("productDepth", request));
+                        product.set("productWeight", parseBigDecimalFromParameter("weight", request));
 
                         // default unit settings for shipping parameters
                         product.set("heightUomId", "LEN_in");
@@ -443,10 +446,10 @@ public class ProductEvents {
                         product.set("depthUomId", "LEN_in");
                         product.set("weightUomId", "WT_oz");
 
-                        BigDecimal floz = parseBigDecimalForEntity(request.getParameter("~floz"));
-                        BigDecimal ml = parseBigDecimalForEntity(request.getParameter("~ml"));
-                        BigDecimal ntwt = parseBigDecimalForEntity(request.getParameter("~ntwt"));
-                        BigDecimal grams = parseBigDecimalForEntity(request.getParameter("~grams"));
+                        BigDecimal floz = parseBigDecimalFromParameter("~floz", request);
+                        BigDecimal ml = parseBigDecimalFromParameter("~ml", request);
+                        BigDecimal ntwt = parseBigDecimalFromParameter("~ntwt", request);
+                        BigDecimal grams = parseBigDecimalFromParameter("~grams", request);
 
                         List<GenericValue> currentProductFeatureAndAppls = EntityQuery.use(delegator).from("ProductFeatureAndAppl").where("productId", productId, "productFeatureApplTypeId", "STANDARD_FEATURE").filterByDate().queryList();
                         setOrCreateProdFeature(delegator, productId, currentProductFeatureAndAppls, "VLIQ_ozUS", "AMOUNT", floz);
@@ -455,7 +458,7 @@ public class ProductEvents {
                         setOrCreateProdFeature(delegator, productId, currentProductFeatureAndAppls, "WT_oz", "AMOUNT", ntwt);
                         product.store();
 
-                    } catch (NumberFormatException nfe) {
+                    } catch (NumberFormatException | GeneralException nfe) {
                         String errMsg = "Shipping Dimensions and Weights must be numbers.";
                         request.setAttribute("_ERROR_MESSAGE_", errMsg);
                         Debug.logError(nfe, errMsg, module);
@@ -469,14 +472,14 @@ public class ProductEvents {
                     do {
                         GenericValue product = EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne();
                         try {
-                            product.set("productHeight", parseBigDecimalForEntity(request.getParameter("productHeight" + attribIdx)));
-                            product.set("productWidth", parseBigDecimalForEntity(request.getParameter("productWidth" + attribIdx)));
-                            product.set("productDepth", parseBigDecimalForEntity(request.getParameter("productDepth" + attribIdx)));
-                            product.set("productWeight", parseBigDecimalForEntity(request.getParameter("weight" + attribIdx)));
-                            BigDecimal floz = parseBigDecimalForEntity(request.getParameter("~floz" + attribIdx));
-                            BigDecimal ml = parseBigDecimalForEntity(request.getParameter("~ml" + attribIdx));
-                            BigDecimal ntwt = parseBigDecimalForEntity(request.getParameter("~ntwt" + attribIdx));
-                            BigDecimal grams = parseBigDecimalForEntity(request.getParameter("~grams" + attribIdx));
+                            product.set("productHeight", parseBigDecimalFromParameter("productHeight" + attribIdx, request));
+                            product.set("productWidth", parseBigDecimalFromParameter("productWidth" + attribIdx, request));
+                            product.set("productDepth", parseBigDecimalFromParameter("productDepth" + attribIdx, request));
+                            product.set("productWeight", parseBigDecimalFromParameter("weight" + attribIdx, request));
+                            BigDecimal floz = parseBigDecimalFromParameter("~floz" + attribIdx, request);
+                            BigDecimal ml = parseBigDecimalFromParameter("~ml" + attribIdx, request);
+                            BigDecimal ntwt = parseBigDecimalFromParameter("~ntwt" + attribIdx, request);
+                            BigDecimal grams = parseBigDecimalFromParameter("~grams" + attribIdx, request);
 
                             List<GenericValue> currentProductFeatureAndAppls = EntityQuery.use(delegator).from("ProductFeatureAndAppl").where("productId", productId, "productFeatureApplTypeId", "STANDARD_FEATURE").filterByDate().queryList();
                             setOrCreateProdFeature(delegator, productId, currentProductFeatureAndAppls, "VLIQ_ozUS", "AMOUNT", floz);
@@ -484,7 +487,7 @@ public class ProductEvents {
                             setOrCreateProdFeature(delegator, productId, currentProductFeatureAndAppls, "WT_g", "AMOUNT", grams);
                             setOrCreateProdFeature(delegator, productId, currentProductFeatureAndAppls, "WT_oz", "AMOUNT", ntwt);
                             product.store();
-                        } catch (NumberFormatException nfe) {
+                        } catch (NumberFormatException | GeneralException nfe) {
                             String errMsg = "Shipping Dimensions and Weights must be numbers.";
                             request.setAttribute("_ERROR_MESSAGE_", errMsg);
                             Debug.logError(nfe, errMsg, module);
@@ -522,7 +525,6 @@ public class ProductEvents {
      * @param uomId
      * @param productFeatureTypeId
      * @param numberSpecified
-     * @return
      * @throws GenericEntityException
      */
     private static void setOrCreateProdFeature(Delegator delegator, String productId, List<GenericValue> currentProductFeatureAndAppls,
@@ -1035,19 +1037,6 @@ public class ProductEvents {
         return "success";
     }
 
-    @Deprecated
-    public static Double parseDoubleForEntity(String doubleString) throws NumberFormatException {
-        if (doubleString == null) {
-            return null;
-        }
-        doubleString = doubleString.trim();
-        doubleString = doubleString.replaceAll(",", "");
-        if (doubleString.length() < 1) {
-            return null;
-        }
-        return Double.valueOf(doubleString);
-    }
-
     public static List<GenericValue> getProductCompareList(HttpServletRequest request) {
         HttpSession session = request.getSession();
         Object compareListObj = session.getAttribute("productCompareList");
@@ -1152,17 +1141,11 @@ public class ProductEvents {
      * in fields where BigDecimal display. Blank meaning null, vs. 0 which means 0
      * @param bigDecimalString
      * @return a BigDecimal for the parsed value
+     * @throws GeneralException 
      */
-    public static BigDecimal parseBigDecimalForEntity(String bigDecimalString) throws NumberFormatException {
-        if (bigDecimalString == null) {
-            return null;
-        }
-        bigDecimalString = bigDecimalString.trim();
-        bigDecimalString = bigDecimalString.replaceAll(",", "");
-        if (bigDecimalString.length() < 1) {
-            return null;
-        }
-        return new BigDecimal(bigDecimalString);
+    public static BigDecimal parseBigDecimalFromParameter(String bigDecimalString, HttpServletRequest request) throws GeneralException {
+        Locale locale = UtilHttp.getLocale(request);
+        return (BigDecimal) ObjectType.simpleTypeOrObjectConvert(request.getParameter(bigDecimalString), "BigDecimal", null, locale);
     }
 
     /** Event add product tags */