1 28 package net.sf.jguard.core.principals; 29 30 import java.security.Permission ; 31 import java.util.HashSet ; 32 import java.util.Iterator ; 33 import java.util.Set ; 34 35 import net.sf.jguard.core.authorization.permissions.JGPermissionCollection; 36 37 38 44 public class RolePrincipal implements BasePrincipal{ 45 46 47 50 private static final long serialVersionUID = 3761412993065431095L; 51 52 private String localName=""; 53 54 private String applicationName = DEFAULT_APPLICATION_NAME; 56 private Set permissionsFromDomains; 58 private Set permissions; 60 private Set orphanedPermissions; 62 private Set domains; 64 private boolean active = true; 65 private String definition = "true"; 66 67 71 private Set descendants; 72 73 76 public RolePrincipal(){ 77 permissions = new HashSet (); 78 domains = new HashSet (); 79 orphanedPermissions = new HashSet (); 80 permissionsFromDomains = new HashSet (); 81 descendants = new HashSet (); 82 } 83 84 88 public RolePrincipal(String name){ 89 permissions = new HashSet (); 90 this.setName(name); 91 domains = new HashSet (); 92 orphanedPermissions = new HashSet (); 93 permissionsFromDomains = new HashSet (); 94 descendants = new HashSet (); 95 } 96 97 98 103 public RolePrincipal(String localName,String applicationName){ 104 permissions = new HashSet (); 105 this.localName = localName; 106 this.applicationName = applicationName; 107 domains = new HashSet (); 108 orphanedPermissions = new HashSet (); 109 permissionsFromDomains = new HashSet (); 110 descendants = new HashSet (); 111 } 112 116 public Object clone(){ 117 RolePrincipal clone = new RolePrincipal(this.localName,this.applicationName); 118 clone.setDomains(new HashSet (this.domains)); 119 clone.setPermissions(new HashSet (this.permissions)); 120 clone.setDescendants(new HashSet (this.descendants)); 121 return clone; 122 123 } 124 127 public String getName() { 128 return getName(localName, applicationName); 129 } 130 131 132 135 public static String getName(String localName) { 136 return getName(localName, "*"); 137 } 138 141 public static String getName(String localName,String applicationName) { 142 StringBuffer sb = new StringBuffer (20); 143 sb.append(applicationName); 144 sb.append("#"); 145 sb.append(localName); 146 return sb.toString(); 147 } 148 149 155 public boolean equals(Object another){ 156 157 if(another instanceof RolePrincipal){ 158 RolePrincipal principal = (RolePrincipal)another; 159 if(principal.getName().equals(this.getName())){ 160 return true; 161 } 162 } 163 164 return false; 165 } 166 167 171 public String toString(){ 172 StringBuffer sb = new StringBuffer (); 173 sb.append(" principal class name ="); 174 sb.append(getClass().getName()); 175 sb.append("\n"); 176 sb.append(" principal localName ="); 177 sb.append(localName); 178 sb.append("\n"); 179 sb.append(" principal application name ="); 180 sb.append(applicationName); 181 sb.append("\n"); 182 sb.append(" principal domains ="); 183 sb.append(domains); 184 sb.append("\n"); 185 sb.append(" principal permissions ="); 186 sb.append(permissions); 187 sb.append("\n"); 188 sb.append(" principal descendants ="); 189 sb.append(descendants); 190 sb.append("\n"); 191 return sb.toString(); 192 } 193 194 197 public int hashCode(){ 198 return localName.hashCode()+applicationName.hashCode(); 199 } 200 203 public void setName(String string) { 204 String [] tokens = string.split("#"); 205 if(tokens.length==1){ 206 applicationName = "*"; 207 localName = tokens[0]; 208 }else if(tokens.length==2){ 209 applicationName = tokens[0]; 210 localName = tokens[1]; 211 212 }else{ 213 throw new IllegalArgumentException (" name is composed of applicationName#localName"); 214 } 215 216 217 218 219 } 220 221 226 public Set getAllPermissions() { 227 Set allPermissions = new HashSet (); 229 allPermissions.addAll(permissions); 230 231 for (Iterator it = descendants.iterator(); it.hasNext(); ) { 233 allPermissions.addAll(((RolePrincipal) it.next()).getAllPermissions()); 234 } 235 236 return allPermissions; 237 } 238 239 243 public Set getPermissions(){ 244 return permissions; 245 } 246 247 251 public Set getOrphanedPermissions(){ 252 return orphanedPermissions; 253 } 254 255 258 public void setPermissions(Set perms) { 259 Iterator itPermissionsSet = perms.iterator(); 260 while(itPermissionsSet.hasNext()){ 261 Permission perm = (Permission )itPermissionsSet.next(); 262 addPermission(perm); 263 } 264 } 265 269 public void addPermission(Permission permission){ 270 permissions.add(permission); 271 Iterator itDomains = domains.iterator(); 272 boolean orphan = true; 273 while(itDomains.hasNext()){ 274 JGPermissionCollection temp = (JGPermissionCollection)itDomains.next(); 275 if(temp.containsPermission(permission)){ 276 orphan = false; 277 break; 278 } 279 } 280 if(orphan == true){ 281 orphanedPermissions.add(permission); 282 }else{ 283 permissionsFromDomains.add(permission); 284 } 285 } 286 287 291 public void addDomain(JGPermissionCollection domain){ 292 domains.add(domain); 293 Set permissionsDomain = domain.getPermissions(); 294 orphanedPermissions.removeAll(permissionsDomain); 296 permissionsFromDomains.addAll(permissionsDomain); 298 permissions.addAll(permissionsDomain); 299 } 300 301 302 305 public String getApplicationName() { 306 return applicationName; 307 } 308 309 313 public void setApplicationName(String string) { 314 applicationName = string; 315 } 316 317 320 public Set getDomains() { 321 return domains; 322 } 323 324 325 328 public Set getPermissionsFromDomains() { 329 return permissionsFromDomains; 330 } 331 332 335 public void setDomains(Set doms) { 336 Iterator it = doms.iterator(); 337 while(it.hasNext()){ 338 JGPermissionCollection dom = (JGPermissionCollection)it.next(); 339 this.addDomain(dom); 340 } 341 342 } 343 344 345 346 357 public int compareTo(Object o) { 358 RolePrincipal principal = (RolePrincipal)o; 359 if (this.equals(o)){ 360 return 0; 361 } 362 363 return this.getName().compareTo(principal.getName()); 364 } 365 366 public void removeDomain(JGPermissionCollection domain){ 367 permissionsFromDomains.removeAll(domain.getPermissions()); 368 permissions.removeAll(domain.getPermissions()); 369 domains.remove(domain); 370 371 } 372 373 public Set getDescendants() { 374 return descendants; 375 } 376 377 public void setDescendants(Set descendants) { 378 this.descendants = descendants; 379 } 380 381 public boolean isActive() { 382 return active; 383 } 384 385 public void setActive(boolean active) { 386 this.active = active; 387 } 388 389 392 public String getDefinition() { 393 return definition; 394 } 395 396 399 public void setDefinition(String definition) { 400 this.definition = definition; 401 } 402 403 public String getLocalName() { 404 return localName; 405 } 406 407 public void setLocalName(String localName) { 408 this.localName = localName; 409 } 410 } 411 | Popular Tags |