Coverage Report - org.apache.turbine.util.security.SecuritySet
 
Classes in this File Line Coverage Branch Coverage Complexity
SecuritySet
0%
0/22
0%
0/8
1,4
 
 1  
 package org.apache.turbine.util.security;
 2  
 
 3  
 
 4  
 /*
 5  
  * Licensed to the Apache Software Foundation (ASF) under one
 6  
  * or more contributor license agreements.  See the NOTICE file
 7  
  * distributed with this work for additional information
 8  
  * regarding copyright ownership.  The ASF licenses this file
 9  
  * to you under the Apache License, Version 2.0 (the
 10  
  * "License"); you may not use this file except in compliance
 11  
  * with the License.  You may obtain a copy of the License at
 12  
  *
 13  
  *   http://www.apache.org/licenses/LICENSE-2.0
 14  
  *
 15  
  * Unless required by applicable law or agreed to in writing,
 16  
  * software distributed under the License is distributed on an
 17  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 18  
  * KIND, either express or implied.  See the License for the
 19  
  * specific language governing permissions and limitations
 20  
  * under the License.
 21  
  */
 22  
 
 23  
 import java.io.Serializable;
 24  
 import java.util.HashSet;
 25  
 import java.util.Iterator;
 26  
 import java.util.Map;
 27  
 import java.util.Set;
 28  
 import java.util.TreeMap;
 29  
 
 30  
 import org.apache.commons.lang.StringUtils;
 31  
 
 32  
 /**
 33  
  * This class represents a set of Security Entities.
 34  
  * It makes it easy to build a UI.
 35  
  * It wraps a TreeSet object to enforce that only relevant
 36  
  * methods are available.
 37  
  * TreeSet's contain only unique Objects (no duplicates).
 38  
  *
 39  
  * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a>
 40  
  * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
 41  
  * @author <a href="mailto:marco@intermeta.de">Marco Kn&uuml;ttel</a>
 42  
  * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
 43  
  * @version $Id: SecuritySet.java 1073174 2011-02-21 22:18:45Z tv $
 44  
  */
 45  
 public abstract class SecuritySet<T>
 46  
         implements Serializable, Iterable<T>
 47  
 {
 48  
     /** Serial version */
 49  
         private static final long serialVersionUID = -1315871299888969431L;
 50  
 
 51  
         /** Map for "name" -> "security object" */
 52  0
     protected Map<String, T> nameMap = null;
 53  
 
 54  
     /** Map for "id" -> "security object" */
 55  0
     protected Map<Integer, T> idMap = null;
 56  
 
 57  
     /**
 58  
      * Constructs an empty Set
 59  
      */
 60  
     public SecuritySet()
 61  0
     {
 62  0
         nameMap = new TreeMap<String, T>();
 63  0
         idMap = new TreeMap<Integer, T>();
 64  0
     }
 65  
 
 66  
     /**
 67  
      * Returns a set of security objects in this object.
 68  
      *
 69  
      * @return A Set Object
 70  
      *
 71  
      */
 72  
     public Set<? extends T> getSet()
 73  
     {
 74  0
         return new HashSet<T>(nameMap.values());
 75  
     }
 76  
 
 77  
     /**
 78  
      * Returns a set of Names in this Object.
 79  
      *
 80  
      * @return The Set of Names in this Object,
 81  
      *         backed by the actual data.
 82  
      */
 83  
     public Set<String> getNames()
 84  
     {
 85  0
         return nameMap.keySet();
 86  
     }
 87  
 
 88  
     /**
 89  
      * Returns a set of Id values in this Object.
 90  
      *
 91  
      * @return The Set of Ids in this Object,
 92  
      *         backed by the actual data.
 93  
      */
 94  
     public Set<Integer> getIds()
 95  
     {
 96  0
         return idMap.keySet();
 97  
     }
 98  
 
 99  
     /**
 100  
      * Removes all Objects from this Set.
 101  
      */
 102  
     public void clear()
 103  
     {
 104  0
         nameMap.clear();
 105  0
         idMap.clear();
 106  0
     }
 107  
 
 108  
     /**
 109  
      * Searches if an Object with a given name is in the
 110  
      * Set
 111  
      *
 112  
      * @param roleName Name of the Security Object.
 113  
      * @return True if argument matched an Object in this Set; false
 114  
      * if no match.
 115  
      */
 116  
     public boolean containsName(String name)
 117  
     {
 118  0
         return (StringUtils.isNotEmpty(name)) ? nameMap.containsKey(name) : false;
 119  
     }
 120  
 
 121  
     /**
 122  
      * Searches if an Object with a given Id is in the
 123  
      * Set
 124  
      *
 125  
      * @param id Id of the Security Object.
 126  
      * @return True if argument matched an Object in this Set; false
 127  
      * if no match.
 128  
      */
 129  
     public boolean containsId(int id)
 130  
     {
 131  0
         return (id == 0) ? false:  idMap.containsKey(new Integer(id));
 132  
     }
 133  
 
 134  
     /**
 135  
      * Returns an Iterator for Objects in this Set.
 136  
      *
 137  
      * @return An iterator for the Set
 138  
      */
 139  
     public Iterator<T> iterator()
 140  
     {
 141  0
         return nameMap.values().iterator();
 142  
     }
 143  
 
 144  
     /**
 145  
      * Returns size (cardinality) of this set.
 146  
      *
 147  
      * @return The cardinality of this Set.
 148  
      */
 149  
     public int size()
 150  
     {
 151  0
         return nameMap.size();
 152  
     }
 153  
 
 154  
     /**
 155  
      * list of role names in this set
 156  
      *
 157  
      * @return The string representation of this Set.
 158  
      */
 159  
     @Override
 160  
     public String toString()
 161  
     {
 162  0
         StringBuffer sbuf = new StringBuffer(12 * size());
 163  0
         for(Iterator<String> it = nameMap.keySet().iterator(); it.hasNext(); )
 164  
         {
 165  0
             sbuf.append(it.next());
 166  
 
 167  0
             if(it.hasNext())
 168  
             {
 169  0
                 sbuf.append(", ");
 170  
             }
 171  
         }
 172  0
         return sbuf.toString();
 173  
     }
 174  
 }
 175