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]

Reply via email to