mirror of
https://github.com/postgres/postgres.git
synced 2025-06-06 00:02:36 -04:00
106 lines
2.0 KiB
Java
106 lines
2.0 KiB
Java
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;
|
|
}
|
|
}
|
|
}
|