From b2159e9aeff4eaab7378a1cc7adf633cc36723e0 Mon Sep 17 00:00:00 2001 From: hns Date: Mon, 18 Nov 2002 14:16:40 +0000 Subject: [PATCH] Work around missing functionality in ResultSet implementations. --- src/helma/objectmodel/db/Node.java | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/helma/objectmodel/db/Node.java b/src/helma/objectmodel/db/Node.java index 3bbf5ac3..c32e81f9 100644 --- a/src/helma/objectmodel/db/Node.java +++ b/src/helma/objectmodel/db/Node.java @@ -16,6 +16,7 @@ import java.sql.*; import helma.objectmodel.*; import helma.util.*; import helma.framework.IPathElement; +import java.math.BigDecimal; // import com.workingdogs.village.*; @@ -275,20 +276,20 @@ public final class Node implements INode, Serializable { if (rel.reftype != Relation.PRIMITIVE && rel.reftype != Relation.REFERENCE) continue; - // Value val = rec.getValue (rel.getDbField ()); - - // if (val.isNull ()) - // continue; - Property newprop = new Property (rel.propName, this); - - // if (val.isNull ()) - // newprop.setStringValue (null); - // else + switch (rel.getColumnType()) { case Types.BIT: - newprop.setBooleanValue (rs.getBoolean(rel.getDbField())); + String tmp = rs.getString (rel.getDbField()); + if (tmp == null) + newprop.setBooleanValue (false); + else if (tmp.equalsIgnoreCase ("true") || + tmp.equalsIgnoreCase ("yes") || + tmp.equals ("1")) + newprop.setBooleanValue (true); + else + newprop.setBooleanValue (false); break; case Types.TINYINT: @@ -306,7 +307,7 @@ public final class Node implements INode, Serializable { case Types.DECIMAL: case Types.NUMERIC: - java.math.BigDecimal num = rs.getBigDecimal (rel.getDbField()); + BigDecimal num = new BigDecimal (rs.getString (rel.getDbField())); if (num.scale() > 0) newprop.setFloatValue (rs.getDouble(rel.getDbField())); else