added CLOB-support

combined switch-statement of updateNode and insertNode into one method
This commit is contained in:
kmfdm 2004-04-27 09:28:17 +00:00
parent fbe488ec6e
commit 05c39cbd92

View file

@ -545,85 +545,14 @@ public final class NodeManager {
} }
stmtNumber++; stmtNumber++;
if (p!=null) {
if (p != null) { this.setStatementValues (stmt, stmtNumber, p, columns[i].getType());
if (p.getValue() == null) { } else if (name.equalsIgnoreCase(nameField)) {
stmt.setNull(stmtNumber, columns[i].getType()); stmt.setString(stmtNumber, node.getName());
} else { } else if (name.equalsIgnoreCase(prototypeField)) {
switch (columns[i].getType()) { stmt.setString(stmtNumber, node.getPrototype());
case Types.BIT:
case Types.TINYINT:
case Types.BIGINT:
case Types.SMALLINT:
case Types.INTEGER:
stmt.setLong(stmtNumber, p.getIntegerValue());
break;
case Types.REAL:
case Types.FLOAT:
case Types.DOUBLE:
case Types.NUMERIC:
case Types.DECIMAL:
stmt.setDouble(stmtNumber, p.getFloatValue());
break;
case Types.VARBINARY:
case Types.BINARY:
case Types.BLOB:
stmt.setString(stmtNumber, p.getStringValue());
break;
case Types.LONGVARBINARY:
case Types.LONGVARCHAR:
try {
stmt.setString(stmtNumber, p.getStringValue());
} catch (SQLException x) {
String str = p.getStringValue();
Reader r = new StringReader(str);
stmt.setCharacterStream(stmtNumber, r,
str.length());
}
break;
case Types.CHAR:
case Types.VARCHAR:
case Types.OTHER:
stmt.setString(stmtNumber, p.getStringValue());
break;
case Types.DATE:
case Types.TIME:
case Types.TIMESTAMP:
stmt.setTimestamp(stmtNumber, p.getTimestampValue());
break;
case Types.NULL:
stmt.setNull(stmtNumber, 0);
break;
default:
stmt.setString(stmtNumber, p.getStringValue());
break;
}
}
} else { } else {
if (name.equalsIgnoreCase(nameField)) { stmt.setNull(stmtNumber, columns[i].getType());
stmt.setString(stmtNumber, node.getName());
} else if (name.equalsIgnoreCase(prototypeField)) {
stmt.setString(stmtNumber, node.getPrototype());
} else {
stmt.setNull(stmtNumber, columns[i].getType());
}
} }
} }
@ -742,75 +671,7 @@ public final class NodeManager {
Relation rel = dbm.propertyToRelation(p.getName()); Relation rel = dbm.propertyToRelation(p.getName());
stmtNumber++; stmtNumber++;
this.setStatementValues (stmt, stmtNumber, p, rel.getColumnType());
if (p.getValue() == null) {
stmt.setNull(stmtNumber, rel.getColumnType());
} else {
switch (rel.getColumnType()) {
case Types.BIT:
case Types.TINYINT:
case Types.BIGINT:
case Types.SMALLINT:
case Types.INTEGER:
stmt.setLong(stmtNumber, p.getIntegerValue());
break;
case Types.REAL:
case Types.FLOAT:
case Types.DOUBLE:
case Types.NUMERIC:
case Types.DECIMAL:
stmt.setDouble(stmtNumber, p.getFloatValue());
break;
case Types.VARBINARY:
case Types.BINARY:
case Types.BLOB:
stmt.setString(stmtNumber, p.getStringValue());
break;
case Types.LONGVARBINARY:
case Types.LONGVARCHAR:
try {
stmt.setString(stmtNumber, p.getStringValue());
} catch (SQLException x) {
String str = p.getStringValue();
Reader r = new StringReader(str);
stmt.setCharacterStream(stmtNumber, r, str.length());
}
break;
case Types.CHAR:
case Types.VARCHAR:
case Types.OTHER:
stmt.setString(stmtNumber, p.getStringValue());
break;
case Types.DATE:
case Types.TIME:
case Types.TIMESTAMP:
stmt.setTimestamp(stmtNumber, p.getTimestampValue());
break;
case Types.NULL:
stmt.setNull(stmtNumber, 0);
break;
default:
stmt.setString(stmtNumber, p.getStringValue());
break;
}
}
p.dirty = false; p.dirty = false;
@ -1803,6 +1664,17 @@ public final class NodeManager {
break; break;
case Types.CLOB:
Clob cl = rs.getClob(i+1+offset);
if (cl==null) {
newprop.setStringValue(null);
break;
}
char[] c = new char[(int) cl.length()];
Reader isr = cl.getCharacterStream();
isr.read(c);
newprop.setStringValue(String.copyValueOf(c));
break;
// continue; // continue;
default: default:
newprop.setStringValue(rs.getString(i+1+offset)); newprop.setStringValue(rs.getString(i+1+offset));
@ -2003,4 +1875,76 @@ public final class NodeManager {
} }
} }
} }
private void setStatementValues (PreparedStatement stmt, int stmtNumber, Property p, int columnType) throws SQLException {
if (p.getValue() == null) {
stmt.setNull(stmtNumber, columnType);
} else {
switch (columnType) {
case Types.BIT:
case Types.TINYINT:
case Types.BIGINT:
case Types.SMALLINT:
case Types.INTEGER:
stmt.setLong(stmtNumber, p.getIntegerValue());
break;
case Types.REAL:
case Types.FLOAT:
case Types.DOUBLE:
case Types.NUMERIC:
case Types.DECIMAL:
stmt.setDouble(stmtNumber, p.getFloatValue());
break;
case Types.VARBINARY:
case Types.BINARY:
case Types.BLOB:
stmt.setString(stmtNumber, p.getStringValue());
break;
case Types.LONGVARBINARY:
case Types.LONGVARCHAR:
case Types.CLOB:
try {
stmt.setString(stmtNumber, p.getStringValue());
} catch (SQLException x) {
String str = p.getStringValue();
Reader r = new StringReader(str);
stmt.setCharacterStream(stmtNumber, r,
str.length());
}
break;
case Types.CHAR:
case Types.VARCHAR:
case Types.OTHER:
stmt.setString(stmtNumber, p.getStringValue());
break;
case Types.DATE:
case Types.TIME:
case Types.TIMESTAMP:
stmt.setTimestamp(stmtNumber, p.getTimestampValue());
break;
case Types.NULL:
stmt.setNull(stmtNumber, 0);
break;
default:
stmt.setString(stmtNumber, p.getStringValue());
break;
}
}
}
} }