View Javadoc

1   /* 
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8   *
9   *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17  package org.apache.jetspeed.portlets.security.users;
18  
19  import java.security.Principal;
20  import java.sql.Types;
21  import java.util.ArrayList;
22  import java.util.Iterator;
23  import java.util.List;
24  
25  import javax.portlet.PortletConfig;
26  import javax.portlet.PortletException;
27  import javax.portlet.RenderRequest;
28  
29  import org.apache.jetspeed.CommonPortletServices;
30  import org.apache.jetspeed.security.Group;
31  import org.apache.jetspeed.security.GroupManager;
32  import org.apache.portals.gems.browser.BrowserIterator;
33  import org.apache.portals.gems.browser.DatabaseBrowserIterator;
34  import org.apache.portals.gems.browser.BrowserPortlet;
35  
36  /***
37   * GroupChooserPortlet
38   * 
39   * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
40   * @version $Id: GroupChooserPortlet.java 348264 2005-11-22 22:06:45Z taylor $
41   */
42  public class GroupChooserPortlet extends BrowserPortlet
43  {
44      private GroupManager groupManager;
45      
46      public void init(PortletConfig config)
47      throws PortletException 
48      {
49          super.init(config);
50          groupManager = (GroupManager) 
51              getPortletContext().getAttribute(CommonPortletServices.CPS_GROUP_MANAGER_COMPONENT);
52          if (null == groupManager)
53          {
54              throw new PortletException("Failed to find the User Manager on portlet initialization");
55          }
56      }
57             
58      public void getRows(RenderRequest request, String sql, int windowSize)
59      throws Exception
60      {
61          List resultSetTitleList = new ArrayList();
62          List resultSetTypeList = new ArrayList();
63          try
64          {
65              Iterator groups = groupManager.getGroups("");
66                          
67              
68              resultSetTypeList.add(String.valueOf(Types.VARCHAR));
69              resultSetTitleList.add("Group");
70  
71              // TODO: need to try to normalize List/Collection/Iterators
72              List list = new ArrayList();
73              while (groups.hasNext())
74              {
75                  Group group = (Group)groups.next();
76                  
77                  Principal principal = group.getPrincipal();                
78                  list.add(principal.getName());
79              }            
80              
81              BrowserIterator iterator = new DatabaseBrowserIterator(
82                      list, resultSetTitleList, resultSetTypeList,
83                      windowSize);
84              setBrowserIterator(request, iterator);
85              iterator.sort("Group");
86          }
87          catch (Exception e)
88          {
89              //log.error("Exception in CMSBrowserAction.getRows: ", e);
90              e.printStackTrace();
91              throw e;
92          }        
93      }
94         
95  }