public FileBufferedOasisZipEntry(String name, byte[] bytes) {
    this.name = name;

    if (bytes == null) {
      fbos = new FileBufferedOutputStream();
    } else {
      fbos = new FileBufferedOutputStream(bytes.length);
      try {
        fbos.write(bytes);
      } catch (IOException e) {
        throw new JRRuntimeException(e);
      }
    }
  }
  public void service(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {
    List<JasperPrint> jasperPrintList = BaseHttpServlet.getJasperPrintList(request);

    if (jasperPrintList == null) {
      throw new ServletException("No JasperPrint documents found on the HTTP session.");
    }

    Boolean isBuffered =
        Boolean.valueOf(request.getParameter(BaseHttpServlet.BUFFERED_OUTPUT_REQUEST_PARAMETER));
    if (isBuffered.booleanValue()) {
      FileBufferedOutputStream fbos = new FileBufferedOutputStream();
      JROdtExporter exporter = new JROdtExporter();
      exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
      exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos);

      try {
        exporter.exportReport();
        fbos.close();

        if (fbos.size() > 0) {
          response.setContentType("application/vnd.oasis.opendocument.text");
          //				response.setHeader("Content-Disposition", "inline; filename=\"file.odt\"");
          response.setContentLength(fbos.size());
          ServletOutputStream ouputStream = response.getOutputStream();

          try {
            fbos.writeData(ouputStream);
            fbos.dispose();
            ouputStream.flush();
          } finally {
            if (ouputStream != null) {
              try {
                ouputStream.close();
              } catch (IOException ex) {
              }
            }
          }
        }
      } catch (JRException e) {
        throw new ServletException(e);
      } finally {
        fbos.close();
        fbos.dispose();
      }

      //			else
      //			{
      //				response.setContentType("text/html");
      //				PrintWriter out = response.getWriter();
      //				out.println("<html>");
      //				out.println("<body bgcolor=\"white\">");
      //				out.println("<span class=\"bold\">Empty response.</span>");
      //				out.println("</body>");
      //				out.println("</html>");
      //			}
    } else {
      response.setContentType("application/vnd.oasis.opendocument.text");
      // response.setHeader("Content-Disposition", "inline; filename=\"file.odt\"");

      JROdtExporter exporter = new JROdtExporter();
      exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);

      OutputStream ouputStream = response.getOutputStream();
      exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);

      try {
        exporter.exportReport();
      } catch (JRException e) {
        throw new ServletException(e);
      } finally {
        if (ouputStream != null) {
          try {
            ouputStream.close();
          } catch (IOException ex) {
          }
        }
      }
    }
  }
 public void dispose() {
   fbos.dispose();
 }
 public void writeData(OutputStream os) throws IOException {
   fbos.writeData(os);
 }
Exemplo n.º 5
0
  public void service(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {
    List<JasperPrint> jasperPrintList = BaseHttpServlet.getJasperPrintList(request);

    if (jasperPrintList == null) {
      throw new ServletException("No JasperPrint documents found on the HTTP session.");
    }

    int startPageIndex = -1;

    String startPageStr = request.getParameter(START_PAGE_INDEX_REQUEST_PARAMETER);
    try {
      startPageIndex = Integer.parseInt(startPageStr);
    } catch (Exception e) {
    }

    int endPageIndex = -1;

    String endPageStr = request.getParameter(END_PAGE_INDEX_REQUEST_PARAMETER);
    try {
      endPageIndex = Integer.parseInt(endPageStr);
    } catch (Exception e) {
    }

    int pageIndex = -1;

    String pageStr = request.getParameter(PAGE_INDEX_REQUEST_PARAMETER);
    try {
      pageIndex = Integer.parseInt(pageStr);
    } catch (Exception e) {
    }

    if (pageIndex >= 0) {
      startPageIndex = pageIndex;
      endPageIndex = pageIndex;
    }

    Boolean isBuffered =
        Boolean.valueOf(request.getParameter(BaseHttpServlet.BUFFERED_OUTPUT_REQUEST_PARAMETER));
    if (isBuffered.booleanValue()) {
      FileBufferedOutputStream fbos = new FileBufferedOutputStream();
      JRXmlExporter exporter = getExporter();
      exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
      if (startPageIndex >= 0) {
        exporter.setParameter(
            JRExporterParameter.START_PAGE_INDEX, Integer.valueOf(startPageIndex));
      }
      if (endPageIndex >= 0) {
        exporter.setParameter(JRExporterParameter.END_PAGE_INDEX, Integer.valueOf(endPageIndex));
      }
      exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos);

      try {
        exporter.exportReport();
        fbos.close();

        if (fbos.size() > 0) {
          response.setContentType("text/xml");
          response.setHeader("Content-Disposition", "inline; filename=\"file.jrpxml\"");
          response.setContentLength(fbos.size());
          ServletOutputStream ouputStream = response.getOutputStream();

          try {
            fbos.writeData(ouputStream);
            fbos.dispose();
            ouputStream.flush();
          } finally {
            if (ouputStream != null) {
              try {
                ouputStream.close();
              } catch (IOException ex) {
              }
            }
          }
        }
      } catch (JRException e) {
        throw new ServletException(e);
      } finally {
        fbos.close();
        fbos.dispose();
      }
      //			else
      //			{
      //				response.setContentType("text/html");
      //				PrintWriter out = response.getWriter();
      //				out.println("<html>");
      //				out.println("<body bgcolor=\"white\">");
      //				out.println("<span class=\"bold\">Empty response.</span>");
      //				out.println("</body>");
      //				out.println("</html>");
      //			}
    } else {
      response.setContentType("text/xml");
      response.setHeader("Content-Disposition", "inline; filename=\"file.jrpxml\"");

      JRXmlExporter exporter = getExporter();
      exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
      if (startPageIndex >= 0) {
        exporter.setParameter(
            JRExporterParameter.START_PAGE_INDEX, Integer.valueOf(startPageIndex));
      }
      if (endPageIndex >= 0) {
        exporter.setParameter(JRExporterParameter.END_PAGE_INDEX, Integer.valueOf(endPageIndex));
      }

      OutputStream ouputStream = response.getOutputStream();
      exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);

      try {
        exporter.exportReport();
      } catch (JRException e) {
        throw new ServletException(e);
      } finally {
        if (ouputStream != null) {
          try {
            ouputStream.close();
          } catch (IOException ex) {
          }
        }
      }
    }
  }