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.events.IRCEvent;
import com.esri.geoevent.solutions.transport.irc.jerklib.events.impl.WhoEventImpl;
public class WhoParser implements CommandParser
{
public IRCEvent createEvent(EventToken token, IRCEvent event)
{
String data = token.data();
Pattern p = Pattern.compile("^:.+?\\s+352\\s+.+?\\s+(.+?)\\s+(.+?)\\s+(.+?)\\s+(.+?)\\s+(.+?)\\s+(.+?):(\\d+)\\s+(.+)$");
Matcher m = p.matcher(data);
if (m.matches())
{
boolean away = m.group(6).charAt(0) == 'G';
return new WhoEventImpl(m.group(1), // channel
Integer.parseInt(m.group(7)), // hop count
m.group(3), // hostname
away, // status indicator
m.group(5), // nick
data, // raw event data
m.group(8), // real name
m.group(4), // server name
event.getSession(), // session
m.group(2) // username
);
}
return event;
}
}