Author: michiel
Date: 2010-02-11 16:45:11 +0100 (Thu, 11 Feb 2010)
New Revision: 40963
Modified:
mmbase/branches/MMBase-1_8/src/org/mmbase/module/tools/ApplicationInstaller.java
mmbase/branches/MMBase-1_8/src/org/mmbase/util/XMLRelationNodeReader.java
Log:
MMB-1932
Modified:
mmbase/branches/MMBase-1_8/src/org/mmbase/module/tools/ApplicationInstaller.java
===================================================================
---
mmbase/branches/MMBase-1_8/src/org/mmbase/module/tools/ApplicationInstaller.java
2010-02-11 15:44:23 UTC (rev 40962)
+++
mmbase/branches/MMBase-1_8/src/org/mmbase/module/tools/ApplicationInstaller.java
2010-02-11 15:45:11 UTC (rev 40963)
@@ -457,6 +457,32 @@
return result.isSuccess();
}
+ private int getSyncedNumber(MMObjectBuilder syncbul, String exportsource,
MMObjectNode newNode, String field) throws SearchQueryException {
+ String s = newNode.getStringValue(field);
+ int number;
+ if (s.startsWith(":")) {
+ String nodeNumber = s.substring(1);
+ MMObjectNode otherNode = syncbul.getNode(nodeNumber);
+ if (otherNode == null) {
+ log.warn("No such node '" + nodeNumber + "'");
+ number = -1;
+ } else {
+ number = otherNode.getNumber();
+ }
+ } else {
+ number = newNode.getIntValue(field);
+ List snumberNodes = getSyncnodes(syncbul, exportsource, number);
+ if (!snumberNodes.isEmpty()) {
+ MMObjectNode n2 = (MMObjectNode)snumberNodes.get(0);
+ number = n2.getIntValue("localnumber");
+ } else {
+ number = -1;
+ }
+ }
+ newNode.setValue(field, number);
+ return number;
+ }
+
private void installRelationSource(MMObjectBuilder syncbul, InsRel insRel,
XMLRelationNodeReader nodereader, List nodeFieldNodes, ApplicationResult
result) {
String exportsource = nodereader.getExportSource();
int timestamp = nodereader.getTimeStamp();
@@ -480,26 +506,9 @@
// ye be warned.
// find snumber
- int snumber = newNode.getIntValue("snumber");
- List snumberNodes = getSyncnodes(syncbul, exportsource,
snumber);
- if (!snumberNodes.isEmpty()) {
- MMObjectNode n2 = (MMObjectNode)snumberNodes.get(0);
- snumber = n2.getIntValue("localnumber");
- } else {
- snumber = -1;
- }
- newNode.setValue("snumber", snumber);
-
+ int snumber = getSyncedNumber(syncbul, exportsource,
newNode, "snumber");
// find dnumber
- int dnumber = newNode.getIntValue("dnumber");
- List dnumberNodes = getSyncnodes(syncbul, exportsource,
dnumber);
- if (!dnumberNodes.isEmpty()) {
- MMObjectNode n2 = (MMObjectNode)dnumberNodes.get(0);
- dnumber = n2.getIntValue("localnumber");
- } else {
- dnumber = -1;
- }
- newNode.setValue("dnumber", dnumber);
+ int dnumber = getSyncedNumber(syncbul, exportsource,
newNode, "dnumber");
int localnumber = -1;
if (snumber != -1 && dnumber != -1) {
@@ -508,8 +517,7 @@
if (relationAlreadyExists(insRel, newNode, snumber,
dnumber)) {
log.warn("Application tries to add relation which
already exists. " +
"Skipping relation with exportnumber " +
exportnumber);
- }
- else {
+ } else {
localnumber = newNode.insert("import");
if (localnumber != -1) {
createSyncnode(syncbul, exportsource,
timestamp, exportnumber, localnumber);
Modified:
mmbase/branches/MMBase-1_8/src/org/mmbase/util/XMLRelationNodeReader.java
===================================================================
--- mmbase/branches/MMBase-1_8/src/org/mmbase/util/XMLRelationNodeReader.java
2010-02-11 15:44:23 UTC (rev 40962)
+++ mmbase/branches/MMBase-1_8/src/org/mmbase/util/XMLRelationNodeReader.java
2010-02-11 15:45:11 UTC (rev 40963)
@@ -64,13 +64,26 @@
n4 = nm.getNamedItem("number");
int num = Integer.parseInt(n4.getNodeValue());
newNode.setValue("number", num);
-
- n4 = nm.getNamedItem("snumber");
- int rnum = Integer.parseInt(n4.getNodeValue());
- newNode.setValue("snumber", rnum);
- n4 = nm.getNamedItem("dnumber");
- int dnum = Integer.parseInt(n4.getNodeValue());
- newNode.setValue("dnumber", dnum);
+ {
+ n4 = nm.getNamedItem("snumber");
+ String s = n4.getNodeValue();
+ if (s.startsWith(":")) {
+ newNode.setValue("snumber", s);
+ } else {
+ int snum = Integer.parseInt(n4.getNodeValue());
+ newNode.setValue("snumber", snum);
+ }
+ }
+ {
+ n4 = nm.getNamedItem("dnumber");
+ String s = n4.getNodeValue();
+ if (s.startsWith(":")) {
+ newNode.setValue("dnumber", s);
+ } else {
+ int dnum = Integer.parseInt(n4.getNodeValue());
+ newNode.setValue("dnumber", dnum);
+ }
+ }
n4 = nm.getNamedItem("rtype");
String rname = n4.getNodeValue();
RelDef reldef = mmbase.getRelDef();
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs