public void executeReport(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException { String date1 = request.getParameter("start"); String date2 = request.getParameter("end"); String lab = request.getParameter("lab"); CRSManager c = new CRSManager(); StatsManager s = new StatsManager(dbcon); List pers = c.getPeriods(dbcon,lab); List persforuser = new ArrayList(); List selectedpers = new ArrayList(); String pername = null; int perid = 0; java.util.Date start = new java.util.Date(); java.util.Date end = new java.util.Date(); PrintWriter out = response.getWriter(); float totaluse = 0; int all = 0; int used = 0; DecimalFormat df = new DecimalFormat("##0.000%"); SimpleDateFormat sf = new SimpleDateFormat("M/d/yyyy"); try { start = sf.parse(date1); end = sf.parse(date2); } catch(ParseException p){ printTop(request,response); out.println("<h3>Error</h3>"); out.println("<span class=\"message\">You did not enter the dates correctly</span><br>"); printBottom(request,response); return; } printTop(request,response); out.println("<h3>"+s.labnamebyID(lab)+"</h3><br>"); out.println("<b>Beginning Date: </b>"+ sf.format(start)+"<br>"); out.println("<b>Ending Date: </b>"+sf.format(end)+"<br>"); out.println("<hr><br>"); out.println("<b>Periods:</b><br>"); for(int i=0;i<pers.size();i++){ Period p = (Period)pers.get(i); String per = request.getParameter(String.valueOf(p.getId())); if(per != null){ selectedpers.add(p); pername = p.getName(); perid = p.getId(); out.println(" - "+pername+"<br>"); all = all + s.getTotalSlotsPerDatesPerPeriod(lab,String.valueOf(perid),start,end); used = used + s.getTotalSlotsUsedPerDatesPerPeriod(lab,String.valueOf(perid),start,end); persforuser.add(String.valueOf(p.getId())); } } totaluse = totaluse + (float)used / (float)all; out.println("<hr><br><b>Total Usage:</b> "+ df.format(totaluse) +"<br><br><hr>"); /* This was to test the actual numbers being calculated by the count queries it is no longger in use so I am commenting it out :-) out.println("All:"+all+" - Used: "+used); */ out.println("<b>Users: </b><br><br>"); for(int p=0;p<persforuser.size();p++){ List users = s.getAllUsers(lab,(String)persforuser.get(p)); for(int i2 = 0; i2<users.size(); i2++){ UserStat u = (UserStat)users.get(i2); int user = s.getAllUsePerUserPerPeriods(lab,selectedpers,u.getName(),start,end); float usage = (float)user / (float)all; out.println(u.getName()+" - "+df.format(usage)+"<br>"); } } out.println("<br><br><hr>"); printBottom(request,response); }