Time calculations when parsing log files

This commit is contained in:
Andrea Schweer
2012-05-16 13:40:27 +12:00
parent a3297ac6cd
commit 6f0c9b518f

View File

@@ -18,17 +18,9 @@ import java.sql.SQLException;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.*;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.StringTokenizer;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
@@ -1031,7 +1023,8 @@ public class LogAnalyser
public static String unParseDate(Date date) public static String unParseDate(Date date)
{ {
// Use SimpleDateFormat // Use SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd'T'hh:mm:ss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
return sdf.format(date); return sdf.format(date);
} }
@@ -1205,28 +1198,33 @@ public class LogAnalyser
if (oracle) if (oracle)
{ {
dateQuery.append(" AND TO_TIMESTAMP( TO_CHAR(text_value), "+ dateQuery.append(" AND TO_TIMESTAMP( TO_CHAR(text_value), "+
"'yyyy-mm-dd\"T\"hh24:mi:ss\"Z\"' ) > TO_DATE('" + "'yyyy-mm-dd\"T\"hh24:mi:ss\"Z\"' ) >= TO_DATE('" +
unParseDate(startDate) + "', 'yyyy-MM-dd') "); unParseDate(startDate) + "', 'yyyy-MM-dd\"T\"hh24:mi:ss\"Z\"') ");
} }
else else
{ {
dateQuery.append(" AND text_value::timestamp > '" + dateQuery.append(" AND text_value::timestamp >= '" +
unParseDate(startDate) + "'::timestamp "); unParseDate(startDate) + "'::timestamp ");
} }
} }
if (endDate != null) if (endDate != null)
{ {
// adjust end date to account for timestamp comparison
GregorianCalendar realEndDate = new GregorianCalendar();
realEndDate.setTime(endDate);
realEndDate.add(Calendar.DAY_OF_MONTH, 1);
Date queryEndDate = realEndDate.getTime();
if (oracle) if (oracle)
{ {
dateQuery.append(" AND TO_TIMESTAMP( TO_CHAR(text_value), "+ dateQuery.append(" AND TO_TIMESTAMP( TO_CHAR(text_value), "+
"'yyyy-mm-dd\"T\"hh24:mi:ss\"Z\"' ) < TO_DATE('" + "'yyyy-mm-dd\"T\"hh24:mi:ss\"Z\"' ) < TO_DATE('" +
unParseDate(endDate) + "', 'yyyy-MM-dd') "); unParseDate(queryEndDate) + "', 'yyyy-MM-dd\"T\"hh24:mi:ss\"Z\"') ");
} }
else else
{ {
dateQuery.append(" AND text_value::timestamp < '" + dateQuery.append(" AND text_value::timestamp < '" +
unParseDate(endDate) + "'::timestamp "); unParseDate(queryEndDate) + "'::timestamp ");
} }
} }