* * Licensed under the Apache License, Version 2.0 (the "License");\r
* * you may not use this file except in compliance with the License.\r
* * You may obtain a copy of the License at\r
- * * \r
+ * *\r
* * http://www.apache.org/licenses/LICENSE-2.0\r
- * * \r
+ * *\r
* * Unless required by applicable law or agreed to in writing, software\r
* * distributed under the License is distributed on an "AS IS" BASIS,\r
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
* @version $Id: Report.java,v 1.2 2013/11/06 16:23:55 eby Exp $\r
*/\r
public class Report {\r
- /**\r
- * Generate .csv report files from the database. Usage:\r
- * <pre>\r
- * java org.onap.dmaap.datarouter.reports.Report [ -t <i>type</i> ] [ -o <i>outfile</i> ] [ <i>fromdate</i> [ <i>todate</i> ]]\r
- * </pre>\r
- * <i>type</i> should be <b>volume</b> for a {@link VolumeReport},\r
- * <b>feed</b> for a {@link FeedReport},\r
- * <b>latency</b> for a {@link LatencyReport}, or\r
- * <b>dailyLatency</b> for a {@link DailyLatencyReport}.\r
- * If <i>outfile</i> is not specified, the report goes into a file <i>/tmp/nnnnnnnnnnnnn.csv</i>,\r
- * where nnnnnnnnnnnnn is the current time in milliseconds.\r
- * If <i>from</i> and <i>to</i> are not specified, then the report is limited to the last weeks worth of data.\r
- * <i>from</i> can be the keyword <b>ALL</b> to specify all data in the DB, or the keyword <b>yesterday</b>.\r
- * Otherwise, <i>from</i> and <i>to</i> should match the pattern YYYY-MM-DD.\r
- * @param args the command line arguments\r
- */\r
- public static void main(String[] args) {\r
- ReportBase report = new VolumeReport();\r
- String outfile = "/tmp/" + System.currentTimeMillis() + ".csv";\r
- String from = null, to = null;\r
+ /**\r
+ * Generate .csv report files from the database. Usage:\r
+ * <pre>\r
+ * java org.onap.dmaap.datarouter.reports.Report [ -t <i>type</i> ] [ -o <i>outfile</i> ] [ <i>fromdate</i> [ <i>todate</i> ]]\r
+ * </pre>\r
+ * <i>type</i> should be <b>volume</b> for a {@link VolumeReport},\r
+ * <b>feed</b> for a {@link FeedReport},\r
+ * <b>latency</b> for a {@link LatencyReport}, or\r
+ * <b>dailyLatency</b> for a {@link DailyLatencyReport}.\r
+ * If <i>outfile</i> is not specified, the report goes into a file <i>/tmp/nnnnnnnnnnnnn.csv</i>,\r
+ * where nnnnnnnnnnnnn is the current time in milliseconds.\r
+ * If <i>from</i> and <i>to</i> are not specified, then the report is limited to the last weeks worth of data.\r
+ * <i>from</i> can be the keyword <b>ALL</b> to specify all data in the DB, or the keyword <b>yesterday</b>.\r
+ * Otherwise, <i>from</i> and <i>to</i> should match the pattern YYYY-MM-DD.\r
+ *\r
+ * @param args the command line arguments\r
+ */\r
+ public static void main(String[] args) {\r
+ ReportBase report = new VolumeReport();\r
+ String outfile = "/tmp/" + System.currentTimeMillis() + ".csv";\r
+ String from = null, to = null;\r
\r
- for (int i = 0; i < args.length; i++) {\r
- if (args[i].equals("-?")) {\r
- System.err.println("usage: java org.onap.dmaap.datarouter.reports.Report [ -t <i>type</i> ] [ -o <i>outfile</i> ] [ <i>fromdate</i> [ <i>todate</i> ]]");\r
- System.exit(0);\r
- } else if (args[i].equals("-o")) {\r
- if (++i < args.length) {\r
- outfile = args[i];\r
- }\r
- } else if (args[i].equals("-t")) {\r
- if (++i < args.length) {\r
- String base = args[i];\r
- base = Character.toUpperCase(base.charAt(0)) + base.substring(1);\r
- base = "org.onap.dmaap.datarouter.reports."+base+"Report";\r
- try {\r
- @SuppressWarnings("unchecked")\r
- Class<? extends ReportBase> cl = (Class<? extends ReportBase>) Class.forName(base);\r
- Constructor<? extends ReportBase> con = cl.getConstructor();\r
- report = con.newInstance();\r
- } catch (Exception e) {\r
- System.err.println("Unknown report type: "+args[i]);\r
- System.exit(1);\r
- }\r
- }\r
- } else if (from == null) {\r
- from = args[i];\r
- } else {\r
- to = args[i];\r
- }\r
- }\r
- long lfrom = 0, lto = 0;\r
- if (from == null) {\r
- // last 7 days\r
- TimeZone utc = TimeZone.getTimeZone("UTC");\r
- Calendar cal = new GregorianCalendar(utc);\r
- cal.set(Calendar.HOUR_OF_DAY, 0);\r
- cal.set(Calendar.MINUTE, 0);\r
- cal.set(Calendar.SECOND, 0);\r
- cal.set(Calendar.MILLISECOND, 0);\r
- lfrom = cal.getTimeInMillis() - (7 * 24 * 60 * 60 * 1000L); // 1 week\r
- lto = cal.getTimeInMillis() - 1;\r
- } else if (to == null) {\r
- try {\r
- String[] dates = getDates(from);\r
- lfrom = Long.parseLong(dates[0]);\r
- lto = Long.parseLong(dates[1]);\r
- } catch (Exception e) {\r
- System.err.println("Invalid date: "+from);\r
- System.exit(1);\r
- }\r
- } else {\r
- String[] dates;\r
- try {\r
- dates = getDates(from);\r
- lfrom = Long.parseLong(dates[0]);\r
- } catch (Exception e) {\r
- System.err.println("Invalid date: "+from);\r
- System.exit(1);\r
- }\r
- try {\r
- dates = getDates(to);\r
- lto = Long.parseLong(dates[0]);\r
- } catch (Exception e) {\r
- System.err.println("Invalid date: "+to);\r
- System.exit(1);\r
- }\r
- }\r
+ for (int i = 0; i < args.length; i++) {\r
+ if (args[i].equals("-?")) {\r
+ System.err.println("usage: java org.onap.dmaap.datarouter.reports.Report [ -t <i>type</i> ] [ -o <i>outfile</i> ] [ <i>fromdate</i> [ <i>todate</i> ]]");\r
+ System.exit(0);\r
+ } else if (args[i].equals("-o")) {\r
+ if (++i < args.length) {\r
+ outfile = args[i];\r
+ }\r
+ } else if (args[i].equals("-t")) {\r
+ if (++i < args.length) {\r
+ String base = args[i];\r
+ base = Character.toUpperCase(base.charAt(0)) + base.substring(1);\r
+ base = "org.onap.dmaap.datarouter.reports." + base + "Report";\r
+ try {\r
+ @SuppressWarnings("unchecked")\r
+ Class<? extends ReportBase> cl = (Class<? extends ReportBase>) Class.forName(base);\r
+ Constructor<? extends ReportBase> con = cl.getConstructor();\r
+ report = con.newInstance();\r
+ } catch (Exception e) {\r
+ System.err.println("Unknown report type: " + args[i]);\r
+ System.exit(1);\r
+ }\r
+ }\r
+ } else if (from == null) {\r
+ from = args[i];\r
+ } else {\r
+ to = args[i];\r
+ }\r
+ }\r
+ long lfrom = 0, lto = 0;\r
+ if (from == null) {\r
+ // last 7 days\r
+ TimeZone utc = TimeZone.getTimeZone("UTC");\r
+ Calendar cal = new GregorianCalendar(utc);\r
+ cal.set(Calendar.HOUR_OF_DAY, 0);\r
+ cal.set(Calendar.MINUTE, 0);\r
+ cal.set(Calendar.SECOND, 0);\r
+ cal.set(Calendar.MILLISECOND, 0);\r
+ lfrom = cal.getTimeInMillis() - (7 * 24 * 60 * 60 * 1000L); // 1 week\r
+ lto = cal.getTimeInMillis() - 1;\r
+ } else if (to == null) {\r
+ try {\r
+ String[] dates = getDates(from);\r
+ lfrom = Long.parseLong(dates[0]);\r
+ lto = Long.parseLong(dates[1]);\r
+ } catch (Exception e) {\r
+ System.err.println("Invalid date: " + from);\r
+ System.exit(1);\r
+ }\r
+ } else {\r
+ String[] dates;\r
+ try {\r
+ dates = getDates(from);\r
+ lfrom = Long.parseLong(dates[0]);\r
+ } catch (Exception e) {\r
+ System.err.println("Invalid date: " + from);\r
+ System.exit(1);\r
+ }\r
+ try {\r
+ dates = getDates(to);\r
+ lto = Long.parseLong(dates[0]);\r
+ } catch (Exception e) {\r
+ System.err.println("Invalid date: " + to);\r
+ System.exit(1);\r
+ }\r
+ }\r
\r
- report.setFrom(lfrom);\r
- report.setTo(lto);\r
- report.setOutputFile(outfile);\r
- report.run();\r
- }\r
+ report.setFrom(lfrom);\r
+ report.setTo(lto);\r
+ report.setOutputFile(outfile);\r
+ report.run();\r
+ }\r
\r
- private static String[] getDates(String d) throws Exception {\r
- if (d.equals("ALL"))\r
- return new String[] { "1", ""+System.currentTimeMillis() };\r
+ private static String[] getDates(String d) throws Exception {\r
+ if (d.equals("ALL"))\r
+ return new String[]{"1", "" + System.currentTimeMillis()};\r
\r
- TimeZone utc = TimeZone.getTimeZone("UTC");\r
- Calendar cal = new GregorianCalendar(utc);\r
- if (d.matches("20\\d\\d-\\d\\d-\\d\\d")) {\r
- cal.set(Calendar.YEAR, Integer.parseInt(d.substring(0, 4)));\r
- cal.set(Calendar.MONTH, Integer.parseInt(d.substring(5, 7))-1);\r
- cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(d.substring(8, 10)));\r
- } else if (d.equals("yesterday")) {\r
- cal.add(Calendar.DAY_OF_YEAR, -1);\r
- } else\r
- throw new Exception("wa?");\r
- cal.set(Calendar.HOUR_OF_DAY, 0);\r
- cal.set(Calendar.MINUTE, 0);\r
- cal.set(Calendar.SECOND, 0);\r
- cal.set(Calendar.MILLISECOND, 0);\r
- long start = cal.getTimeInMillis();\r
- long end = start + (24 * 60 * 60 * 1000L) - 1;\r
- return new String[] { ""+start, ""+end };\r
- }\r
+ TimeZone utc = TimeZone.getTimeZone("UTC");\r
+ Calendar cal = new GregorianCalendar(utc);\r
+ if (d.matches("20\\d\\d-\\d\\d-\\d\\d")) {\r
+ cal.set(Calendar.YEAR, Integer.parseInt(d.substring(0, 4)));\r
+ cal.set(Calendar.MONTH, Integer.parseInt(d.substring(5, 7)) - 1);\r
+ cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(d.substring(8, 10)));\r
+ } else if (d.equals("yesterday")) {\r
+ cal.add(Calendar.DAY_OF_YEAR, -1);\r
+ } else\r
+ throw new Exception("wa?");\r
+ cal.set(Calendar.HOUR_OF_DAY, 0);\r
+ cal.set(Calendar.MINUTE, 0);\r
+ cal.set(Calendar.SECOND, 0);\r
+ cal.set(Calendar.MILLISECOND, 0);\r
+ long start = cal.getTimeInMillis();\r
+ long end = start + (24 * 60 * 60 * 1000L) - 1;\r
+ return new String[]{"" + start, "" + end};\r
+ }\r
}\r