From f63b47b8f6b90675872454c47d06bdba1931090d Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 9 Mar 2014 09:53:25 +0000 Subject: [PATCH] Fix inconsistent whitespace, and add a close call in the main method to avoid a resource-leak warning git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1575684 13f79535-47bb-0310-9956-ffa450edef68 --- .../XSSFEventBasedExcelExtractor.java | 213 +++++++++--------- 1 file changed, 107 insertions(+), 106 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java index 3f7e5a392..6929242f3 100644 --- a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java +++ b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java @@ -82,6 +82,7 @@ public class XSSFEventBasedExcelExtractor extends POIXMLTextExtractor POIXMLTextExtractor extractor = new XSSFEventBasedExcelExtractor(args[0]); System.out.println(extractor.getText()); + extractor.close(); } /** @@ -252,113 +253,113 @@ public class XSSFEventBasedExcelExtractor extends POIXMLTextExtractor super.close(); } - protected class SheetTextExtractor implements SheetContentsHandler { - private final StringBuffer output; - private boolean firstCellOfRow; - private final Map headerFooterMap; - - protected SheetTextExtractor() { - this.output = new StringBuffer(); - this.firstCellOfRow = true; - this.headerFooterMap = includeHeadersFooters ? new HashMap() : null; - } - - public void startRow(int rowNum) { - firstCellOfRow = true; - } - - public void endRow() { - output.append('\n'); - } + protected class SheetTextExtractor implements SheetContentsHandler { + private final StringBuffer output; + private boolean firstCellOfRow; + private final Map headerFooterMap; - public void cell(String cellRef, String formattedValue) { - if(firstCellOfRow) { - firstCellOfRow = false; - } else { - output.append('\t'); - } - output.append(formattedValue); - } - - public void headerFooter(String text, boolean isHeader, String tagName) { - if (headerFooterMap != null) { - headerFooterMap.put(tagName, text); - } - } - - - /** - * Append the text for the named header or footer if found. - */ - private void appendHeaderFooterText(StringBuffer buffer, String name) { - String text = headerFooterMap.get(name); - if (text != null && text.length() > 0) { - // this is a naive way of handling the left, center, and right - // header and footer delimiters, but it seems to be as good as - // the method used by XSSFExcelExtractor - text = handleHeaderFooterDelimiter(text, "&L"); - text = handleHeaderFooterDelimiter(text, "&C"); - text = handleHeaderFooterDelimiter(text, "&R"); - buffer.append(text).append('\n'); - } - } - /** - * Remove the delimiter if its found at the beginning of the text, - * or replace it with a tab if its in the middle. - */ - private String handleHeaderFooterDelimiter(String text, String delimiter) { - int index = text.indexOf(delimiter); - if (index == 0) { - text = text.substring(2); - } else if (index > 0) { - text = text.substring(0, index) + "\t" + text.substring(index + 2); - } - return text; - } + protected SheetTextExtractor() { + this.output = new StringBuffer(); + this.firstCellOfRow = true; + this.headerFooterMap = includeHeadersFooters ? new HashMap() : null; + } - - /** - * Append the text for each header type in the same order - * they are appended in XSSFExcelExtractor. - * @see XSSFExcelExtractor#getText() - * @see org.apache.poi.hssf.extractor.ExcelExtractor#_extractHeaderFooter(org.apache.poi.ss.usermodel.HeaderFooter) - */ - private void appendHeaderText(StringBuffer buffer) { - appendHeaderFooterText(buffer, "firstHeader"); - appendHeaderFooterText(buffer, "oddHeader"); - appendHeaderFooterText(buffer, "evenHeader"); - } - - /** - * Append the text for each footer type in the same order - * they are appended in XSSFExcelExtractor. - * @see XSSFExcelExtractor#getText() - * @see org.apache.poi.hssf.extractor.ExcelExtractor#_extractHeaderFooter(org.apache.poi.ss.usermodel.HeaderFooter) - */ - private void appendFooterText(StringBuffer buffer) { - // append the text for each footer type in the same order - // they are appended in XSSFExcelExtractor - appendHeaderFooterText(buffer, "firstFooter"); - appendHeaderFooterText(buffer, "oddFooter"); - appendHeaderFooterText(buffer, "evenFooter"); - } + public void startRow(int rowNum) { + firstCellOfRow = true; + } - /** - * Append the cell contents we have collected. - */ - private void appendCellText(StringBuffer buffer) { - buffer.append(output); - } - - /** - * Reset this SheetTextExtractor for the next sheet. - */ - private void reset() { - output.setLength(0); - firstCellOfRow = true; - if (headerFooterMap != null) { - headerFooterMap.clear(); - } - } - } + public void endRow() { + output.append('\n'); + } + + public void cell(String cellRef, String formattedValue) { + if(firstCellOfRow) { + firstCellOfRow = false; + } else { + output.append('\t'); + } + output.append(formattedValue); + } + + public void headerFooter(String text, boolean isHeader, String tagName) { + if (headerFooterMap != null) { + headerFooterMap.put(tagName, text); + } + } + + + /** + * Append the text for the named header or footer if found. + */ + private void appendHeaderFooterText(StringBuffer buffer, String name) { + String text = headerFooterMap.get(name); + if (text != null && text.length() > 0) { + // this is a naive way of handling the left, center, and right + // header and footer delimiters, but it seems to be as good as + // the method used by XSSFExcelExtractor + text = handleHeaderFooterDelimiter(text, "&L"); + text = handleHeaderFooterDelimiter(text, "&C"); + text = handleHeaderFooterDelimiter(text, "&R"); + buffer.append(text).append('\n'); + } + } + /** + * Remove the delimiter if its found at the beginning of the text, + * or replace it with a tab if its in the middle. + */ + private String handleHeaderFooterDelimiter(String text, String delimiter) { + int index = text.indexOf(delimiter); + if (index == 0) { + text = text.substring(2); + } else if (index > 0) { + text = text.substring(0, index) + "\t" + text.substring(index + 2); + } + return text; + } + + + /** + * Append the text for each header type in the same order + * they are appended in XSSFExcelExtractor. + * @see XSSFExcelExtractor#getText() + * @see org.apache.poi.hssf.extractor.ExcelExtractor#_extractHeaderFooter(org.apache.poi.ss.usermodel.HeaderFooter) + */ + private void appendHeaderText(StringBuffer buffer) { + appendHeaderFooterText(buffer, "firstHeader"); + appendHeaderFooterText(buffer, "oddHeader"); + appendHeaderFooterText(buffer, "evenHeader"); + } + + /** + * Append the text for each footer type in the same order + * they are appended in XSSFExcelExtractor. + * @see XSSFExcelExtractor#getText() + * @see org.apache.poi.hssf.extractor.ExcelExtractor#_extractHeaderFooter(org.apache.poi.ss.usermodel.HeaderFooter) + */ + private void appendFooterText(StringBuffer buffer) { + // append the text for each footer type in the same order + // they are appended in XSSFExcelExtractor + appendHeaderFooterText(buffer, "firstFooter"); + appendHeaderFooterText(buffer, "oddFooter"); + appendHeaderFooterText(buffer, "evenFooter"); + } + + /** + * Append the cell contents we have collected. + */ + private void appendCellText(StringBuffer buffer) { + buffer.append(output); + } + + /** + * Reset this SheetTextExtractor for the next sheet. + */ + private void reset() { + output.setLength(0); + firstCellOfRow = true; + if (headerFooterMap != null) { + headerFooterMap.clear(); + } + } + } }