weaver 2004/09/09 12:04:02
Modified: jetspeed-api/src/java/org/apache/jetspeed/page/document
NodeSet.java
components/page-manager/src/test/org/apache/jetspeed/page
TestCastorXmlPageManager.java
components/page-manager/src/java/org/apache/jetspeed/page/document
NodeSetImpl.java
Log:
added inclusive and exclusive regex subset filtering for NodeSet
Revision Changes Path
1.2 +5 -1
jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/page/document/NodeSet.java
Index: NodeSet.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/page/document/NodeSet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- NodeSet.java 3 Sep 2004 13:24:05 -0000 1.1
+++ NodeSet.java 9 Sep 2004 19:04:02 -0000 1.2
@@ -50,6 +50,10 @@
Iterator iterator();
NodeSet subset(String type);
+
+ NodeSet inclusiveSubset(String regex);
+
+ NodeSet exclusiveSubset(String regex);
int size();
1.12 +9 -1
jakarta-jetspeed-2/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java
Index: TestCastorXmlPageManager.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- TestCastorXmlPageManager.java 8 Sep 2004 20:48:06 -0000 1.11
+++ TestCastorXmlPageManager.java 9 Sep 2004 19:04:02 -0000 1.12
@@ -335,14 +335,17 @@
Folder folder1 = pageManager.getFolder("folder1");
assertNotNull(folder1);
+
assertEquals(2, folder1.getFolders().size());
Iterator childItr = folder1.getFolders().iterator();
// Test that the folders are naturally orderd
Folder folder2 = (Folder) childItr.next();
+ assertEquals("default-page.psml", folder2.getDefaultPage());
assertEquals("folder1/folder2", folder2.getPath());
assertEquals("folder2", folder2.getName());
Folder folder3 = (Folder) childItr.next();
assertEquals("folder1/folder3", folder3.getPath());
+ assertEquals("test001.psml", folder3.getDefaultPage());
assertEquals(1, folder2.getPages().size());
assertEquals(2, folder3.getPages().size());
@@ -372,12 +375,17 @@
assertTrue(folder3.getLinks().get("Jetspeed2.link").isHidden());
assertFalse(folder3.getLinks().get("apache.link").isHidden());
+ assertNotNull(folder3.getAllNodes().get("Jetspeed2.link"));
+
assertNull(folder3.getAllNodes().exclusiveSubset("Jetspeed2\\.link").get("Jetspeed2.link"));
+
assertNull(folder3.getAllNodes().inclusiveSubset("apache\\.link").get("Jetspeed2.link"));
+
assertNotNull(folder3.getAllNodes().inclusiveSubset("apache\\.link").get("apache.link"));
+
}
public void testFolderMetaData() throws Exception
{
- Folder folder1French = pageManager.getFolder("folder1");
+ Folder folder1French = pageManager.getFolder("folder1");
;
assertEquals("Titre francais pour la chemise 1",
folder1French.getTitle(Locale.FRENCH));
assertEquals("Titre francais pour la chemise 1",
folder1French.getTitle(Locale.FRANCE));
1.2 +116 -67
jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/page/document/NodeSetImpl.java
Index: NodeSetImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/page/document/NodeSetImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- NodeSetImpl.java 3 Sep 2004 13:22:06 -0000 1.1
+++ NodeSetImpl.java 9 Sep 2004 19:04:02 -0000 1.2
@@ -26,128 +26,124 @@
* PageSetImpl
* </p>
* <p>
- *
+ *
* </p>
- * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver</a>
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver </a>
* @version $Id$
- *
+ *
*/
public class NodeSetImpl implements NodeSet
-{
+{
private Map nodes;
private Map subsets;
private String resolveToPath;
private Comparator comparator;
-
-
- public NodeSetImpl(String resolveToPath)
- {
- this.resolveToPath = resolveToPath;
- nodes = new TreeMap();
- subsets = new HashMap();
+
+ public NodeSetImpl( String resolveToPath )
+ {
+ this.resolveToPath = resolveToPath;
+ nodes = new TreeMap();
+ subsets = new HashMap();
}
-
+
/**
*
* @param resolveToPath
* @param comparator
*/
- public NodeSetImpl(String resolveToPath, Comparator comparator)
+ public NodeSetImpl( String resolveToPath, Comparator comparator )
{
- this.resolveToPath = resolveToPath;
- nodes = new TreeMap(comparator);
- this.comparator = comparator;
- subsets = new HashMap();
+ this.resolveToPath = resolveToPath;
+ nodes = new TreeMap(comparator);
+ this.comparator = comparator;
+ subsets = new HashMap();
}
-
+
/**
*
* <p>
* get
* </p>
- *
+ *
* @see org.apache.jetspeed.page.document.NodeSet#get(java.lang.String)
* @param name
* @return
*/
public Node get( String name )
- {
-
- if(nodes.containsKey(name))
- {
- return (Node) nodes.get(name);
- }
- else if(resolveToPath != null)
- {
- if(resolveToPath.endsWith("/"))
- {
- return (Node) nodes.get(resolveToPath + name);
- }
- else
- {
- return (Node) nodes.get(resolveToPath + "/" + name);
- }
- }
-
- return null;
+ {
+
+ if (nodes.containsKey(name))
+ {
+ return (Node) nodes.get(name);
+ }
+ else if (resolveToPath != null)
+ {
+ if (resolveToPath.endsWith("/"))
+ {
+ return (Node) nodes.get(resolveToPath + name);
+ }
+ else
+ {
+ return (Node) nodes.get(resolveToPath + "/" + name);
+ }
+ }
+
+ return null;
}
-
-
/**
*
* <p>
* add
* </p>
- *
+ *
* @see
org.apache.jetspeed.page.document.NodeSet#add(org.apache.jetspeed.page.document.Node)
* @param document
*/
- public void add(Node node)
- {
- nodes.put(node.getPath(), node);
+ public void add( Node node )
+ {
+ nodes.put(node.getPath(), node);
String path = node.getPath();
- if(subsets.containsKey(node.getType()))
+ if (subsets.containsKey(node.getType()))
{
- ((NodeSet)subsets.get(node.getType())).add(node);
+ ((NodeSet) subsets.get(node.getType())).add(node);
}
-
+
}
/**
* <p>
* size
* </p>
- *
+ *
* @see org.apache.jetspeed.om.page.DocumentSet#size()
* @return
*/
public int size()
- {
+ {
return nodes.size();
}
-
+
/**
*
* <p>
* iterator
* </p>
- *
+ *
* @see org.apache.jetspeed.page.document.NodeSet#iterator()
* @return
*/
public Iterator iterator()
- {
+ {
return nodes.values().iterator();
}
-
-
/**
* <p>
* subset
* </p>
- *
+ *
* @see
org.apache.jetspeed.page.document.NodeSet#iteratorOverType(java.lang.String)
* @param type
* @return
@@ -155,27 +151,80 @@
public NodeSet subset( String type )
{
NodeSet subset = (NodeSet) subsets.get(type);
- if(subset == null)
- {
+ if (subset == null)
+ {
-
- if(subset == null)
+ if (subset == null)
{
subset = new NodeSetImpl(resolveToPath, comparator);
subsets.put(type, subset);
}
-
+
Iterator nodeItr = nodes.values().iterator();
- while(nodeItr.hasNext())
+ while (nodeItr.hasNext())
{
Node node = (Node) nodeItr.next();
- if(node.getType().equals(type))
+ if (node.getType().equals(type))
{
subset.add(node);
- }
- }
- }
+ }
+ }
+ }
+
+ return subset;
+ }
+
+ /**
+ * <p>
+ * exclusiveSubset
+ * </p>
+ *
+ * @see
org.apache.jetspeed.page.document.NodeSet#exclusiveSubset(java.lang.String)
+ * @param regex
+ * @return
+ */
+ public NodeSet exclusiveSubset( String regex )
+ {
+ Iterator allNodes = nodes.entrySet().iterator();
+ NodeSetImpl subset = new NodeSetImpl(resolveToPath, comparator);
+ while (allNodes.hasNext())
+ {
+ Map.Entry entry = (Map.Entry) allNodes.next();
+ Node node = (Node) entry.getValue();
+ String key = (String) entry.getKey();
+ if (!key.matches(regex) && !node.getName().matches(regex))
+ {
+ subset.add(node);
+ }
+ }
+
+ return subset;
+ }
+
+ /**
+ * <p>
+ * inclusiveSubset
+ * </p>
+ *
+ * @see
org.apache.jetspeed.page.document.NodeSet#inclusiveSubset(java.lang.String)
+ * @param regex
+ * @return
+ */
+ public NodeSet inclusiveSubset( String regex )
+ {
+ Iterator allNodes = nodes.entrySet().iterator();
+ NodeSetImpl subset = new NodeSetImpl(resolveToPath, comparator);
+ while (allNodes.hasNext())
+ {
+ Map.Entry entry = (Map.Entry) allNodes.next();
+ String key = (String) entry.getKey();
+ Node node = (Node) entry.getValue();
+ if (key.matches(regex) || node.getName().matches(regex))
+ {
+ subset.add(node);
+ }
+ }
return subset;
}
-}
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]