001: package org.apache.turbine.util.security;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: import java.io.Serializable;
023:
024: import java.util.HashSet;
025: import java.util.Iterator;
026: import java.util.Map;
027: import java.util.Set;
028: import java.util.TreeMap;
029:
030: import org.apache.commons.lang.StringUtils;
031:
032: /**
033: * This class represents a set of Security Entities.
034: * It makes it easy to build a UI.
035: * It wraps a TreeSet object to enforce that only relevant
036: * methods are available.
037: * TreeSet's contain only unique Objects (no duplicates).
038: *
039: * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a>
040: * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
041: * @author <a href="mailto:marco@intermeta.de">Marco Knüttel</a>
042: * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
043: * @version $Id: SecuritySet.java 534527 2007-05-02 16:10:59Z tv $
044: */
045: public abstract class SecuritySet implements Serializable {
046: /** Map for "name" -> "security object" */
047: protected Map nameMap = null;
048:
049: /** Map for "id" -> "security object" */
050: protected Map idMap = null;
051:
052: /**
053: * Constructs an empty Set
054: */
055: public SecuritySet() {
056: nameMap = new TreeMap();
057: idMap = new TreeMap();
058: }
059:
060: /**
061: * Returns a set of security objects in this object.
062: *
063: * @return A Set Object
064: *
065: */
066: public Set getSet() {
067: return new HashSet(nameMap.values());
068: }
069:
070: /**
071: * Returns a set of Names in this Object.
072: *
073: * @return The Set of Names in this Object,
074: * backed by the actual data.
075: */
076: public Set getNames() {
077: return nameMap.keySet();
078: }
079:
080: /**
081: * Returns a set of Id values in this Object.
082: *
083: * @return The Set of Ids in this Object,
084: * backed by the actual data.
085: */
086: public Set getIds() {
087: return idMap.keySet();
088: }
089:
090: /**
091: * Removes all Objects from this Set.
092: */
093: public void clear() {
094: nameMap.clear();
095: idMap.clear();
096: }
097:
098: /**
099: * Searches if an Object with a given name is in the
100: * Set
101: *
102: * @param roleName Name of the Security Object.
103: * @return True if argument matched an Object in this Set; false
104: * if no match.
105: * @deprecated Use containsName(groupName) instead.
106: */
107: public boolean contains(String groupName) {
108: return containsName(groupName);
109: }
110:
111: /**
112: * Searches if an Object with a given name is in the
113: * Set
114: *
115: * @param roleName Name of the Security Object.
116: * @return True if argument matched an Object in this Set; false
117: * if no match.
118: */
119: public boolean containsName(String name) {
120: return (StringUtils.isNotEmpty(name)) ? nameMap
121: .containsKey(name) : false;
122: }
123:
124: /**
125: * Searches if an Object with a given Id is in the
126: * Set
127: *
128: * @param id Id of the Security Object.
129: * @return True if argument matched an Object in this Set; false
130: * if no match.
131: */
132: public boolean containsId(int id) {
133: return (id == 0) ? false : idMap.containsKey(new Integer(id));
134: }
135:
136: /**
137: * Returns an Iterator for Objects in this Set.
138: *
139: * @return An iterator for the Set
140: */
141: public Iterator iterator() {
142: return nameMap.values().iterator();
143: }
144:
145: /**
146: * @deprecated Use iterator() instead.
147: */
148: public Iterator elements() {
149: return iterator();
150: }
151:
152: /**
153: * Returns size (cardinality) of this set.
154: *
155: * @return The cardinality of this Set.
156: */
157: public int size() {
158: return nameMap.size();
159: }
160:
161: /**
162: * list of role names in this set
163: *
164: * @return The string representation of this Set.
165: */
166: public String toString() {
167: StringBuffer sbuf = new StringBuffer(12 * size());
168: for (Iterator it = nameMap.keySet().iterator(); it.hasNext();) {
169: sbuf.append((String) it.next());
170:
171: if (it.hasNext()) {
172: sbuf.append(", ");
173: }
174: }
175: return sbuf.toString();
176: }
177: }
|