@Override public TopicMessage build(String aMessage) { // user TOPIC #channel :topic int idx1 = aMessage.indexOf(' '); int idx2 = aMessage.indexOf(' ', idx1 + 1); int idx3 = aMessage.indexOf(' ', idx2 + 1); String _user = aMessage.substring(1, idx1); String _chan = aMessage.substring(idx2 + 1, idx3); String _topic = aMessage.substring(idx3 + 1, aMessage.length()).substring(1); return new TopicMessage(_chan, new WritableIRCTopic(_user, new Date(), _topic)); } }
@Override public void onTopicChange(TopicMessage aMsg) { WritableIRCChannel _chan = getIRCStateImpl().getWritableChannelByName(aMsg.getChannelName()); savedOldState(_chan); WritableIRCTopic _wit = (WritableIRCTopic) _chan.getTopic(); _wit.setDate(aMsg.getTopic().getDate()); _wit.setSetBy(aMsg.getTopic().getSetBy()); _wit.setValue(aMsg.getTopic().getValue()); }
@Override public void onMessage(IMessage aMessage) { if (aMessage instanceof TopicMessage) { TopicMessage _topicMsg = (TopicMessage) aMessage; callback.onSuccess(_topicMsg.getTopic().getValue()); } else if (aMessage instanceof ServerNumericMessage) { if (((ServerNumericMessage) aMessage).getNumericCode().equals(IRCServerNumerics.NOT_CHANNEL_OP)) { callback.onFailure(new IRCException(((ServerNumericMessage) aMessage).getText())); } } } }