PGmoney.java
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. package postgresql.util;
  2. import java.io.*;
  3. import java.sql.*;
  4. /**
  5.  * This implements a class that handles the PostgreSQL money and cash types
  6.  */
  7. public class PGmoney extends PGobject implements Serializable,Cloneable
  8. {
  9.   /**
  10.    * The value of the field
  11.    */
  12.   public double val;
  13.   
  14.   /**
  15.    * @param value of field
  16.    */
  17.   public PGmoney(double value) {
  18.     this();
  19.     val = value;
  20.   }
  21.   
  22.   /**
  23.    * This is called mainly from the other geometric types, when a
  24.    * point is imbeded within their definition.
  25.    *
  26.    * @param value Definition of this point in PostgreSQL's syntax
  27.    */
  28.   public PGmoney(String value) throws SQLException
  29.   {
  30.     this();
  31.     setValue(value);
  32.   }
  33.   
  34.   /**
  35.    * Required by the driver
  36.    */
  37.   public PGmoney()
  38.   {
  39.     setType("money");
  40.   }
  41.   
  42.   /**
  43.    * @param s Definition of this point in PostgreSQL's syntax
  44.    * @exception SQLException on conversion failure
  45.    */
  46.   public void setValue(String s) throws SQLException
  47.   {
  48.     try {
  49.       String s1;
  50.       boolean negative;
  51.       negative = (s.charAt(0) == '-') ;
  52.       s1 = s.substring(negative ? 2 : 1);
  53.   
  54.       int pos = s1.indexOf(',');
  55.       while (pos != -1) {
  56.         s1 = s1.substring(0,pos) + s1.substring(pos +1);
  57.         pos = s1.indexOf(',');
  58.       }
  59.       val = Double.valueOf(s1).doubleValue();
  60.       val = negative ? -val : val;
  61.     } catch(NumberFormatException e) {
  62.       throw new PSQLException("postgresql.money",e);
  63.     }
  64.   }
  65.   
  66.   /**
  67.    * @param obj Object to compare with
  68.    * @return true if the two boxes are identical
  69.    */
  70.   public boolean equals(Object obj)
  71.   {
  72.     if(obj instanceof PGmoney) {
  73.       PGmoney p = (PGmoney)obj;
  74.       return val == p.val;
  75.     }
  76.     return false;
  77.   }
  78.   
  79.   /**
  80.    * This must be overidden to allow the object to be cloned
  81.    */
  82.   public Object clone()
  83.   {
  84.     return new PGmoney(val);
  85.   }
  86.   
  87.   /**
  88.    * @return the PGpoint in the syntax expected by postgresql
  89.    */
  90.   public String getValue()
  91.   {
  92.     if (val < 0) {
  93.       return "-$" + (-val);
  94.     }
  95.     else {
  96.       return "$"+val;
  97.     }
  98.   }
  99. }