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 Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs