From 860d446d28776ec842fa53e8e08538d4e093d6e9 Mon Sep 17 00:00:00 2001 From: snowleo Date: Wed, 12 Oct 2011 03:14:07 +0200 Subject: EssentialsUpdate WIP --- .../f00f/net/irc/martyr/clientstate/Member.java | 114 +++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 EssentialsUpdate/src/f00f/net/irc/martyr/clientstate/Member.java (limited to 'EssentialsUpdate/src/f00f/net/irc/martyr/clientstate/Member.java') diff --git a/EssentialsUpdate/src/f00f/net/irc/martyr/clientstate/Member.java b/EssentialsUpdate/src/f00f/net/irc/martyr/clientstate/Member.java new file mode 100644 index 000000000..489f21961 --- /dev/null +++ b/EssentialsUpdate/src/f00f/net/irc/martyr/clientstate/Member.java @@ -0,0 +1,114 @@ +package f00f.net.irc.martyr.clientstate; + +import f00f.net.irc.martyr.util.FullNick; + +/** + *

This class allows channels to keep track of individual users. Each + * user in the channel has a nick and has voice, ops, both, or none. + * Note that nicks can change, but the information we have about that + * person does not.

+ * + *

Control over events that happen to this class can be obtained in + * a similar fashion to how control for the Channel is taken from + * ClientState.

+ */ +public class Member +{ + + private FullNick nick; + private boolean hasOpsV = false; + private boolean hasVoiceV = false; + + /** + *

Strips off the leading 'at' or 'plus', sets ops or voice, and + * keeps the nick. Calls the methods setVoice(...) and + * setOps(...) from the constructor, if those conditions + * are true. The nick is set before setVoice or setOps are + * called.

+ * + * @param nickStr Nick of member + */ + public Member( String nickStr ) + { + char first = nickStr.charAt(0); + String shortNick = nickStr.substring(1, nickStr.length() ); + if( first == '@' ) + { + nick = new FullNick( shortNick ); + setOps( true ); + } + else if( first == '+' ) + { + nick = new FullNick( shortNick ); + setVoice( true ); + } + else + { + nick = new FullNick( nickStr ); + } + } + + /** + * Does a nick-wise compare. + * + * @param member Member to compare against + * @return True or false of this member equals the other one + */ + public boolean equals( Member member ) + { + return equals( member.nick ); + } + + public boolean equals( FullNick fullNick ) + { + return nick.equals( fullNick ); + } + + public boolean equals( Object o ) + { + if( o instanceof Member ) + return equals( (Member)o ); + else if( o instanceof FullNick ) + return equals( (FullNick)o ); + else return false; + } + + public int hashCode() + { + return nick.hashCode(); + } + + public void setOps( boolean ops ) + { + hasOpsV = ops; + } + + public void setVoice( boolean voice ) + { + hasVoiceV = voice; + } + + public boolean hasOps() + { + return hasOpsV; + } + + public boolean hasVoice() + { + return hasVoiceV; + } + + public void setNick( FullNick nick ) + { + this.nick = nick; + } + + public FullNick getNick() + { + return nick; + } + +} + + + -- cgit v1.2.3