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"));