tika-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amy...@apache.org
Subject svn commit: r1221686 - in /tika/trunk: tika-core/src/main/resources/org/apache/tika/mime/ tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ tika-parsers/src/test/java/org/apache/tika/detect/ tika-parsers/src/test/java/org/apache/tika/mime/ t...
Date Wed, 21 Dec 2011 11:58:55 GMT
Author: amylka
Date: Wed Dec 21 11:58:55 2011
New Revision: 1221686

URL: http://svn.apache.org/viewvc?rev=1221686&view=rev
Log:
TIKA-823 support for detecting StarOffice types, both in MimeTypes and POIFSContainerDetector

Added:
    tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-calc.sdc
  (with props)
    tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-draw.sda
  (with props)
    tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-impress.sdd
  (with props)
    tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-writer.sdw
  (with props)
Modified:
    tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java
    tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java
    tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java

Modified: tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml?rev=1221686&r1=1221685&r2=1221686&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml (original)
+++ tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml Wed Dec
21 11:58:55 2011
@@ -1885,18 +1885,42 @@
   <mime-type type="application/vnd.sss-dtf"/>
   <mime-type type="application/vnd.sss-ntf"/>
   <mime-type type="application/vnd.stardivision.calc">
+    <sub-class-of type="application/x-tika-msoffice"/>
+    <magic priority="50">
+      <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
+         <match value="StarCalc" type="string" offset="2048:2207" />
+      </match>
+    </magic>
     <glob pattern="*.sdc"/>
   </mime-type>
   <mime-type type="application/vnd.stardivision.draw">
+    <sub-class-of type="application/x-tika-msoffice"/>
+    <magic priority="50">
+      <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
+         <match value="StarDraw" type="string" offset="2048:2207" />
+      </match>
+    </magic>
     <glob pattern="*.sda"/>
   </mime-type>
   <mime-type type="application/vnd.stardivision.impress">
+    <sub-class-of type="application/x-tika-msoffice"/>
+    <magic priority="50">
+      <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
+         <match value="StarImpress" type="string" offset="2048:2207" />
+      </match>
+    </magic>
     <glob pattern="*.sdd"/>
   </mime-type>
   <mime-type type="application/vnd.stardivision.math">
     <glob pattern="*.smf"/>
   </mime-type>
   <mime-type type="application/vnd.stardivision.writer">
+    <sub-class-of type="application/x-tika-msoffice"/>
+    <magic priority="50">
+      <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
+         <match value="StarWriter" type="string" offset="2048:2207" />
+      </match>
+    </magic>
     <glob pattern="*.sdw"/>
   </mime-type>
   <mime-type type="application/x-staroffice-template">

Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java?rev=1221686&r1=1221685&r2=1221686&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
(original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
Wed Dec 21 11:58:55 2011
@@ -117,7 +117,7 @@ public class OfficeParser extends Abstra
             for (Entry entry : node) {
                 names.add(entry.getName());
             }
-            MediaType type = POIFSContainerDetector.detect(names);
+            MediaType type = POIFSContainerDetector.detect(names, node);
             for (POIFSDocumentType poifsType : values()) {
                if (type.equals(poifsType.type)) {
                   return poifsType;

Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java?rev=1221686&r1=1221685&r2=1221686&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java
(original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java
Wed Dec 21 11:58:55 2011
@@ -26,10 +26,14 @@ import java.util.HashSet;
 import java.util.Set;
 import java.util.regex.Pattern;
 
+import org.apache.poi.poifs.filesystem.DirectoryEntry;
 import org.apache.poi.poifs.filesystem.DirectoryNode;
+import org.apache.poi.poifs.filesystem.DocumentInputStream;
+import org.apache.poi.poifs.filesystem.DocumentNode;
 import org.apache.poi.poifs.filesystem.Entry;
 import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
 import org.apache.tika.detect.Detector;
+import org.apache.tika.io.IOUtils;
 import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
@@ -44,6 +48,16 @@ public class POIFSContainerDetector impl
 
     /** Serial version UID */
     private static final long serialVersionUID = -3028021741663605293L;
+    
+    /** An ASCII String "StarImpress" */
+    private static final byte [] STAR_IMPRESS = new byte [] {
+        0x53, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73
+    };
+    
+    /** An ASCII String "StarDraw" */
+    private static final byte [] STAR_DRAW = new byte [] {
+        0x53, 0x74, 0x61, 0x72, 0x44, 0x72, 0x61, 0x77
+    };
 
     /** The OLE base file format */
     public static final MediaType OLE = application("x-tika-msoffice");
@@ -80,6 +94,18 @@ public class POIFSContainerDetector impl
     
     /** Microsoft Project */
     public static final MediaType MPP = application("vnd.ms-project");
+    
+    /** StarOffice Calc */
+    public static final MediaType SDC = application("vnd.stardivision.calc");
+    
+    /** StarOffice Draw */
+    public static final MediaType SDA = application("vnd.stardivision.draw");
+    
+    /** StarOffice Impress */
+    public static final MediaType SDD = application("vnd.stardivision.impress");
+    
+    /** StarOffice Writer */
+    public static final MediaType SDW = application("vnd.stardivision.writer");
 
     /** Regexp for matching the MPP Project Data stream */
     private static final Pattern mppDataMatch = Pattern.compile("\\s\\s\\s\\d+");
@@ -127,16 +153,59 @@ public class POIFSContainerDetector impl
         }
         
         // Detect based on the names (as available)
-        return detect(names);
+        if (tis != null && 
+            tis.getOpenContainer() != null && 
+            tis.getOpenContainer() instanceof NPOIFSFileSystem) {
+            return detect(names, ((NPOIFSFileSystem)tis.getOpenContainer()).getRoot());
+        } else {
+            return detect(names, null);
+        }
     }
-    
+
     /**
-     * Internal detection of the specific kind of OLE2 document, based on the 
-     *  names of the top level streams within the file.
+     * Internal detection of the specific kind of OLE2 document, based on the
+     * names of the top level streams within the file.
+     * 
+     * @deprecated Use {@link #detect(Set, DirectoryEntry)} and pass the root
+     *             entry of the filesystem whose type is to be detected, as a
+     *             second argument.
      */
     protected static MediaType detect(Set<String> names) {
+        return detect(names, null);
+    }
+    
+    /**
+     * Internal detection of the specific kind of OLE2 document, based on the
+     * names of the top-level streams within the file. In some cases the
+     * detection may need access to the root {@link DirectoryEntry} of that file
+     * for best results. The entry can be given as a second, optional argument.
+     * 
+     * @param names
+     * @param root
+     * @return
+     */
+    protected static MediaType detect(Set<String> names, DirectoryEntry root) {
         if (names != null) {
-            if (names.contains("WksSSWorkBook")) {
+            if (names.contains("StarCalcDocument")) {
+                // Star Office Calc
+                return SDC;
+            } else if (names.contains("StarWriterDocument")) {
+                return SDW;
+            } else if (names.contains("StarDrawDocument3")) {
+                if (root == null) {
+                    /*
+                     * This is either StarOfficeDraw or StarOfficeImpress, we have
+                     * to consult the CompObj to distinguish them, if this method is
+                     * called in "legacy mode", without the root, just return
+                     * x-tika-msoffice. The one-argument method is only for backward
+                     * compatibility, if someone calls old API he/she can get the
+                     * old result.
+                     */
+                    return OLE;
+                } else {
+                    return processStarDrawOrImpress(root);
+                }
+            } else if (names.contains("WksSSWorkBook")) {
                 // This check has to be before names.contains("Workbook")
                 // Works 7.0 spreadsheet files contain both
                 // we want to avoid classifying this as Excel
@@ -165,8 +234,8 @@ public class POIFSContainerDetector impl
             } else if (names.contains("\u0001Ole10Native")) {
                 return OLE10_NATIVE;
             } else if (names.contains("MatOST")) {
-            	// this occurs on older Works Word Processor files (versions 3.0 and 4.0)
-            	return WPS;
+                // this occurs on older Works Word Processor files (versions 3.0 and 4.0)
+                return WPS;
             } else if (names.contains("CONTENTS") && names.contains("SPELLING"))
{
                // Newer Works files
                return WPS;
@@ -207,6 +276,58 @@ public class POIFSContainerDetector impl
         return OLE;
     }
 
+    private static MediaType processStarDrawOrImpress(DirectoryEntry root) {
+        try {
+            Entry e = root.getEntry("\u0001CompObj");
+            if (e != null && e.isDocumentEntry()) {
+                DocumentNode dn = (DocumentNode)e;
+                DocumentInputStream stream = new DocumentInputStream(dn);
+                byte [] bytes = IOUtils.toByteArray(stream);
+                /*
+                 * This array contains a string with a normal ASCII name of the
+                 * application used to create this file. We want to search for that
+                 * name.
+                 */
+                if ( arrayContains(bytes, STAR_DRAW) ) {
+                    return SDA;
+                } else if (arrayContains(bytes, STAR_IMPRESS)) {
+                    return SDD;
+                }
+            } 
+        } catch (Exception e) {
+            /*
+             * "root.getEntry" can throw FileNotFoundException. The code inside
+             * "if" can throw IOExceptions. Theoretically. Practically no
+             * exceptions will likely ever appear.
+             * 
+             * Swallow all of them. If any occur, we just assume that we can't
+             * distinguish between Draw and Impress and return something safe:
+             * x-tika-msoffice
+             */
+        }
+        return OLE;
+    }
+    
+    // poor man's search for byte arrays, replace with some library call if
+    // you know one without adding new dependencies
+    private static boolean arrayContains(byte [] larger, byte [] smaller) {
+        int largerCounter = 0;
+        int smallerCounter = 0;
+        while (largerCounter < larger.length) {
+            if (larger[largerCounter] == smaller[smallerCounter]) {
+                largerCounter++;
+                smallerCounter++;
+                if (smallerCounter == smaller.length) {
+                    return true;
+                }
+            } else {
+                largerCounter = largerCounter - smallerCounter + 1;
+                smallerCounter=0;
+            }
+        }
+        return false;
+    }
+
     private static Set<String> getTopLevelNames(TikaInputStream stream)
             throws IOException {
         // Force the document stream to a (possibly temporary) file

Modified: tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java?rev=1221686&r1=1221685&r2=1221686&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java
(original)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java
Wed Dec 21 11:58:55 2011
@@ -41,6 +41,10 @@ public class TestContainerAwareDetector 
     private void assertTypeByNameAndData(String file, String type) throws Exception {
        assertTypeByNameAndData(file, file, type);
     }
+    private void assertType(String file, String byData, String byNameAndData) throws Exception
{
+       assertTypeByData(file, byData);
+       assertTypeByNameAndData(file, byNameAndData);
+    }
     private void assertTypeByNameAndData(String dataFile, String name, String type) throws
Exception {
        TikaInputStream stream = TikaInputStream.get(
                TestContainerAwareDetector.class.getResource(
@@ -71,8 +75,8 @@ public class TestContainerAwareDetector 
         assertTypeByData("testWORKS.wps", "application/vnd.ms-works");
         assertTypeByData("testWORKS2000.wps", "application/vnd.ms-works");
         // older Works Word Processor files can't be recognized
-    	// they were created with Works Word Processor 7.0 (hence the text inside)
-    	// and exported to the older formats with the "Save As" feature
+        // they were created with Works Word Processor 7.0 (hence the text inside)
+        // and exported to the older formats with the "Save As" feature
         assertTypeByData("testWORKSWordProcessor3.0.wps","application/vnd.ms-works");
         assertTypeByData("testWORKSWordProcessor4.0.wps","application/vnd.ms-works");
         assertTypeByData("testWORKSSpreadsheet7.0.xlr", "application/x-tika-msworks-spreadsheet");
@@ -99,6 +103,42 @@ public class TestContainerAwareDetector 
         assertTypeByNameAndData("testEXCEL.xls", "notPDF.pdf",  "application/vnd.ms-excel");
         assertTypeByNameAndData("testEXCEL.xls", "notPNG.png",  "application/vnd.ms-excel");
     }
+    
+    /**
+     * There is no way to distinguish "proper" StarOffice files from templates.
+     * All templates have the same extension but their actual type depends on
+     * the magic. Our current MimeTypes class doesn't allow us to use the same
+     * glob pattern in more than one mimetype.
+     * 
+     * @throws Exception
+     */
+    public void testDetectStarOfficeFiles() throws Exception {
+        assertType("testStarOffice-5.2-calc.sdc",
+                "application/vnd.stardivision.calc",
+                "application/vnd.stardivision.calc");
+        assertType("testVORCalcTemplate.vor",
+                "application/vnd.stardivision.calc",
+                "application/vnd.stardivision.calc");
+        assertType("testStarOffice-5.2-draw.sda",
+                "application/vnd.stardivision.draw",
+                "application/vnd.stardivision.draw");
+        assertType("testVORDrawTemplate.vor",
+                "application/vnd.stardivision.draw",
+                "application/vnd.stardivision.draw");
+        assertType("testStarOffice-5.2-impress.sdd",
+                "application/vnd.stardivision.impress",
+                "application/vnd.stardivision.impress");
+        assertType("testVORImpressTemplate.vor",
+                "application/vnd.stardivision.impress",
+                "application/vnd.stardivision.impress");
+        assertType("testStarOffice-5.2-writer.sdw",
+                "application/vnd.stardivision.writer",
+                "application/vnd.stardivision.writer");
+        assertType("testVORWriterTemplate.vor",
+                "application/vnd.stardivision.writer",
+                "application/vnd.stardivision.writer");
+
+    }
 
     public void testOpenContainer() throws Exception {
         TikaInputStream stream = TikaInputStream.get(

Modified: tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java?rev=1221686&r1=1221685&r2=1221686&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java (original)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java Wed Dec
21 11:58:55 2011
@@ -110,16 +110,6 @@ public class TestMimeTypes extends TestC
         assertTypeByName("application/vnd.ms-powerpoint.presentation.macroenabled.12", "x.pptm");
         assertTypeByName("application/vnd.ms-powerpoint.template.macroenabled.12", "x.potm");
         assertTypeByName("application/vnd.ms-powerpoint.slideshow.macroenabled.12", "x.ppsm");
-
-        assertTypeByName("application/x-staroffice-template", "x.vor");
-        assertTypeByData("application/x-tika-msoffice", "testVORCalcTemplate.vor");
-        assertTypeByData("application/x-tika-msoffice", "testVORDrawTemplate.vor");
-        assertTypeByData("application/x-tika-msoffice", "testVORImpressTemplate.vor");
-        assertTypeByData("application/x-tika-msoffice", "testVORWriterTemplate.vor");
-        assertTypeByNameAndData("application/x-staroffice-template", "testVORCalcTemplate.vor");
-        assertTypeByNameAndData("application/x-staroffice-template", "testVORDrawTemplate.vor");
-        assertTypeByNameAndData("application/x-staroffice-template", "testVORImpressTemplate.vor");
-        assertTypeByNameAndData("application/x-staroffice-template", "testVORWriterTemplate.vor");
     }
 
     /**
@@ -159,16 +149,52 @@ public class TestMimeTypes extends TestC
      * @throws Exception
      */
     public void testWorksSpreadsheetDetection() throws Exception {
-    	assertTypeDetection("testWORKSSpreadsheet7.0.xlr",
-    			// with name-only, everything should be all right 
-    			"application/x-tika-msworks-spreadsheet",
-    			// this is possible due to MimeTypes guessing the type
-    	        // based on the WksSSWorkBook near the beginning of the
-    	        // file
-    			"application/x-tika-msworks-spreadsheet",
-    			// this is right, the magic-based detection works, there is
-    	        // no need for the name-based detection to refine it
-    			"application/x-tika-msworks-spreadsheet");
+        assertTypeDetection("testWORKSSpreadsheet7.0.xlr",
+                // with name-only, everything should be all right 
+                "application/x-tika-msworks-spreadsheet",
+                // this is possible due to MimeTypes guessing the type
+                // based on the WksSSWorkBook near the beginning of the
+                // file
+                "application/x-tika-msworks-spreadsheet",
+                // this is right, the magic-based detection works, there is
+                // no need for the name-based detection to refine it
+                "application/x-tika-msworks-spreadsheet");
+    }
+    
+    public void testStarOfficeDetection() throws Exception {
+        assertTypeDetection("testVORCalcTemplate.vor",
+                "application/x-staroffice-template",
+                "application/vnd.stardivision.calc",
+                "application/vnd.stardivision.calc");
+        assertTypeDetection("testVORDrawTemplate.vor",
+                "application/x-staroffice-template",
+                "application/vnd.stardivision.draw",
+                "application/vnd.stardivision.draw");
+        assertTypeDetection("testVORImpressTemplate.vor",
+                "application/x-staroffice-template",
+                "application/vnd.stardivision.impress",
+                "application/vnd.stardivision.impress");
+        assertTypeDetection("testVORWriterTemplate.vor",
+                "application/x-staroffice-template",
+                "application/vnd.stardivision.writer",
+                "application/vnd.stardivision.writer");
+        
+        assertTypeDetection("testStarOffice-5.2-calc.sdc",
+                "application/vnd.stardivision.calc",
+                "application/vnd.stardivision.calc",
+                "application/vnd.stardivision.calc");
+        assertTypeDetection("testStarOffice-5.2-draw.sda",
+                "application/vnd.stardivision.draw",
+                "application/vnd.stardivision.draw",
+                "application/vnd.stardivision.draw");
+        assertTypeDetection("testStarOffice-5.2-impress.sdd",
+                "application/vnd.stardivision.impress",
+                "application/vnd.stardivision.impress",
+                "application/vnd.stardivision.impress");
+        assertTypeDetection("testStarOffice-5.2-writer.sdw",
+                "application/vnd.stardivision.writer",
+                "application/vnd.stardivision.writer",
+                "application/vnd.stardivision.writer");
     }
     
     /**
@@ -178,21 +204,21 @@ public class TestMimeTypes extends TestC
      * @throws Exception
      */
     public void testOldWorksWordProcessorDetection() throws Exception {
-    	assertTypeDetection(
-    			"testWORKSWordProcessor3.0.wps",
-    			// .wps is just like any other works extension
-    			"application/vnd.ms-works",
-    			// this is due to MatOST substring
-    			"application/vnd.ms-works",
-    			// magic-based detection works, no need to refine it
-    			"application/vnd.ms-works");
-    	
-    	// files in version 4.0 are no different from those in version 3.0
-    	assertTypeDetection(
-    			"testWORKSWordProcessor4.0.wps",
-    			"application/vnd.ms-works",
-    			"application/vnd.ms-works",
-    			"application/vnd.ms-works");
+        assertTypeDetection(
+                "testWORKSWordProcessor3.0.wps",
+                // .wps is just like any other works extension
+                "application/vnd.ms-works",
+                // this is due to MatOST substring
+                "application/vnd.ms-works",
+                // magic-based detection works, no need to refine it
+                "application/vnd.ms-works");
+        
+        // files in version 4.0 are no different from those in version 3.0
+        assertTypeDetection(
+                "testWORKSWordProcessor4.0.wps",
+                "application/vnd.ms-works",
+                "application/vnd.ms-works",
+                "application/vnd.ms-works");
     }
     
     /**
@@ -596,14 +622,14 @@ public class TestMimeTypes extends TestC
     }
     
     private void assertTypeDetection(String filename, String byName, String byData, 
-    		String byNameAndData) throws IOException {
-    	assertTypeByName(byName, filename);
-    	assertTypeByData(byData, filename);
-    	assertTypeByNameAndData(byNameAndData, filename);
+            String byNameAndData) throws IOException {
+        assertTypeByName(byName, filename);
+        assertTypeByData(byData, filename);
+        assertTypeByNameAndData(byNameAndData, filename);
     }
     
     private void assertTypeByNameAndData(String expected, String filename)
-	    throws IOException {
+        throws IOException {
        assertEquals(expected, getTypeByNameAndData(filename).toString());
     }
     private MediaType getTypeByNameAndData(String filename) throws IOException {

Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-calc.sdc
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-calc.sdc?rev=1221686&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-calc.sdc
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-draw.sda
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-draw.sda?rev=1221686&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-draw.sda
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-impress.sdd
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-impress.sdd?rev=1221686&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-impress.sdd
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-writer.sdw
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-writer.sdw?rev=1221686&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tika/trunk/tika-parsers/src/test/resources/test-documents/testStarOffice-5.2-writer.sdw
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



Mime
View raw message