added CLOB-support
combined switch-statement of updateNode and insertNode into one method
This commit is contained in:
parent
fbe488ec6e
commit
05c39cbd92
1 changed files with 91 additions and 147 deletions
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue