/*
* Copyright 2010-2015 Institut Pasteur.
*
* This file is part of Icy.
*
* Icy is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Icy is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Icy. If not, see <http://www.gnu.org/licenses/>.
*/
package icy.network;
import icy.util.StringUtil;
import org.schwering.irc.lib.IRCEventListener;
import org.schwering.irc.lib.IRCModeParser;
import org.schwering.irc.lib.IRCUser;
/**
* @author Stephane
*/
public abstract class IRCEventListenerImpl implements IRCEventListener
{
/**
* Called on message receive event.
*
* @param nick
* nickname of the author of message if any (can be null).
* @param target
* channel or nickname of destination if any (can be null).
* @param text
* message
*/
public abstract void onReceive(String nick, String target, String text);
public void onConnected()
{
if (getShowStatusMessages())
onReceive(null, null, "Connected");
}
@Override
public void onRegistered()
{
// redirect
onConnected();
}
@Override
public void onDisconnected()
{
if (getShowStatusMessages())
onReceive(null, null, "Disconnected.");
}
@Override
public void onError(String msg)
{
onReceive(null, null, "Error: " + msg);
}
@Override
public void onError(int num, String msg)
{
onReceive(null, null, "Error #" + num + ": " + msg);
}
@Override
public void onInvite(String chan, IRCUser u, String nickPass)
{
if (getShowStatusMessages())
onReceive(null, chan, u.getNick() + " invites " + nickPass + ".");
}
@Override
public void onJoin(String chan, IRCUser u)
{
if (getShowStatusMessages())
onReceive(null, chan, u.getNick() + " joins " + chan + ".");
}
@Override
public void onKick(String chan, IRCUser u, String nickPass, String msg)
{
if (getShowStatusMessages())
onReceive(null, chan, u.getNick() + " kicks " + nickPass + ".");
}
public void onLeave(String chan, IRCUser u, String msg)
{
if (getShowStatusMessages())
{
if (StringUtil.isEmpty(msg))
onReceive(null, chan, u.getNick() + " leaves " + chan + ".");
else
onReceive(null, chan, u.getNick() + " leaves " + chan + "(" + msg + ").");
}
}
@Override
public void onMode(IRCUser u, String nickPass, String mode)
{
if (getShowStatusMessages())
onReceive(null, null, u.getNick() + " sets modes " + mode + " " + nickPass + ".");
}
@Override
public void onMode(String chan, IRCUser u, IRCModeParser mp)
{
if (getShowStatusMessages())
onReceive(null, chan, u.getNick() + " sets mode: " + mp.getLine() + ".");
}
@Override
public void onNick(IRCUser u, String nickNew)
{
if (getShowStatusMessages())
onReceive(null, null, u.getNick() + " is now known as " + nickNew + ".");
}
@Override
public void onNotice(String target, IRCUser u, String msg)
{
onReceive(u.getNick(), target, "notice: " + msg);
}
@Override
public void onPart(String chan, IRCUser u, String msg)
{
// redirect
onLeave(chan, u, msg);
}
@Override
public void onPrivmsg(String chan, IRCUser u, String msg)
{
onReceive(u.getNick(), chan, msg);
}
@Override
public void onQuit(IRCUser u, String msg)
{
if (getShowStatusMessages())
{
if (StringUtil.isEmpty(msg))
onReceive(null, null, u.getNick() + " quits chat.");
else
onReceive(null, null, u.getNick() + " quits chat (" + msg + ").");
}
}
@Override
public void onReply(int num, String value, String msg)
{
onReceive(null, null, "Reply #" + num + ": " + value + " " + msg);
}
@Override
public void onTopic(String chan, IRCUser u, String topic)
{
onReceive(null, chan, u.getNick() + " changes topic into: " + topic + ".");
}
@Override
public void onPing(String p)
{
// do nothing
}
@Override
public void unknown(String a, String b, String c, String d)
{
onReceive(null, null, a + " " + b + ">" + c + " " + d);
// onReceive(d);
}
protected abstract boolean getShowStatusMessages();
}