diff --git a/config/alfresco/content-services-context.xml b/config/alfresco/content-services-context.xml index 2ce23d8ae0..2b7595f4ca 100644 --- a/config/alfresco/content-services-context.xml +++ b/config/alfresco/content-services-context.xml @@ -34,9 +34,22 @@ + + + + + + alfresco/mimetype/mimetype-map.xml + alfresco/mimetype/mimetype-map-openoffice.xml + + + + + + - + diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml index 35571c25a1..9e405227f8 100644 --- a/config/alfresco/core-services-context.xml +++ b/config/alfresco/core-services-context.xml @@ -118,22 +118,6 @@ - - - - - - - - - - alfresco/mimetype-map.xml - - - - - - diff --git a/config/alfresco/mimetype/mimetype-map-openoffice.xml b/config/alfresco/mimetype/mimetype-map-openoffice.xml new file mode 100644 index 0000000000..7fa57b8ec8 --- /dev/null +++ b/config/alfresco/mimetype/mimetype-map-openoffice.xml @@ -0,0 +1,89 @@ + + + + + + + + odt + + + ott + + + oth + + + odm + + + odg + + + otg + + + odp + + + otp + + + ods + + + ots + + + odc + + + odf + + + odb + + + odi + + + + + sxc + + + sxd + + + sxw + + + + + sda + + + sdc + + + sdd + + + sdp + + + sds + + + sdw + + + sgl + + + smf + + + + + diff --git a/config/alfresco/mimetype-map.xml b/config/alfresco/mimetype/mimetype-map.xml similarity index 80% rename from config/alfresco/mimetype-map.xml rename to config/alfresco/mimetype/mimetype-map.xml index be73b29e78..c2c9311823 100644 --- a/config/alfresco/mimetype-map.xml +++ b/config/alfresco/mimetype/mimetype-map.xml @@ -284,57 +284,6 @@ zip - - odt - - - ott - - - oth - - - odm - - - odg - - - otg - - - odp - - - otp - - - ods - - - ots - - - odc - - - odf - - - odb - - - odi - - - sxw - - - sxc - - - sdc - dwg diff --git a/source/java/org/alfresco/repo/content/MimetypeMap.java b/source/java/org/alfresco/repo/content/MimetypeMap.java index 2c1b443462..4530fe3341 100644 --- a/source/java/org/alfresco/repo/content/MimetypeMap.java +++ b/source/java/org/alfresco/repo/content/MimetypeMap.java @@ -73,10 +73,18 @@ public class MimetypeMap implements MimetypeService public static final String MIMETYPE_OPENDOCUMENT_TEXT_WEB= "application/vnd.oasis.opendocument.text-web"; public static final String MIMETYPE_OPENDOCUMENT_DATABASE= "application/vnd.oasis.opendocument.database"; // Open Office - public static final String MIMETYPE_OPENOFFICE_WRITER = "application/vnd.sun.xml.writer"; - public static final String MIMETYPE_OPENOFFICE_CALC = "application/vnd.sun.xml.calc"; + public static final String MIMETYPE_OPENOFFICE1_WRITER = "application/vnd.sun.xml.writer"; + public static final String MIMETYPE_OPENOFFICE1_CALC = "application/vnd.sun.xml.calc"; + public static final String MIMETYPE_OPENOFFICE1_DRAW = "application/vnd.sun.xml.draw"; // Star Office - public static final String MIMETYPE_STAROFFICE5_SPREADSHEET = "application/vnd.stardivision.calc"; + public static final String MIMETYPE_STAROFFICE5_DRAW = "application/vnd.stardivision.draw"; + public static final String MIMETYPE_STAROFFICE5_CALC = "application/vnd.stardivision.calc"; + public static final String MIMETYPE_STAROFFICE5_IMPRESS = "application/vnd.stardivision.impress"; + public static final String MIMETYPE_STAROFFICE5_IMPRESS_PACKED = "application/vnd.stardivision.impress-packed"; + public static final String MIMETYPE_STAROFFICE5_CHART = "application/vnd.stardivision.chart"; + public static final String MIMETYPE_STAROFFICE5_WRITER = "application/vnd.stardivision.writer"; + public static final String MIMETYPE_STAROFFICE5_WRITER_GLOBAL = "application/vnd.stardivision.writer-global"; + public static final String MIMETYPE_STAROFFICE5_MATH = "application/vnd.stardivision.math"; // Audio public static final String MIMETYPE_MP3 = "audio/x-mpeg"; // Alfresco diff --git a/source/java/org/alfresco/repo/content/MimetypeMapTest.java b/source/java/org/alfresco/repo/content/MimetypeMapTest.java index ec722faf47..6c9f30f1c8 100644 --- a/source/java/org/alfresco/repo/content/MimetypeMapTest.java +++ b/source/java/org/alfresco/repo/content/MimetypeMapTest.java @@ -54,5 +54,8 @@ public class MimetypeMapTest extends BaseSpringTest // MS Word assertEquals("doc", extensionsByMimetype.get("application/msword")); assertEquals("application/msword", mimetypesByExtension.get("doc")); + + // Star Office + assertEquals("sds", extensionsByMimetype.get("application/vnd.stardivision.chart")); } } diff --git a/source/java/org/alfresco/repo/content/metadata/UnoMetadataExtracter.java b/source/java/org/alfresco/repo/content/metadata/UnoMetadataExtracter.java index 53e0754d03..4bdc69ddd0 100644 --- a/source/java/org/alfresco/repo/content/metadata/UnoMetadataExtracter.java +++ b/source/java/org/alfresco/repo/content/metadata/UnoMetadataExtracter.java @@ -54,7 +54,7 @@ public class UnoMetadataExtracter extends AbstractMetadataExtracter private static String[] mimeTypes = new String[] { MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT, - MimetypeMap.MIMETYPE_OPENOFFICE_WRITER, + MimetypeMap.MIMETYPE_OPENOFFICE1_WRITER, // Add the other OpenOffice.org stuff here // In fact, other types may apply as well, but should be counted as lower // quality since they involve conversion. diff --git a/source/java/org/alfresco/repo/content/metadata/UnoMetadataExtracterTest.java b/source/java/org/alfresco/repo/content/metadata/UnoMetadataExtracterTest.java index b6f9d5f67b..3676728cc9 100644 --- a/source/java/org/alfresco/repo/content/metadata/UnoMetadataExtracterTest.java +++ b/source/java/org/alfresco/repo/content/metadata/UnoMetadataExtracterTest.java @@ -53,7 +53,7 @@ public class UnoMetadataExtracterTest extends AbstractMetadataExtracterTest reliability = extracter.getReliability(MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT); assertEquals("OpenOffice 2.0 Writer (OpenDoc) should be supported", 1.0, reliability); - reliability = extracter.getReliability(MimetypeMap.MIMETYPE_OPENOFFICE_WRITER); + reliability = extracter.getReliability(MimetypeMap.MIMETYPE_OPENOFFICE1_WRITER); assertEquals("OpenOffice 1.0 Writer should be supported", 1.0, reliability); } @@ -74,6 +74,6 @@ public class UnoMetadataExtracterTest extends AbstractMetadataExtracterTest return; } - testCommonMetadata(extractFromExtension("sxw", MimetypeMap.MIMETYPE_OPENOFFICE_WRITER)); + testCommonMetadata(extractFromExtension("sxw", MimetypeMap.MIMETYPE_OPENOFFICE1_WRITER)); } } diff --git a/source/java/org/alfresco/repo/content/transform/UnoContentTransformer.java b/source/java/org/alfresco/repo/content/transform/UnoContentTransformer.java index c86408a920..76dfad5952 100644 --- a/source/java/org/alfresco/repo/content/transform/UnoContentTransformer.java +++ b/source/java/org/alfresco/repo/content/transform/UnoContentTransformer.java @@ -53,9 +53,7 @@ public class UnoContentTransformer extends AbstractContentTransformer // Build the map of known Uno document formats and store by conversion key formatsByConversion = new HashMap(17); - formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENDOCUMENT_SPREADSHEET, MimetypeMap.MIMETYPE_PDF), - new DocumentFormatWrapper(DocumentFormat.PDF_CALC, 1.0)); + // Open Office 2.0 / Open Document formatsByConversion.put( new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT, MimetypeMap.MIMETYPE_TEXT_PLAIN), new DocumentFormatWrapper(DocumentFormat.TEXT, 1.0)); @@ -63,26 +61,47 @@ public class UnoContentTransformer extends AbstractContentTransformer new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENDOCUMENT_TEXT, MimetypeMap.MIMETYPE_PDF), new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE_WRITER, MimetypeMap.MIMETYPE_TEXT_PLAIN), + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENDOCUMENT_SPREADSHEET, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_CALC, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENDOCUMENT_PRESENTATION, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); + // Open Office + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE1_WRITER, MimetypeMap.MIMETYPE_TEXT_PLAIN), new DocumentFormatWrapper(DocumentFormat.TEXT, 1.0)); formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE_WRITER, MimetypeMap.MIMETYPE_PDF), + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE1_WRITER, MimetypeMap.MIMETYPE_PDF), new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE_CALC, MimetypeMap.MIMETYPE_PDF), + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE1_CALC, MimetypeMap.MIMETYPE_PDF), new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_STAROFFICE5_SPREADSHEET, MimetypeMap.MIMETYPE_PDF), + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_OPENOFFICE1_DRAW, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_IMPRESS, 1.0)); + // Star Office 5.x + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_STAROFFICE5_DRAW, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_IMPRESS, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_STAROFFICE5_CALC, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_CALC, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_STAROFFICE5_CHART, MimetypeMap.MIMETYPE_PDF), new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_TEXT_PLAIN, MimetypeMap.MIMETYPE_HTML), - new DocumentFormatWrapper(DocumentFormat.HTML_WRITER, 1.0)); - formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_TEXT_PLAIN, MimetypeMap.MIMETYPE_PDF), + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_STAROFFICE5_IMPRESS, MimetypeMap.MIMETYPE_PDF), new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_TEXT_PLAIN, MimetypeMap.MIMETYPE_WORD), - new DocumentFormatWrapper(DocumentFormat.TEXT, 1.0)); + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_STAROFFICE5_IMPRESS_PACKED, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_IMPRESS, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_STAROFFICE5_WRITER, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_STAROFFICE5_WRITER_GLOBAL, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); + // MS Office formatsByConversion.put( new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_WORD, MimetypeMap.MIMETYPE_TEXT_PLAIN), new DocumentFormatWrapper(DocumentFormat.TEXT, 1.0)); @@ -92,15 +111,25 @@ public class UnoContentTransformer extends AbstractContentTransformer formatsByConversion.put( new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_EXCEL, MimetypeMap.MIMETYPE_PDF), new DocumentFormatWrapper(DocumentFormat.PDF_CALC, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_WORD, MimetypeMap.MIMETYPE_HTML), + new DocumentFormatWrapper(DocumentFormat.HTML_WRITER, 1.0)); formatsByConversion.put( new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_PPT, MimetypeMap.MIMETYPE_FLASH), new DocumentFormatWrapper(DocumentFormat.FLASH_IMPRESS, 1.0)); formatsByConversion.put( new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_PPT, MimetypeMap.MIMETYPE_PDF), new DocumentFormatWrapper(DocumentFormat.PDF_IMPRESS, 1.0)); + // Other formatsByConversion.put( - new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_WORD, MimetypeMap.MIMETYPE_HTML), + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_TEXT_PLAIN, MimetypeMap.MIMETYPE_HTML), new DocumentFormatWrapper(DocumentFormat.HTML_WRITER, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_TEXT_PLAIN, MimetypeMap.MIMETYPE_PDF), + new DocumentFormatWrapper(DocumentFormat.PDF_WRITER, 1.0)); + formatsByConversion.put( + new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_TEXT_PLAIN, MimetypeMap.MIMETYPE_WORD), + new DocumentFormatWrapper(DocumentFormat.TEXT, 1.0)); formatsByConversion.put( new ContentTransformerRegistry.TransformationKey(MimetypeMap.MIMETYPE_HTML, MimetypeMap.MIMETYPE_PDF), new DocumentFormatWrapper(DocumentFormat.PDF_WRITER_WEB, 1.0)); diff --git a/source/test-resources/quick/quick.odf b/source/test-resources/quick/quick.odf new file mode 100644 index 0000000000..963f9f77c6 Binary files /dev/null and b/source/test-resources/quick/quick.odf differ diff --git a/source/test-resources/quick/quick.odg b/source/test-resources/quick/quick.odg new file mode 100644 index 0000000000..a383a283aa Binary files /dev/null and b/source/test-resources/quick/quick.odg differ diff --git a/source/test-resources/quick/quick.odp b/source/test-resources/quick/quick.odp new file mode 100644 index 0000000000..061430e7a2 Binary files /dev/null and b/source/test-resources/quick/quick.odp differ diff --git a/source/test-resources/quick/quick.ods b/source/test-resources/quick/quick.ods index ccb7abaf25..2e33e82693 100644 Binary files a/source/test-resources/quick/quick.ods and b/source/test-resources/quick/quick.ods differ diff --git a/source/test-resources/quick/quick.sda b/source/test-resources/quick/quick.sda new file mode 100644 index 0000000000..8f127a9fa1 Binary files /dev/null and b/source/test-resources/quick/quick.sda differ diff --git a/source/test-resources/quick/quick.sdc b/source/test-resources/quick/quick.sdc index e40a82a3b1..dd42d64acf 100644 Binary files a/source/test-resources/quick/quick.sdc and b/source/test-resources/quick/quick.sdc differ diff --git a/source/test-resources/quick/quick.sdd b/source/test-resources/quick/quick.sdd new file mode 100644 index 0000000000..39e07a4957 Binary files /dev/null and b/source/test-resources/quick/quick.sdd differ diff --git a/source/test-resources/quick/quick.sdw b/source/test-resources/quick/quick.sdw new file mode 100644 index 0000000000..9a4de7c9d6 Binary files /dev/null and b/source/test-resources/quick/quick.sdw differ diff --git a/source/test-resources/quick/quick.smf b/source/test-resources/quick/quick.smf new file mode 100644 index 0000000000..905965ee35 Binary files /dev/null and b/source/test-resources/quick/quick.smf differ diff --git a/source/test-resources/quick/quick.sxc b/source/test-resources/quick/quick.sxc index a7373d2b5a..f2bcabc085 100644 Binary files a/source/test-resources/quick/quick.sxc and b/source/test-resources/quick/quick.sxc differ diff --git a/source/test-resources/quick/quick.sxd b/source/test-resources/quick/quick.sxd new file mode 100644 index 0000000000..df235a5bdd Binary files /dev/null and b/source/test-resources/quick/quick.sxd differ diff --git a/source/test-resources/quick/quick.sxi b/source/test-resources/quick/quick.sxi new file mode 100644 index 0000000000..daae7d5b3f Binary files /dev/null and b/source/test-resources/quick/quick.sxi differ diff --git a/source/test-resources/quick/quick.sxm b/source/test-resources/quick/quick.sxm new file mode 100644 index 0000000000..11fbd6a1d3 Binary files /dev/null and b/source/test-resources/quick/quick.sxm differ