You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2010/06/28 17:44:06 UTC
svn commit: r958609 - in /tika/trunk/tika-parsers/src:
main/java/org/apache/tika/parser/microsoft/
main/java/org/apache/tika/parser/microsoft/ooxml/
test/java/org/apache/tika/parser/microsoft/
test/java/org/apache/tika/parser/microsoft/ooxml/
Author: nick
Date: Mon Jun 28 15:44:06 2010
New Revision: 958609
URL: http://svn.apache.org/viewvc?rev=958609&view=rev
Log:
Apply Jukka's patch from TIKA-371 - now we're on POI 3.7 beta 1, do the locale handling in unit tests better
Modified:
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ExcelExtractor.java
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ExcelParserTest.java
tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ooxml/OOXMLParserTest.java
Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ExcelExtractor.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ExcelExtractor.java?rev=958609&r1=958608&r2=958609&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ExcelExtractor.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ExcelExtractor.java Mon Jun 28 15:44:06 2010
@@ -116,8 +116,8 @@ public class ExcelExtractor {
protected void parse(
POIFSFileSystem filesystem, XHTMLContentHandler xhtml,
Locale locale) throws IOException, SAXException {
- TikaHSSFListener listener = new TikaHSSFListener(xhtml, locale);
- listener.processFile(filesystem, isListenForAllRecords());
+ TikaHSSFListener listener = new TikaHSSFListener(xhtml, locale);
+ listener.processFile(filesystem, isListenForAllRecords());
listener.throwStoredException();
}
@@ -183,6 +183,7 @@ public class ExcelExtractor {
private TikaHSSFListener(XHTMLContentHandler handler, Locale locale) {
this.handler = handler;
this.format = NumberFormat.getInstance(locale);
+ this.formatListener = new FormatTrackingHSSFListener(this, locale);
}
/**
@@ -198,7 +199,6 @@ public class ExcelExtractor {
throws IOException, SAXException {
// Set up listener and register the records we want to process
- formatListener = new FormatTrackingHSSFListener(this);
HSSFRequest hssfRequest = new HSSFRequest();
if (listenForAllRecords) {
hssfRequest.addListenerForAllRecords(formatListener);
Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java?rev=958609&r1=958608&r2=958609&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java Mon Jun 28 15:44:06 2010
@@ -43,7 +43,7 @@ public class XSSFExcelExtractorDecorator
/**
* Internal <code>DataFormatter</code> for formatting Numbers.
*/
- private final DataFormatter formatter = new DataFormatter();
+ private final DataFormatter formatter;
private final XSSFExcelExtractor extractor;
private static final String TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
@@ -53,6 +53,7 @@ public class XSSFExcelExtractorDecorator
super(extractor, TYPE);
this.extractor = extractor;
+ formatter = new DataFormatter(locale);
}
/**
@@ -92,11 +93,11 @@ public class XSSFExcelExtractorDecorator
xhtml.characters(cell.getRichStringCellValue()
.getString());
} else if (type == Cell.CELL_TYPE_NUMERIC) {
- CellStyle style = cell.getCellStyle();
- xhtml.characters(
- formatter.formatRawCellContents(cell.getNumericCellValue(),
- style.getDataFormat(),
- style.getDataFormatString()));
+ CellStyle style = cell.getCellStyle();
+ xhtml.characters(
+ formatter.formatRawCellContents(cell.getNumericCellValue(),
+ style.getDataFormat(),
+ style.getDataFormatString()));
} else {
XSSFCell xc = (XSSFCell) cell;
String rawValue = xc.getRawValue();
Modified: tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ExcelParserTest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ExcelParserTest.java?rev=958609&r1=958608&r2=958609&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ExcelParserTest.java (original)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ExcelParserTest.java Mon Jun 28 15:44:06 2010
@@ -22,30 +22,20 @@ import java.util.Locale;
import junit.framework.TestCase;
import org.apache.tika.metadata.Metadata;
+import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;
public class ExcelParserTest extends TestCase {
-
- // TODO: This is a workaround until TIKA-371 is fixed
- private Locale defaultLocale;
-
- protected void setUp() {
- defaultLocale = Locale.getDefault();
- Locale.setDefault(Locale.US);
- }
-
- protected void tearDown() {
- Locale.setDefault(defaultLocale);
- }
-
public void testExcelParser() throws Exception {
InputStream input = ExcelParserTest.class.getResourceAsStream(
"/test-documents/testEXCEL.xls");
try {
Metadata metadata = new Metadata();
ContentHandler handler = new BodyContentHandler();
- new OfficeParser().parse(input, handler, metadata);
+ ParseContext context = new ParseContext();
+ context.set(Locale.class, Locale.US);
+ new OfficeParser().parse(input, handler, metadata, context);
assertEquals(
"application/vnd.ms-excel",
@@ -91,9 +81,14 @@ public class ExcelParserTest extends Tes
assertTrue(content.contains("1.98E08"));
assertTrue(content.contains("-1.98E08"));
- // Percentage
- assertTrue(content.contains("3%"));
+ // Percentage.
assertTrue(content.contains("2.50%"));
+ // Excel rounds up to 3%, but that requires Java 1.6 or later
+ if(System.getProperty("java.version").startsWith("1.5")) {
+ assertTrue(content.contains("2%"));
+ } else {
+ assertTrue(content.contains("3%"));
+ }
// Time Format: h:mm
assertTrue(content.contains("6:15"));
Modified: tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ooxml/OOXMLParserTest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ooxml/OOXMLParserTest.java?rev=958609&r1=958608&r2=958609&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ooxml/OOXMLParserTest.java (original)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/microsoft/ooxml/OOXMLParserTest.java Mon Jun 28 15:44:06 2010
@@ -23,6 +23,7 @@ import junit.framework.TestCase;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.metadata.TikaMetadataKeys;
+import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;
@@ -30,19 +31,6 @@ import org.xml.sax.ContentHandler;
import org.apache.tika.parser.AutoDetectParser;
public class OOXMLParserTest extends TestCase {
-
- // TODO: This is a workaround until TIKA-371 is fixed
- private Locale defaultLocale;
-
- protected void setUp() {
- defaultLocale = Locale.getDefault();
- Locale.setDefault(Locale.US);
- }
-
- protected void tearDown() {
- Locale.setDefault(defaultLocale);
- }
-
public void testExcel() throws Exception {
InputStream input = OOXMLParserTest.class
.getResourceAsStream("/test-documents/testEXCEL.xlsx");
@@ -53,9 +41,12 @@ public class OOXMLParserTest extends Tes
// TODO: should auto-detect without the resource name
metadata.set(Metadata.RESOURCE_NAME_KEY, "testEXCEL.xlsx");
ContentHandler handler = new BodyContentHandler();
+ ParseContext context = new ParseContext();
+ context.set(Locale.class, Locale.US);
+
try {
- parser.parse(input, handler, metadata);
+ parser.parse(input, handler, metadata, context);
assertEquals(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
@@ -107,8 +98,13 @@ public class OOXMLParserTest extends Tes
assertTrue(content.contains("-1.98E08"));
// Percentage
- assertTrue(content.contains("3%"));
assertTrue(content.contains("2.50%"));
+ // Excel rounds up to 3%, but that requires Java 1.6 or later
+ if(System.getProperty("java.version").startsWith("1.5")) {
+ assertTrue(content.contains("2%"));
+ } else {
+ assertTrue(content.contains("3%"));
+ }
// Time Format: h:mm
assertTrue(content.contains("6:15"));