KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > zirc > base > ChanUser


1 package zirc.base ;
2
3 //zIrc, irc client.
4
// Copyright (C) 2004 CoolBytes(Stephane claret, Andre Aymon, Alban Zumofen) coolbytes@hotmail.com
5
//
6
// This program is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU General Public License
8
// as published by the Free Software Foundation; either version 2
9
// of the License, or (at your option) any later version.
10
//
11
// This program is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
// GNU General Public License for more details.
15

16 /**
17  * <p>Title: ChanUser</p>
18  * <p>Description: classe qui represente un user, permet aussi le tri par comparable</p>
19  * <p>Copyright: Copyright (c) 2004</p>
20  * <p>Company: CoolBytes(Stephane claret, Andre Aymon, Alban Zumofen) coolbytes@hotmail.com</p>
21  * @version 1.0
22  */

23
24 public class ChanUser implements Comparable JavaDoc
25 {
26
27   //constante de statut... (numérique car plus vite triés)
28
public static final int OP = 0 ;
29   public static final int HALFOP = 1 ;
30   public static final int VOICE = 2 ;
31   public static final int NORM = 3 ;
32
33   //tableau de car des rangs, dans l ordre des constantes ci dessus
34
public static final char[] RANKCHARS =
35       {'@', '%', '+', ' '} ;
36
37   //le ou les rangs du user
38
private char[] userRanks = new char[4] ;
39
40   private int rank ;
41   private String JavaDoc user ;
42
43   public ChanUser(String JavaDoc _user)
44   {
45     String JavaDoc rang = _user.substring(0, 1) ;
46     if (rang.equals("@"))
47     {
48       user = _user.substring(1, _user.length()) ;
49       rank = 0 ;
50     }
51     else
52     {
53       if (rang.equals("%"))
54       {
55         user = _user.substring(1, _user.length()) ;
56         rank = 1 ;
57       }
58       else
59       {
60         if (rang.equals("+"))
61         {
62           user = _user.substring(1, _user.length()) ;
63           rank = 2 ;
64         }
65         else
66         {
67           user = _user ;
68           rank = 3 ;
69         }
70       }
71     }
72   }
73
74   public ChanUser(String JavaDoc _user, int _rank)
75   {
76     user = _user ;
77     rank = _rank ;
78
79   }
80
81   public int getRank()
82   {
83     return rank ;
84   }
85
86   public String JavaDoc getNameSansRank()
87   {
88     return user ;
89   }
90
91   public String JavaDoc getNameAvecRank()
92   {
93     return new String JavaDoc(RANKCHARS[rank] + user).trim() ;
94   }
95
96   //sera appelée par le framework pour l'affichage dans la liste
97
public String JavaDoc toString()
98   {
99     return getNameAvecRank() ;
100   }
101
102   //Deux users sont égaux si ils ont le meme nom
103
public boolean equals(Object JavaDoc o)
104   {
105     if (o == null)
106     {
107       return false ;
108     }
109
110     if (!(o instanceof ChanUser))
111     {
112       return false ;
113     }
114
115     if (!(((ChanUser)(o)).getNameSansRank().equalsIgnoreCase(user)))
116     {
117       return false ;
118     }
119
120     return true ;
121   }
122
123   public void setName(String JavaDoc _name)
124   {
125     user = _name ;
126   }
127
128   /**
129    * compareto
130    * ici on compare les users, et on compare sur le premier char si le user est
131    * normale, sinon on compare sur le 2eme char
132    *
133    * @param o2 Object
134    * @return int
135    */

136   public int compareTo(Object JavaDoc o2)
137   {
138     //c'est des chanUser que je compare
139
//mais oui chuis sur
140
ChanUser u2 = (ChanUser)(o2) ;
141
142     //utiliser le rang pour une premiere discrimination, le plus petit l'emporte!
143
int ret = this.getRank() - u2.getRank() ;
144     if (ret < 0)
145     {
146       //u1 passe avant
147
return -1 ;
148     }
149     else
150     {
151       if (ret > 0)
152       {
153         //u2 passe avant
154
return 1 ;
155       }
156       else
157       {
158         //une comparaison chaine de caractère est necessaire
159
return this.getNameSansRank().compareToIgnoreCase(u2.getNameSansRank()) ;
160       }
161     }
162   }
163
164 }
165
Popular Tags