KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > activedirectory > ActiveDirectoryGroup


1 package com.sslexplorer.activedirectory;
2
3 import java.io.Serializable JavaDoc;
4
5 import com.sslexplorer.realms.Realm;
6 import com.sslexplorer.security.Role;
7
8 /**
9  * Implementation of a {@link com.sslexplorer.security.Role} that is created
10  * from an Active Directory Group.
11  *
12  * @author Lee Painter <a HREF="mailto:lee@3sp.com">&lt;lee@3sp.com&gt;</a>
13  * @author Brett Smith <a HREF="mailto:brett@3sp.com">&lt;brett@3sp.com&gt;</a>
14  */

15
16 public final class ActiveDirectoryGroup implements Role<ActiveDirectoryGroup>, Serializable JavaDoc {
17
18     private static final long serialVersionUID = -7675417973639150879L;
19     private final String JavaDoc sAMAccountName;
20     private final String JavaDoc originalDn;
21     private final String JavaDoc escapedDn;
22     private final Long JavaDoc rid;
23     private ActiveDirectoryGroup[] parents;
24     private final Realm realm;
25
26     public ActiveDirectoryGroup(String JavaDoc samAccountName, String JavaDoc dn, String JavaDoc escapedDn, Long JavaDoc rid, Realm realm) {
27         this.sAMAccountName = samAccountName;
28         this.originalDn = dn;
29         this.escapedDn = escapedDn;
30         this.rid = rid;
31         this.realm = realm;
32     }
33         
34     /*
35      * (non-Javadoc)
36      * @see com.sslexplorer.policyframework.Principal#getPrincipalName()
37      */

38     public String JavaDoc getPrincipalName() {
39         return sAMAccountName;
40     }
41
42     /**
43      * Get the original un-escaped dn
44      * @return dn
45      */

46     public String JavaDoc getOriginalDn() {
47         return originalDn;
48     }
49     
50     /**
51      * Get the escaped dn
52      * @return
53      */

54     public String JavaDoc getDn() {
55         return escapedDn;
56     }
57
58     /**
59      * Get the RID for this role. This is used to lookup a users primary group
60      * @return RID
61      */

62     public Long JavaDoc getRID() {
63         return rid;
64     }
65
66     void setParents(ActiveDirectoryGroup[] parents) {
67         this.parents = parents;
68     }
69
70     ActiveDirectoryGroup[] getParents() {
71         return parents;
72     }
73     
74     /*
75      * (non-Javadoc)
76      * @see com.sslexplorer.policyframework.Principal#getRealm()
77      */

78     public Realm getRealm() {
79         return realm;
80     }
81     
82     static Long JavaDoc getRIDFromSID(byte[] sid) {
83         String JavaDoc rid = "";
84         for (int i = 6; i > 0; i--) {
85             rid += byteToHex(sid[i]);
86         }
87
88         long authority = Long.parseLong(rid);
89         if (authority != 5) {
90             return null;
91         }
92         
93         rid = "";
94         for (int j = 11; j > 7; j--) {
95             rid += byteToHex(sid[j + (4 * 4)]);
96         }
97         return new Long JavaDoc(Long.parseLong(rid, 16));
98     }
99     
100     private static String JavaDoc byteToHex(byte b) {
101         String JavaDoc ret = Integer.toHexString(b & 0xFF);
102         if (ret.length() < 2) {
103             ret = "0" + ret;
104         }
105         return ret;
106     }
107     
108     /*
109      * (non-Javadoc)
110      * @see java.lang.Object#toString()
111      */

112     public String JavaDoc toString() {
113         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
114         buffer.append("[");
115         buffer.append("principalName='").append(sAMAccountName).append("' ");
116         buffer.append("originalDn='").append(originalDn).append("' ");
117         buffer.append("dn='").append(escapedDn).append("' ");
118         buffer.append("realm='").append(realm).append("'");
119         buffer.append("']");
120         return buffer.toString();
121     }
122
123     /**
124      * Compare this user against another using the users name for comparison
125      * @param o user to compare with
126      * @return comparison
127      */

128     public int compareTo(ActiveDirectoryGroup o) {
129         return getPrincipalName().compareTo(o.getPrincipalName());
130     }
131
132     public int hashCode() {
133         return sAMAccountName.hashCode();
134     }
135
136     public boolean equals(Object JavaDoc obj) {
137         if (obj != null && obj instanceof ActiveDirectoryGroup) {
138             return ((ActiveDirectoryGroup) obj).sAMAccountName.equals(sAMAccountName);
139         }
140         return false;
141     }
142 }
Popular Tags