diff --git a/src/net/java/sip/communicator/impl/protocol/irc/ModeParser.java b/src/net/java/sip/communicator/impl/protocol/irc/ModeParser.java index 04dcc8740..e44f0082b 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/ModeParser.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/ModeParser.java @@ -7,30 +7,56 @@ public class ModeParser { + /** + * List of parsed, processed modes. + */ private final List modes = new ArrayList(); + + /** + * Index of current parameter. + */ private int index = 0; + + /** + * Additional parameters + */ private String[] params; - + + /** + * Constructor for parsing based on an irc-api ChannelModeMessage. + * + * @param message ChannelModeMessage describing mode changes + */ public ModeParser(ChannelModeMessage message) { this(message.getModeStr()); } - + + /** + * Constructor for initiating mode parser and parsing mode string. + * + * @param modestring mode string that should be parsed + */ protected ModeParser(String modestring) { String[] parts = modestring.split(" "); String mode = parts[0]; - this.params = new String[parts.length-1]; - System.arraycopy(parts, 1, this.params, 0, parts.length-1); + this.params = new String[parts.length - 1]; + System.arraycopy(parts, 1, this.params, 0, parts.length - 1); parse(mode); } + /** + * Parse a complete mode string and extract individual mode entries. + * + * @param modestring full mode string + */ private void parse(String modestring) { boolean adding = true; - for(char c : modestring.toCharArray()) + for (char c : modestring.toCharArray()) { - switch(c) + switch (c) { case '+': adding = true; @@ -44,61 +70,115 @@ private void parse(String modestring) ModeEntry entry = process(adding, c); modes.add(entry); } - catch(IllegalArgumentException e) + catch (IllegalArgumentException e) { - System.out.println("Unknown mode encountered: '"+c+"' (mode string '"+modestring+"')"); + System.out.println("Unknown mode encountered: '" + c + + "' (mode string '" + modestring + "')"); } break; } } } - + + /** + * Process mode character given state of addition/removal. + * + * @param add indicates whether mode change is addition or removal + * @param mode mode character + * @return returns an entry that contains all parts of an individual mode + * change + */ private ModeEntry process(boolean add, char mode) { - switch(mode) + switch (mode) { case 'O': - return new ModeEntry(add, Mode.bySymbol(mode), this.params[this.index++]); + return new ModeEntry(add, Mode.bySymbol(mode), + this.params[this.index++]); case 'o': - return new ModeEntry(add, Mode.bySymbol(mode), this.params[this.index++]); + return new ModeEntry(add, Mode.bySymbol(mode), + this.params[this.index++]); case 'v': - return new ModeEntry(add, Mode.bySymbol(mode), this.params[this.index++]); + return new ModeEntry(add, Mode.bySymbol(mode), + this.params[this.index++]); case 'l': - String[] params = (add ? new String[] { this.params[this.index++] } : new String[]{}); + String[] params = (add ? new String[] + { this.params[this.index++] } : new String[] {}); return new ModeEntry(add, Mode.bySymbol(mode), params); default: - throw new IllegalArgumentException(""+mode); + throw new IllegalArgumentException("" + mode); } } - + + /** + * Get list of modes. + * + * @return returns list of parsed modes + */ public List getModes() { return modes; } - + + /** + * Class for single mode entry, optionally with corresponding parameter(s). + */ public static class ModeEntry { + /** + * Flag to indicate addition or removal of mode. + */ private final boolean added; + + /** + * Type of mode. + */ private final Mode mode; + + /** + * Optional additional parameter(s). + */ private final String[] params; - - protected ModeEntry(boolean add, Mode mode, String... params) + + /** + * Constructor. + * + * @param add true if mode is added, false if it is removed + * @param mode type of mode + * @param params optional, additional parameters + */ + private ModeEntry(boolean add, Mode mode, String... params) { this.added = add; this.mode = mode; this.params = params; } - + + /** + * Added or removed. + * + * @return returns true if added, removed otherwise + */ public boolean isAdded() { return this.added; } - + + /** + * Get type of mode + * + * @return returns enum instance of mode + */ public Mode getMode() { return this.mode; } - + + /** + * Get additional parameters + * + * @return returns array of additional parameters if any + */ public String[] getParams() { return this.params;