private InputStream getReport(
     HttpServletRequest request,
     HttpServletResponse response,
     Tab tab,
     TableModel tableModel,
     Integer columnCountLimit)
     throws ServletException, IOException {
   StringBuffer suri = new StringBuffer();
   suri.append("/xava/jasperReport");
   suri.append("?language=");
   suri.append(Locales.getCurrent().getLanguage());
   suri.append("&widths=");
   suri.append(Arrays.toString(getWidths(tableModel)));
   if (columnCountLimit != null) {
     suri.append("&columnCountLimit=");
     suri.append(columnCountLimit);
   }
   response.setCharacterEncoding(XSystem.getEncoding());
   return Servlets.getURIAsStream(request, response, suri.toString());
 }
 private TableModel getTableModel(
     HttpServletRequest request,
     Tab tab,
     int[] selectedRows,
     boolean labelAsHeader,
     boolean format,
     Integer columnCountLimit)
     throws Exception {
   TableModel data = null;
   if (selectedRows != null && selectedRows.length > 0) {
     data = new SelectedRowsXTableModel(tab.getTableModel(), selectedRows);
   } else {
     data = tab.getAllDataTableModel();
   }
   return new TableModelDecorator(
       request,
       data,
       tab.getMetaProperties(),
       Locales.getCurrent(),
       labelAsHeader,
       format,
       columnCountLimit);
 }
 private String getCurrentDate() {
   return java.text.DateFormat.getDateInstance(DateFormat.MEDIUM, Locales.getCurrent())
       .format(new java.util.Date());
 }
 private NumberFormat getFormat() {
   NumberFormat f = DecimalFormat.getNumberInstance(Locales.getCurrent());
   f.setMinimumFractionDigits(2);
   f.setMaximumFractionDigits(2);
   return f;
 }