@RequestMapping( value = "staff/{id}/{type}", method = RequestMethod.GET, produces = "application/pdf") public void getReport( @PathVariable("id") Integer id, @RequestParam("start") String s, @RequestParam("end") String e, @PathVariable("type") String type, HttpServletResponse response) throws IOException { DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); if (type.equals("pdf")) gen = new PDFGenerator(); else gen = new SheetGenerator(); try { Date start = formatter.parse(s); Date end = formatter.parse(e); String dateHeader = start + " - " + end; Collection<Activity> acts = activityRepository.findByDateBetweenAndEmplIdAndSubmittedTrue(start, end, id); InputStream is = new FileInputStream(gen.getDocumentByStaff(acts, dateHeader)); if (type.equals("pdf")) response.setContentType("application/pdf"); else response.setContentType( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); OutputStream os = response.getOutputStream(); int n = 0; byte[] byteBuffer = new byte[16384]; while ((n = is.read(byteBuffer)) > -1) { os.write(byteBuffer, 0, n); // Don't allow any extra bytes to creep in, final write } response.flushBuffer(); } catch (Exception ex) { } }
@RequestMapping(value = "projects/{id}/{type}") public void getProjectReport( @PathVariable("id") Integer id, @RequestParam(value = "start", required = false) String b, @RequestParam(value = "end", required = false) String e, @PathVariable("type") String type, HttpServletResponse response) throws IOException { if (type.equals("pdf")) gen = new PDFGenerator(); else gen = new SheetGenerator(); if (b != null && e != null) { DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); try { Date begin = formatter.parse(b); Date end = formatter.parse(e); Collection<Activity> col = activityRepository.findByDateBetweenAndProjId(begin, end, id); InputStream is = new FileInputStream(gen.getDocumentByProject(col, begin + "-" + end)); if (type.equals("pdf")) response.setContentType("application/pdf"); else response.setContentType( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); OutputStream os = response.getOutputStream(); int n = 0; byte[] byteBuffer = new byte[16384]; while ((n = is.read(byteBuffer)) > -1) { os.write(byteBuffer, 0, n); // Don't allow any extra bytes to creep in, final write } response.flushBuffer(); } catch (Exception ex) { } } else { try { Collection<Activity> col = activityRepository.findByProjId(id); InputStream is = new FileInputStream(gen.getDocumentByProject(col, "Whole period")); response.setContentType("application/pdf"); OutputStream os = response.getOutputStream(); int n = 0; byte[] byteBuffer = new byte[16384]; while ((n = is.read(byteBuffer)) > -1) { os.write(byteBuffer, 0, n); // Don't allow any extra bytes to creep in, final write } response.flushBuffer(); } catch (Exception ex) { } } }
@RequestMapping( value = "staff/{id}/{m}/{type}", method = RequestMethod.GET, produces = "application/xls") public void getStaffReportByMonth( @PathVariable("id") Integer id, @PathVariable("m") Integer month, @PathVariable("type") String type, HttpServletResponse response) throws IOException { String dateHeader = new DateFormatSymbols().getMonths()[month]; if (type.equals("pdf")) gen = new PDFGenerator(); else gen = new SheetGenerator(); Calendar cal = Calendar.getInstance(); cal.set(Calendar.MONTH, month); cal.set(Calendar.DAY_OF_MONTH, 1); Date beginDate = new Date(cal.getTime().getTime()); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); Date endDate = new Date(cal.getTime().getTime()); Collection<Activity> list = activityRepository.findByDateBetweenAndEmplIdAndSubmittedTrue(beginDate, endDate, id); try { InputStream is = new FileInputStream(gen.getDocumentByStaff(list, dateHeader)); if (type.equals("pdf")) response.setContentType("application/pdf"); else response.setContentType( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); OutputStream os = response.getOutputStream(); int n = 0; byte[] byteBuffer = new byte[16384]; while ((n = is.read(byteBuffer)) > -1) { os.write(byteBuffer, 0, n); // Don't allow any extra bytes to creep in, final write } response.flushBuffer(); } catch (Exception ex) { } }