KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > rero > ircfw > UserMode


1 package rero.ircfw;
2
3 import java.util.Iterator JavaDoc;
4 import java.util.LinkedHashSet JavaDoc;
5 import java.util.Set JavaDoc;
6
7 /**
8  * This class is a mode interpreter for each server. Basically each server can have channel user prefix modes. The
9  * state of these modes is stored as an int within each User object (associated in a hashmap with the Channel object as
10  * the key). This class is used to make sense of the integer mode value for a given servers configuration
11  */

12 public class UserMode {
13   private String JavaDoc modes; // the actual mode characters i.e. ov
14
private String JavaDoc chars; // the actual display characters i.e. @+
15

16   public UserMode(String JavaDoc m, String JavaDoc c) {
17     modes = m;
18     chars = c;
19   }
20
21   public Set JavaDoc getUsersWithMode(Channel channel, char mode) {
22     Set JavaDoc copy = new LinkedHashSet JavaDoc();
23     Iterator JavaDoc i = channel.getAllUsers().iterator();
24     while (i.hasNext()) {
25       User temp = (User) i.next();
26       int m = temp.getModeFor(channel);
27
28       if (isMode(m, mode)) {
29         copy.add(temp);
30       }
31     }
32
33     return copy;
34   }
35
36   public boolean isPrefixMode(char m) {
37     return modes.indexOf(m) > -1;
38   }
39
40   public boolean isPrefixChar(char m) {
41     return chars.indexOf(m) > -1;
42   }
43
44   public char getDisplayForMode(char mode) {
45     return chars.charAt(modes.indexOf(mode));
46   }
47
48   public char getModeForDisplay(char display) {
49     return modes.charAt(chars.indexOf(display));
50   }
51
52   public int getValueFor(char mchar) {
53     return 1 << (modes.length() - modes.indexOf(mchar));
54   }
55
56   public int setMode(int original, char mchar) {
57     int value = getValueFor(mchar);
58     return original | value;
59   }
60
61   public int unsetMode(int original, char mchar) {
62     int value = getValueFor(mchar);
63     return original & ~(value);
64   }
65
66   public boolean isMode(int original, char mchar) {
67     if (mchar == ' ' && original == 0)
68       return true;
69
70     int value = getValueFor(mchar);
71     return ((original & value) == value);
72   }
73
74
75   public String JavaDoc getModes() {
76     return modes;
77   }
78
79   public String JavaDoc getChars() {
80     return chars;
81   }
82
83   public String JavaDoc toString(int original) {
84     for (int x = 0; x < modes.length(); x++) {
85       if (isMode(original, modes.charAt(x))) {
86         return String.valueOf(chars.charAt(x));
87       }
88     }
89     return "";
90   }
91
92   public String JavaDoc toString() {
93     return "[UCM:(" + modes + ")" + chars + "]";
94   }
95
96 }
97
Popular Tags