You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ha...@apache.org on 2009/03/07 04:30:41 UTC
svn commit: r751188 - in
/myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util:
ExcelExporterUtil.java PDFExporterUtil.java
Author: hazems
Date: Sat Mar 7 03:30:38 2009
New Revision: 751188
URL: http://svn.apache.org/viewvc?rev=751188&view=rev
Log:
Fixing https://issues.apache.org/jira/browse/MFCOMMONS-6
Modified:
myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/ExcelExporterUtil.java
myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/PDFExporterUtil.java
Modified: myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/ExcelExporterUtil.java
URL: http://svn.apache.org/viewvc/myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/ExcelExporterUtil.java?rev=751188&r1=751187&r2=751188&view=diff
==============================================================================
--- myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/ExcelExporterUtil.java (original)
+++ myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/ExcelExporterUtil.java Sat Mar 7 03:30:38 2009
@@ -38,22 +38,57 @@
/**
* This class is a utility class for serving excel exporting.
*/
-public class ExcelExporterUtil {
+public class ExcelExporterUtil
+{
- private static void addColumnHeaders(HSSFSheet sheet, List columns) {
+ /**
+ * This utility method is used for generating the excel
+ * table to the HttpServletResponse object.
+ * @param workBook
+ * @param response
+ * @param fileName
+ * @throws IOException
+ */
+ public static void generateEXCEL(FacesContext facesContext,
+ HttpServletResponse response, String fileName,
+ HtmlDataTable dataTable) throws IOException
+ {
+
+ /*
+ * By default if the fileName is not specified, then use the
+ * table id.
+ */
+ if (fileName == null)
+ {
+ fileName = dataTable.getId();
+ }
+
+ /* generate the excel model */
+ HSSFWorkbook generatedExcel = ExcelExporterUtil
+ .generateExcelTableModel(facesContext, dataTable);
+
+ writeExcelToResponse(response, generatedExcel, fileName);
+ }
+
+ private static void addColumnHeaders(HSSFSheet sheet, List columns)
+ {
HSSFRow rowHeader = sheet.createRow(0);
-
- for (int i = 0; i < columns.size(); i++) {
+
+ for (int i = 0; i < columns.size(); i++)
+ {
UIColumn column = (UIColumn) columns.get(i);
addColumnValue(rowHeader, column.getHeader(), i);
}
}
- private static List getColumns(HtmlDataTable table) {
+ private static List getColumns(HtmlDataTable table)
+ {
List columns = new ArrayList();
- for (int i = 0; i < table.getChildCount(); i++) {
+ for (int i = 0; i < table.getChildCount(); i++)
+ {
UIComponent child = (UIComponent) table.getChildren().get(i);
- if (child instanceof UIColumn) {
+ if (child instanceof UIColumn)
+ {
columns.add(child);
}
}
@@ -61,47 +96,70 @@
}
private static void addColumnValue(HSSFRow rowHeader,
- UIComponent component, int index) {
+ UIComponent component, int index)
+ {
HSSFCell cell = rowHeader.createCell((short) index);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
- if (component instanceof ValueHolder) {
+ if (component instanceof ValueHolder)
+ {
String stringValue = ComponentUtils.getStringValue(FacesContext
.getCurrentInstance(), component);
cell.setCellValue(stringValue);
}
}
-
+
+ private static void addColumnValue(HSSFRow rowHeader, String value,
+ int index)
+ {
+ HSSFCell cell = rowHeader.createCell((short) index);
+ cell.setEncoding(HSSFCell.ENCODING_UTF_16);
+ cell.setCellValue(value);
+ }
+
/*
* This method is used for adding the columns values to the HSSFSheet.
*/
private static void generateTableContent(FacesContext facesContext,
- HSSFSheet sheet, List columns, HtmlDataTable dataTable) {
-
+ HSSFSheet sheet, List columns, HtmlDataTable dataTable)
+ {
+
int numberOfColumns = columns.size();
- int numberOfRows = dataTable.getRowCount();
+ int numberOfRows = dataTable.getRowCount();
int startFrom = 0;
int currentIndex = 1;
- int endAt = numberOfRows;
-
+ int endAt = numberOfRows;
+
/* fill the table with the data. */
- for (int i = startFrom; i < endAt; ++i) {
+ for (int i = startFrom; i < endAt; ++i)
+ {
dataTable.setRowIndex(i);
HSSFRow row = sheet.createRow(currentIndex++);
- for (int j = 0; j < numberOfColumns; ++j) {
+ for (int j = 0; j < numberOfColumns; ++j)
+ {
UIColumn column = (UIColumn) columns.get(j);
- addColumnValue(row, (UIComponent) column.getChildren().get(0),
- j);
+ String cellValue = "";
+
+ for (int k = 0; k < column.getChildren().size(); ++k)
+ {
+ if (column.getChildren().get(k) instanceof ValueHolder)
+ {
+ cellValue += ((ValueHolder) column.getChildren().get(k))
+ .getValue();
+ }
+ }
+ addColumnValue(row, cellValue, j);
}
}
- }
-
+ }
+
/*
* This utility method is used for writing the excelModel (generatedExcel)
- * to the response (response) and uses the (fileName) as the generated file
+ * to the response (response) and uses the (fileName) as the generated file
* name.
*/
private static void writeExcelToResponse(HttpServletResponse response,
- HSSFWorkbook generatedExcel, String fileName) throws IOException {
+ HSSFWorkbook generatedExcel, String fileName) throws IOException
+ {
/* write the model to the stream */
response.setContentType("application/vnd.ms-excel");
@@ -114,7 +172,7 @@
generatedExcel.write(response.getOutputStream());
}
-
+
/*
* This utility method is used for generating the (HSSFWorkbook)
* excel table model from the passed (HtmlDataTable).
@@ -123,9 +181,10 @@
* @return the (HSSFWorkbook) object.
*/
private static HSSFWorkbook generateExcelTableModel(
- FacesContext facesContext, HtmlDataTable dataTable) {
-
- HSSFWorkbook workbook = new HSSFWorkbook();
+ FacesContext facesContext, HtmlDataTable dataTable)
+ {
+
+ HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet(dataTable.getId());
List columns = getColumns(dataTable);
int currentRowIndex = dataTable.getRowIndex();
@@ -135,33 +194,5 @@
dataTable.setRowIndex(currentRowIndex);
return workbook;
- }
-
- /**
- * This utility method is used for generating the excel
- * table to the HttpServletResponse object.
- * @param workBook
- * @param response
- * @param fileName
- * @throws IOException
- */
- public static void generateEXCEL(FacesContext facesContext,
- HttpServletResponse response, String fileName, HtmlDataTable dataTable)
- throws IOException {
-
- /*
- * By default if the fileName is not specified, then use the
- * table id.
- */
- if (fileName == null)
- {
- fileName = dataTable.getId();
- }
-
- /* generate the excel model */
- HSSFWorkbook generatedExcel = ExcelExporterUtil
- .generateExcelTableModel(facesContext, dataTable);
-
- writeExcelToResponse(response, generatedExcel, fileName);
}
}
Modified: myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/PDFExporterUtil.java
URL: http://svn.apache.org/viewvc/myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/PDFExporterUtil.java?rev=751188&r1=751187&r2=751188&view=diff
==============================================================================
--- myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/PDFExporterUtil.java (original)
+++ myfaces/commons/trunk/myfaces-commons-components/src/main/java/org/apache/myfaces/commons/exporter/util/PDFExporterUtil.java Sat Mar 7 03:30:38 2009
@@ -39,14 +39,16 @@
/**
* This class is a utility class for serving PDF exporting.
*/
-public class PDFExporterUtil {
+public class PDFExporterUtil
+{
/*
* This method is used for setting the response headers of the pdf.
*/
private static void setPDFResponseHeaders(HttpServletResponse response,
ByteArrayOutputStream byteArrayStream, String fileName)
- throws IOException {
+ throws IOException
+ {
// setting response headers.
response.setHeader("Expires", "0");
@@ -72,12 +74,14 @@
/*
* This method is used for adding the columns headers to the pdfTable.
*/
- private static void generateTableHeader(PdfPTable pdfTable, List columns) {
-
- for (int i = 0; i < columns.size(); i++) {
+ private static void generateTableHeader(PdfPTable pdfTable, List columns)
+ {
+ for (int i = 0; i < columns.size(); i++)
+ {
UIColumn column = (UIColumn) columns.get(i);
UIComponent columnHeaderCell = column.getHeader();
- if (columnHeaderCell instanceof ValueHolder) {
+ if (columnHeaderCell instanceof ValueHolder)
+ {
String cellValue = ComponentUtils.getStringValue(FacesContext
.getCurrentInstance(), columnHeaderCell);
pdfTable.addCell(cellValue);
@@ -89,24 +93,32 @@
* This method is used for adding the columns values to the pdfTable.
*/
private static void generateTableContent(FacesContext facesContext,
- PdfPTable pdfTable, List columns, HtmlDataTable dataTable) {
-
+ PdfPTable pdfTable, List columns, HtmlDataTable dataTable)
+ {
int numberOfColumns = columns.size();
int numberOfRows = dataTable.getRowCount();
int startFrom = 0;
int endAt = numberOfRows;
-
+
/* fill the table with the data. */
- for (int i = startFrom; i < endAt; ++i) {
+ for (int i = startFrom; i < endAt; ++i)
+ {
dataTable.setRowIndex(i);
- for (int j = 0; j < numberOfColumns; ++j) {
- UIComponent valueHolder = (UIComponent) ((UIColumn) columns
- .get(j)).getChildren().get(0);
- if (valueHolder instanceof ValueHolder) {
- String cellValue = ComponentUtils.getStringValue(
- FacesContext.getCurrentInstance(), valueHolder);
- pdfTable.addCell(cellValue);
+ for (int j = 0; j < numberOfColumns; ++j)
+ {
+ String cellValue = "";
+ UIColumn currentColumn = (UIColumn) columns.get(j);
+
+ for (int k = 0; k < currentColumn.getChildren().size(); ++k)
+ {
+ if (currentColumn.getChildren().get(k) instanceof ValueHolder)
+ {
+ cellValue += ((ValueHolder) currentColumn.getChildren()
+ .get(k)).getValue();
+ }
}
+
+ pdfTable.addCell(cellValue);
}
}
}
@@ -115,20 +127,21 @@
* This method is used for creating the PDFTable model.
*/
public static PdfPTable generatePDFTableModel(FacesContext facesContext,
- HtmlDataTable dataTable) {
-
+ HtmlDataTable dataTable)
+ {
int numberOfColumns;
List columns = null;
PdfPTable pdfTable = null;
-
/* getting the HTMLDataTable Columns */
columns = ComponentUtils.getHTMLDataTableColumns(dataTable);
- if (columns.size() == 0) {
+ if (columns.size() == 0)
+ {
return null;
}
- else {
+ else
+ {
numberOfColumns = columns.size();
}
@@ -137,14 +150,14 @@
generateTableHeader(pdfTable, columns);
- generateTableContent(facesContext, pdfTable, columns,
- dataTable);
+ generateTableContent(facesContext, pdfTable, columns, dataTable);
return pdfTable;
}
-
+
/**
* This method is responsible for writing the PDF to the response stream.
+ *
* @param facesContext
* @param response
* @param fileName
@@ -152,22 +165,21 @@
*/
public static void generatePDF(FacesContext facesContext,
HttpServletResponse response, String fileName,
- HtmlDataTable dataTable) throws Exception {
-
+ HtmlDataTable dataTable) throws Exception
+ {
int currentRowIndex;
Document document = new Document();
ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();
PdfWriter.getInstance(document, byteArrayStream);
PdfPTable pdfTable = null;
-
+
/*
- * By default if the fileName is not specified, then use the
- * table id.
+ * By default if the fileName is not specified, then use the table id.
*/
- if (fileName == null)
+ if (fileName == null)
{
fileName = dataTable.getId();
- }
+ }
currentRowIndex = dataTable.getRowIndex();