import cmlog.*;
import java.io.*;
import java.net.*;
import java.text.*;
import java.util.*;
public class cmlogBrowserQuery implements BrowserQueryEventListener
{
private String host_ = null;
private int port_ = 0;
private static String format_ = "H:m@M/d/y";
public cmlogBrowserQuery ()
{
}
public void handleQueryEvent (BrowserEvent event)
{
cdevData data = null;
cdevDataEntry de = null;
String verb = event.verb;
int nmsgs = 0;
int i;
if (event.status == Config.CMLOG_SUCCESS ||
event.status == Config.CMLOG_INCOMPLETE) {
// get array of messages
cdevMessage[] msgs = event.packet.messages();
// get number of messages
nmsgs = event.packet.numberOfMessages();
for (i = 0; i < nmsgs; i++) {
data = msgs[i].getData ();
if (data != null)
de = data.get (Config.TEXT_TAG);
if (de != null)
System.out.println (de.stringValue());
}
}
else if (event.status == Config.CMLOG_ERROR ||
event.status == Config.CMLOG_NOTFOUND) {
System.out.println ("Cannot find anything");
}
}
public static void main (String[] args)
{
if (args.length < 5) {
System.err.println ("Usage: BrowserQuery host port start end protoversion(1 or 2) [debug]");
System.exit (-1);
}
cmlogBrowserQuery test = new cmlogBrowserQuery ();
test.host_ = args[0];
test.port_ = Integer.valueOf (args[1]).intValue();
Config.PROTOCOL_MAJOR_VERSION = Integer.valueOf (args[4]).intValue();
if (args.length > 5) {
String tstring = args[5];
if (tstring.compareTo ("debug") == 0)
Config.debug = true;
}
// get start and end time
SimpleDateFormat formatter = new SimpleDateFormat (format_);
ParsePosition pos = new ParsePosition(0);
Date start = formatter.parse (args[2], pos);
if (start == null) {
System.err.println ("Start time syntax error");
System.exit (1);
}
pos.setIndex (0);
Date end = formatter.parse (args[3], pos);
if (end == null) {
System.err.println ("End time syntax error");
System.exit (1);
}
// create new Browser
Browser br = new Browser ();
try {
br.connect (test.host_, test.port_);
}catch (UnknownHostException ue) {
System.err.println (ue);
System.exit (-1);
}catch (IOException e) {
System.err.println (e);
System.exit (-1);
}
// create query data containing start and end time
int ssec = (int)(start.getTime()/1000);
int esec = (int)(end.getTime()/1000);
cdevData qdata = new cdevData();
qdata.insert (Config.START_TAG, ssec);
qdata.insert (Config.END_TAG, esec);
BrowserEvent oev = null;
try {
oev = br.query (qdata, test);
}catch (IllegalArgumentException e) {
System.err.println (e);
System.exit (-1);
}catch (IOException ie) {
System.err.println (ie);
System.exit (-1);
}
}
}