Re-establish old behaviour in addNode() that if an existing child element is present
with the given name it is deleted. Do not wrap addGroupbyNode-code in try/catch.
This commit is contained in:
parent
2f2b0ae051
commit
13a9f914be
1 changed files with 18 additions and 22 deletions
|
@ -840,28 +840,21 @@ public final class Node implements INode, Serializable {
|
||||||
Relation srel = dbmap.getSubnodeRelation();
|
Relation srel = dbmap.getSubnodeRelation();
|
||||||
|
|
||||||
if ((srel != null) && (srel.groupby != null)) {
|
if ((srel != null) && (srel.groupby != null)) {
|
||||||
try {
|
Relation groupbyRel = srel.otherType.columnNameToRelation(srel.groupby);
|
||||||
Relation groupbyRel = srel.otherType.columnNameToRelation(srel.groupby);
|
String groupbyProp = (groupbyRel != null) ? groupbyRel.propName
|
||||||
String groupbyProp = (groupbyRel != null) ? groupbyRel.propName
|
|
||||||
: srel.groupby;
|
: srel.groupby;
|
||||||
String groupbyValue = node.getString(groupbyProp);
|
String groupbyValue = node.getString(groupbyProp);
|
||||||
INode groupbyNode = getNode(groupbyValue);
|
INode groupbyNode = getNode(groupbyValue);
|
||||||
|
|
||||||
// if group-by node doesn't exist, we'll create it
|
// if group-by node doesn't exist, we'll create it
|
||||||
if (groupbyNode == null) {
|
if (groupbyNode == null) {
|
||||||
groupbyNode = getGroupbySubnode(groupbyValue, true);
|
groupbyNode = getGroupbySubnode(groupbyValue, true);
|
||||||
} else {
|
} else {
|
||||||
groupbyNode.setDbMapping(dbmap.getGroupbyMapping());
|
groupbyNode.setDbMapping(dbmap.getGroupbyMapping());
|
||||||
}
|
|
||||||
|
|
||||||
groupbyNode.addNode(node);
|
|
||||||
|
|
||||||
return node;
|
|
||||||
} catch (Exception x) {
|
|
||||||
System.err.println("Error adding groupby: " + x);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
groupbyNode.addNode(node);
|
||||||
|
return node;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -896,11 +889,14 @@ public final class Node implements INode, Serializable {
|
||||||
String prop = node.getString(propname);
|
String prop = node.getString(propname);
|
||||||
|
|
||||||
if ((prop != null) && (prop.length() > 0)) {
|
if ((prop != null) && (prop.length() > 0)) {
|
||||||
INode old = getNode(prop);
|
INode old = (INode) getChildElement(prop);
|
||||||
|
|
||||||
if ((old != null) && (old != node)) {
|
if ((old != null) && (old != node)) {
|
||||||
unset(prop);
|
// FIXME: we delete the existing node here,
|
||||||
removeNode(old);
|
// but actually the app developer should prevent this from
|
||||||
|
// happening, so it might be better to throw an exception.
|
||||||
|
old.remove();
|
||||||
|
this.removeNode(old);
|
||||||
}
|
}
|
||||||
|
|
||||||
setNode(prop, node);
|
setNode(prop, node);
|
||||||
|
|
Loading…
Add table
Reference in a new issue