package com.esri.geoevent.solutions.transport.irc.jerklib.parsers;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.esri.geoevent.solutions.transport.irc.jerklib.EventToken;
import com.esri.geoevent.solutions.transport.irc.jerklib.Session;
import com.esri.geoevent.solutions.transport.irc.jerklib.events.AwayEvent;
import com.esri.geoevent.solutions.transport.irc.jerklib.events.IRCEvent;
import com.esri.geoevent.solutions.transport.irc.jerklib.events.AwayEvent.EventType;
import com.esri.geoevent.solutions.transport.irc.jerklib.events.impl.AwayEventImpl;
public class AwayParser implements CommandParser
{
public IRCEvent createEvent(EventToken token, IRCEvent event)
{
Pattern p = Pattern.compile("^:\\S+\\s\\d{3}\\s+(\\S+)\\s:(.*)$");
Matcher m = p.matcher(event.getRawEventData());
Session session = event.getSession();
if (m.matches())
{
switch (Integer.parseInt(token.command()))
{
case 305:
return new AwayEventImpl
(
session,
EventType.RETURNED_FROM_AWAY,
false,
true,
session.getNick(),
event.getRawEventData()
);
case 306:
{
return new AwayEventImpl
(
session,
EventType.WENT_AWAY,
true,
true,
session.getNick(),
event.getRawEventData()
);
}
}
}
// :card.freenode.net 301 r0bby_ r0bby :foo
p = Pattern.compile("^:\\S+\\s+\\d{3}\\s+\\S+\\s+(\\S+)\\s+:(.*)$");
m = p.matcher(event.getRawEventData());
m.matches();
return new AwayEventImpl(m.group(2), AwayEvent.EventType.USER_IS_AWAY, true, false, m.group(1), event.getRawEventData(), session);
}
}