- package postgresql.util;
- import java.io.*;
- import java.sql.*;
- /**
- * This implements a class that handles the PostgreSQL money and cash types
- */
- public class PGmoney extends PGobject implements Serializable,Cloneable
- {
- /**
- * The value of the field
- */
- public double val;
- /**
- * @param value of field
- */
- public PGmoney(double value) {
- this();
- val = value;
- }
- /**
- * This is called mainly from the other geometric types, when a
- * point is imbeded within their definition.
- *
- * @param value Definition of this point in PostgreSQL's syntax
- */
- public PGmoney(String value) throws SQLException
- {
- this();
- setValue(value);
- }
- /**
- * Required by the driver
- */
- public PGmoney()
- {
- setType("money");
- }
- /**
- * @param s Definition of this point in PostgreSQL's syntax
- * @exception SQLException on conversion failure
- */
- public void setValue(String s) throws SQLException
- {
- try {
- 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 PSQLException("postgresql.money",e);
- }
- }
- /**
- * @param obj Object to compare with
- * @return true if the two boxes are identical
- */
- public boolean equals(Object obj)
- {
- if(obj instanceof PGmoney) {
- PGmoney p = (PGmoney)obj;
- return val == p.val;
- }
- return false;
- }
- /**
- * This must be overidden to allow the object to be cloned
- */
- public Object clone()
- {
- return new PGmoney(val);
- }
- /**
- * @return the PGpoint in the syntax expected by postgresql
- */
- public String getValue()
- {
- if (val < 0) {
- return "-$" + (-val);
- }
- else {
- return "$"+val;
- }
- }
- }