You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by sm...@apache.org on 2011/03/25 02:30:59 UTC

svn commit: r1085235 - in /pivot/trunk/demos/src/org/apache/pivot/demos/roweditor: AmountBindMapping.java CurrencyValidator.java RowEditorDemo.json

Author: smartini
Date: Fri Mar 25 01:30:59 2011
New Revision: 1085235

URL: http://svn.apache.org/viewvc?rev=1085235&view=rev
Log:
PIVOT-681

Modified:
    pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/AmountBindMapping.java
    pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/CurrencyValidator.java
    pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/RowEditorDemo.json

Modified: pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/AmountBindMapping.java
URL: http://svn.apache.org/viewvc/pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/AmountBindMapping.java?rev=1085235&r1=1085234&r2=1085235&view=diff
==============================================================================
--- pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/AmountBindMapping.java (original)
+++ pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/AmountBindMapping.java Fri Mar 25 01:30:59 2011
@@ -17,11 +17,12 @@
 package org.apache.pivot.demos.roweditor;
 
 import java.text.DecimalFormat;
+import java.text.ParseException;
 
 import org.apache.pivot.wtk.TextInput;
 
 public class AmountBindMapping implements TextInput.TextBindMapping {
-    public static final DecimalFormat FORMAT = new DecimalFormat("0.00");
+    protected static final DecimalFormat FORMAT = new DecimalFormat("0.00");
 
     @Override
     public String toString(Object value) {
@@ -30,6 +31,14 @@ public class AmountBindMapping implement
 
     @Override
     public Object valueOf(String text) {
-        return Float.valueOf(text);
+        // in case of an empty string to validate, return a default value, to avoid an NPE
+        if (text.length() < 1)
+            return new String("");
+        
+        try {
+            return FORMAT.parse(text);
+        } catch (ParseException ex) {
+            throw new NumberFormatException(ex.getMessage());
+        }
     }
 }

Modified: pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/CurrencyValidator.java
URL: http://svn.apache.org/viewvc/pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/CurrencyValidator.java?rev=1085235&r1=1085234&r2=1085235&view=diff
==============================================================================
--- pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/CurrencyValidator.java (original)
+++ pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/CurrencyValidator.java Fri Mar 25 01:30:59 2011
@@ -17,6 +17,8 @@
 package org.apache.pivot.demos.roweditor;
 
 import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.text.ParsePosition;
 
 import org.apache.pivot.wtk.validation.Validator;
 
@@ -24,17 +26,23 @@ import org.apache.pivot.wtk.validation.V
  * Validates that text represents a valid dollar value.
  */
 public class CurrencyValidator implements Validator {
+    protected static final DecimalFormat FORMAT = new DecimalFormat("0.00");
+    static {
+        FORMAT.setParseBigDecimal(true);
+    }
+
     @Override
     public boolean isValid(String text) {
         boolean valid = true;
 
         if (text.length() > 0) {
-            try {
-                BigDecimal numericAmount = new BigDecimal(text);
-                valid = (numericAmount.scale() <= 2 && numericAmount.signum() >= 0);
-            } catch (NumberFormatException ex) {
-                valid = false;
-            }
+            ParsePosition parsePosition = new ParsePosition(0);
+            BigDecimal numericAmount = (BigDecimal) FORMAT.parse(text, parsePosition);
+            valid = (numericAmount != null &&
+                numericAmount.scale() <= 2 &&
+                numericAmount.signum() >= 0 &&
+                parsePosition.getErrorIndex() == -1 &&
+                parsePosition.getIndex() == text.length());
         }
 
         return valid;

Modified: pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/RowEditorDemo.json
URL: http://svn.apache.org/viewvc/pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/RowEditorDemo.json?rev=1085235&r1=1085234&r2=1085235&view=diff
==============================================================================
--- pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/RowEditorDemo.json (original)
+++ pivot/trunk/demos/src/org/apache/pivot/demos/roweditor/RowEditorDemo.json Fri Mar 25 01:30:59 2011
@@ -24,6 +24,6 @@
     },
 
     formats: {
-        currency: "$#,##0.00"
+        currency: "\u00A4#,##0.00"
     }
 }