]> granicus.if.org Git - postgresql/commitdiff
There are errors in the PGmoney class in the conversion routines over
authorBruce Momjian <bruce@momjian.us>
Sun, 14 Mar 1999 05:12:45 +0000 (05:12 +0000)
committerBruce Momjian <bruce@momjian.us>
Sun, 14 Mar 1999 05:12:45 +0000 (05:12 +0000)
the handling of negative numbers and commas. The attached path attempts
to fix these.
However the getValue method does not yet insert commas into the
generated string.
Also in getValue there is an incorrect assumption that the currency
symbol is '$', it should of course be '£'!. I have no idea on how to go
about fixing this one.

Alvin

src/interfaces/jdbc/postgresql/util/PGmoney.java

index 7d9ebf995a42ccc4afaa8c718fe93011bd2711f1..c2dcb3fad77cb97eee8ad110123ebc642855b8c3 100644 (file)
@@ -48,7 +48,22 @@ public class PGmoney extends PGobject implements Serializable,Cloneable
   public void setValue(String s) throws SQLException
   {
     try {
-      val = Double.valueOf(s.substring(1)).doubleValue();
+      String s1;
+      boolean negative;
+
+      negative = (s.charAt(0) == '-') ;
+
+      s1 = s.substring(negative ? 2 : 1);
+  
+      int pos = s1.indexOf(',');
+      while (pos != -1) {
+        s1 = s1.substring(0,pos) + s1.substring(pos +1);
+        pos = s1.indexOf(',');
+      }
+
+      val = Double.valueOf(s1).doubleValue();
+      val = negative ? -val : val;
+
     } catch(NumberFormatException e) {
       throw new SQLException("conversion of money failed - "+e.toString());
     }
@@ -80,6 +95,11 @@ public class PGmoney extends PGobject implements Serializable,Cloneable
    */
   public String getValue()
   {
-    return "$"+val;
+    if (val < 0) {
+      return "-$" + (-val);
+    }
+    else {
+      return "$"+val;
+    }
   }
 }