From 1bb1297daffce9dd15fbd26c6e828d67920331c0 Mon Sep 17 00:00:00 2001 From: hns Date: Wed, 3 Jan 2001 15:15:30 +0000 Subject: [PATCH] Made getSubnode honor the "groupby" flag --- src/helma/objectmodel/db/Node.java | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/helma/objectmodel/db/Node.java b/src/helma/objectmodel/db/Node.java index 8b82d67f..6ddb61e9 100644 --- a/src/helma/objectmodel/db/Node.java +++ b/src/helma/objectmodel/db/Node.java @@ -697,16 +697,33 @@ public class Node implements INode, Serializable { public INode getSubnode (String path) { StringTokenizer st = new StringTokenizer (path, "/"); Node retval = this, runner; + while (st.hasMoreTokens () && retval != null) { runner = retval; String next = st.nextToken().trim().toLowerCase (); + if ("".equals (next)) { retval = this; } else { runner.loadNodes (); boolean found = runner.subnodes == null ? false : runner.subnodes.contains (next); - DbMapping smap = runner.dbmap == null ? null : runner.dbmap.getSubnodeMapping (); - retval = found ? nmgr.getNode (next, smap) : null; + + if (!found) + retval = null; + else { + Relation srel = null; + DbMapping smap = null; + if (runner.dbmap != null) { + srel = runner.dbmap.getSubnodeRelation (); + smap = runner.dbmap.getSubnodeMapping (); + } + // check if there is a group-by relation + if (srel != null && srel.groupby != null) + retval = nmgr.getNode (this, next, srel); + else + retval = nmgr.getNode (next, smap); + } + if (retval != null && retval.parentID == null) { retval.setParent (runner); retval.anonymous = true;