use of com.geminimobile.CDRDataAccess.CDREntry in project logprocessing by cloudian.
the class SearchController method onSubmit.
@Override
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException arg3) throws Exception {
SearchCommand cmd = (SearchCommand) command;
ModelAndView mav = new ModelAndView(getSuccessView());
CDRDataAccess cdrAccess = new CDRDataAccess();
Date toDate = SearchCommand.m_sdf.parse(cmd.getToDate());
long maxTimestamp = toDate.getTime();
Date fromDate = SearchCommand.m_sdf.parse(cmd.getFromDate());
long minTimestamp = fromDate.getTime();
String msisdn = cmd.getMsisdn();
String action = cmd.getAction();
Vector<CDREntry> cdrs;
if (action.compareToIgnoreCase("downloadcsv") == 0) {
if (msisdn != null && msisdn.length() > 0) {
cdrs = cdrAccess.getCDRsByMSISDN(cmd.getMsisdn(), minTimestamp, maxTimestamp, cmd.getMarket(), cmd.getMessageType(), // 100,000 entries max
100000);
} else {
cdrs = cdrAccess.getCDRsByHour(minTimestamp, maxTimestamp, cmd.getMarket(), cmd.getMessageType(), MAX_ENTRIES_PER_PAGE);
}
StringBuffer sb = new StringBuffer();
// Write column headers
sb.append("Date/Time,Market,Type,MSISDN,MO IP address,MT IP Address,Sender Domain,Recipient Domain\n");
for (CDREntry entry : cdrs) {
sb.append(entry.getDisplayTimestamp() + "," + entry.getMarket() + "," + entry.getType() + "," + entry.getMsisdn() + "," + entry.getMoIPAddress() + "," + entry.getMtIPAddress() + "," + entry.getSenderDomain() + "," + entry.getRecipientDomain() + "\n");
}
String csvString = sb.toString();
response.setBufferSize(sb.length());
response.setContentLength(sb.length());
response.setContentType("text/plain; charset=UTF-8");
//response.setContentType( "text/csv" );
//response.setContentType("application/ms-excel");
//response.setHeader("Content-disposition", "attachment;filename=cdrResults.csv");
response.setHeader("Content-Disposition", "attachment; filename=" + "cdrResults.csv" + ";");
ServletOutputStream os = response.getOutputStream();
os.write(csvString.getBytes());
os.flush();
os.close();
return null;
} else if (action.compareToIgnoreCase("graph") == 0) {
cmd.setGraph(true);
List<ChartSeries> chartData;
if (msisdn != null && msisdn.length() > 0) {
chartData = cdrAccess.getChartDataByMSISDN(cmd.getMsisdn(), minTimestamp, maxTimestamp, cmd.getMarket(), cmd.getMessageType(), 100000);
} else {
chartData = cdrAccess.getChartDataByHour(minTimestamp, maxTimestamp, cmd.getMarket(), cmd.getMessageType(), 100000);
}
request.getSession().setAttribute("chartData", chartData);
} else if (action.compareToIgnoreCase("getmore") == 0) {
cdrs = (Vector<CDREntry>) request.getSession().getAttribute("currentcdrs");
int numCDRs = cdrs.size();
CDREntry lastCDR = cdrs.get(numCDRs - 1);
long lastCDRTime = Long.parseLong(lastCDR.getTimestamp());
if (msisdn != null && msisdn.length() > 0) {
Vector<CDREntry> moreCDRs = cdrAccess.getCDRsByMSISDN(cmd.getMsisdn(), lastCDRTime, maxTimestamp, cmd.getMarket(), cmd.getMessageType(), MAX_ENTRIES_PER_PAGE);
cdrs.addAll(moreCDRs);
} else {
Vector<CDREntry> moreCDRs = cdrAccess.getCDRsByHour(lastCDRTime, maxTimestamp, cmd.getMarket(), cmd.getMessageType(), MAX_ENTRIES_PER_PAGE);
cdrs.addAll(moreCDRs);
}
request.getSession().setAttribute("currentcdrs", cdrs);
mav.addObject("cdrs", cdrs);
} else {
// Normal search
if (msisdn != null && msisdn.length() > 0) {
cdrs = cdrAccess.getCDRsByMSISDN(cmd.getMsisdn(), minTimestamp, maxTimestamp, cmd.getMarket(), cmd.getMessageType(), MAX_ENTRIES_PER_PAGE);
} else {
cdrs = cdrAccess.getCDRsByHour(minTimestamp, maxTimestamp, cmd.getMarket(), cmd.getMessageType(), MAX_ENTRIES_PER_PAGE);
}
request.getSession().setAttribute("currentcdrs", cdrs);
mav.addObject("cdrs", cdrs);
}
mav.addObject("searchCmd", cmd);
List<Option> msgOptions = getMessageOptions();
mav.addObject("msgTypes", msgOptions);
List<Option> marketOptions = getMarketOptions();
mav.addObject("marketTypes", marketOptions);
return mav;
}
use of com.geminimobile.CDRDataAccess.CDREntry in project logprocessing by cloudian.
the class DownloadCSVController method handleRequestInternal.
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String msisdn = (String) request.getParameter("msisdn");
String startTime = (String) request.getParameter("starttime");
String endTime = (String) request.getParameter("endtime");
String market = (String) request.getParameter("market");
String type = (String) request.getParameter("type");
Date toDate = SearchCommand.m_sdf.parse(endTime);
//String maxTimestamp = Long.toString(toDate.getTime());
Date fromDate = SearchCommand.m_sdf.parse(startTime);
//String minTimestamp = Long.toString(fromDate.getTime());
CDRDataAccess cdrAccess = new CDRDataAccess();
Vector<CDREntry> cdrs = cdrAccess.getCDRsByMSISDN(msisdn, fromDate.getTime(), toDate.getTime(), market, type, // 100,000 entries max
100000);
//Vector<CDREntry> cdrs = (Vector<CDREntry>) request.getSession().getAttribute("cdrResults");
StringBuffer sb = new StringBuffer();
// Write column headers
sb.append("Date/Time,Market,Type,MSISDN,MO IP address,MT IP Address,Sender Domain,Recipient Domain\n");
for (CDREntry entry : cdrs) {
sb.append(entry.getDisplayTimestamp() + "," + entry.getMarket() + "," + entry.getType() + "," + entry.getMsisdn() + "," + entry.getMoIPAddress() + "," + entry.getMtIPAddress() + "," + entry.getSenderDomain() + "," + entry.getRecipientDomain() + "\n");
}
String csvString = sb.toString();
response.setBufferSize(sb.length());
response.setContentLength(sb.length());
response.setContentType("text/plain; charset=UTF-8");
//response.setContentType( "text/csv" );
//response.setContentType("application/ms-excel");
//response.setHeader("Content-disposition", "attachment;filename=cdrResults.csv");
response.setHeader("Content-Disposition", "attachment; filename=" + "cdrResults.csv" + ";");
ServletOutputStream os = response.getOutputStream();
os.write(csvString.getBytes());
os.flush();
os.close();
return null;
}
Aggregations