mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Tue Feb 13 16:33:00 GMT 2001 peter@retep.org.uk - More TestCases implemented. Refined the test suite api's. - Removed need for SimpleDateFormat in ResultSet.getDate() improving performance. - Rewrote ResultSet.getTime() so that it uses JDK api's better. Tue Feb 13 10:25:00 GMT 2001 peter@retep.org.uk - Added MiscTest to hold reported problems from users. - Fixed PGMoney. - JBuilder4/JDBCExplorer now works with Money fields. Patched Field & ResultSet (lots of methods) for this one. Also changed cash/money to return type DOUBLE not DECIMAL. This broke JBuilder as zero scale BigDecimal's can't have decimal places! - When a Statement is reused, the previous ResultSet is now closed. - Removed deprecated call in ResultSet.getTime() Thu Feb 08 18:53:00 GMT 2001 peter@retep.org.uk - Changed a couple of settings in DatabaseMetaData where 7.1 now supports those features - Implemented the DatabaseMetaData TestCase. Wed Feb 07 18:06:00 GMT 2001 peter@retep.org.uk - Added comment to Connection.isClosed() explaining why we deviate from the JDBC2 specification. - Fixed bug where the Isolation Level is lost while in autocommit mode. - Fixed bug where several calls to getTransactionIsolationLevel() returned the first call's result.
108 lines
2.1 KiB
Java
108 lines
2.1 KiB
Java
package org.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) == '(') ;
|
|
|
|
// Remove any () (for negative) & currency symbol
|
|
s1 = PGtokenizer.removePara(s).substring(1);
|
|
|
|
// Strip out any , in currency
|
|
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 org.postgresql
|
|
*/
|
|
public String getValue()
|
|
{
|
|
if (val < 0) {
|
|
return "-$" + (-val);
|
|
}
|
|
else {
|
|
return "$"+val;
|
|
}
|
|
}
|
|
}
|