Update of
/var/cvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase
In directory
james.mmbase.org:/tmp/cvs-serv9322/cmsc/utilities/src/java/com/finalist/cmsc/mmbase
Modified Files:
Tag: b1_5
TreeUtil.java
Log Message:
CMSC-958 Copy and delete page problem.
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase
See also: http://www.mmbase.org/jira/browse/CMSC-958
Index: TreeUtil.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/mmbase/TreeUtil.java,v
retrieving revision 1.15
retrieving revision 1.15.2.1
diff -u -b -r1.15 -r1.15.2.1
--- TreeUtil.java 25 Jul 2008 15:54:11 -0000 1.15
+++ TreeUtil.java 31 Dec 2008 14:05:43 -0000 1.15.2.1
@@ -59,6 +59,32 @@
RelationUtil.createCountedRelation(parentNode, childNode, relationName,
countField);
}
+ public static void uniqueChild(Node parentNode, Node newChildNode,
LinkedHashMap<String, String> treeManagers, String relationName) {
+ String fragmentFieldname = getFragmentFieldname(newChildNode,
treeManagers);
+ String fragment = newChildNode.getStringValue(fragmentFieldname);
+
+ NodeList children = getChildren(parentNode, relationName);
+ int startsWithIndex = 0;
+ boolean foundExistingChildFragment = false;
+ for (Iterator<Node> iter = children.iterator(); iter.hasNext();) {
+ Node child = iter.next();
+ String fragmentfield = getFragmentFieldname(child, treeManagers);
+ String value = child.getStringValue(fragmentfield);
+ if (value.equals(fragment)) {
+ foundExistingChildFragment = true;
+ }
+ else {
+ if (value.startsWith(fragment + "_")) {
+ startsWithIndex++;
+ }
+ }
+ }
+ if (foundExistingChildFragment) {
+ newChildNode.setStringValue(fragmentFieldname, fragment + "_" +
(startsWithIndex+1));
+ newChildNode.commit();
+ }
+ }
+
public static Node getParent(Node node, String relationName) {
List<String> treeManagers = new ArrayList<String>();
treeManagers.add(node.getNodeManager().getName());
@@ -232,8 +258,7 @@
for (Iterator<Node> i = path.iterator(); i.hasNext();) {
Node n = i.next();
- String nManagerName = n.getNodeManager().getName();
- String fragmentFieldname = getFragmentFieldname(nManagerName,
treeManagers);
+ String fragmentFieldname = getFragmentFieldname(n, treeManagers);
pathStr += n.getStringValue(fragmentFieldname);
@@ -249,6 +274,9 @@
return path.split(PATH_SEPARATOR);
}
+ public static String getFragmentFieldname(Node node, LinkedHashMap<String,
String> treeManagers) {
+ return getFragmentFieldname(node.getNodeManager().getName(),
treeManagers);
+ }
public static String getFragmentFieldname(String nManagerName,
LinkedHashMap<String, String> treeManagers) {
return treeManagers.get(nManagerName);
@@ -380,8 +408,7 @@
}
}
- String nManagerName = root.getNodeManager().getName();
- String fragmentFieldname = getFragmentFieldname(nManagerName,
treeManagers);
+ String fragmentFieldname = getFragmentFieldname(root, treeManagers);
String[] fragments = getPathFragments(path);
if (root.getStringValue(fragmentFieldname).equals(path)) {
@@ -408,8 +435,7 @@
private static Node getTreeItemFromPath(Cloud cloud, String[] fragments,
Node root, LinkedHashMap<String, String> treeManagers,
String relationName, int level) {
- String nManagerName = root.getNodeManager().getName();
- String fragmentFieldname = getFragmentFieldname(nManagerName,
treeManagers);
+ String fragmentFieldname = getFragmentFieldname(root, treeManagers);
String field = root.getStringValue(fragmentFieldname);
@@ -421,8 +447,7 @@
NodeIterator nli = nl.nodeIterator();
while (nli.hasNext()) {
Node element = nli.nextNode();
- String elementManagerName = element.getNodeManager().getName();
- String elementFieldname =
getFragmentFieldname(elementManagerName, treeManagers);
+ String elementFieldname = getFragmentFieldname(element,
treeManagers);
field = element.getStringValue(elementFieldname);
if (fragments[level + 1].equalsIgnoreCase(field)) {
@@ -489,8 +514,7 @@
NodeList children = getChildren(parent, relationName);
for (Iterator<Node> iter = children.iterator(); iter.hasNext();) {
Node child = iter.next();
- String nManagerName = child.getNodeManager().getName();
- String fragmentfield = getFragmentFieldname(nManagerName,
treeManagers);
+ String fragmentfield = getFragmentFieldname(child, treeManagers);
String value = child.getStringValue(fragmentfield);
if (value.equals(fragment)) {
return true;
@@ -510,8 +534,7 @@
NodeList children = getChildren(parentItem, relationName);
for (Iterator<Node> iter = children.iterator(); iter.hasNext();) {
Node child = iter.next();
- String nManagerName = child.getNodeManager().getName();
- String fragmentfield = getFragmentFieldname(nManagerName,
treeManagers);
+ String fragmentfield = getFragmentFieldname(child, treeManagers);
String value = child.getStringValue(fragmentfield);
if (value.equals(fragment)) {
return child;
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs