From fcc149147f03aa7d236a6027aea5af578ab541d8 Mon Sep 17 00:00:00 2001 From: Neil McErlean Date: Wed, 31 Mar 2010 15:25:57 +0000 Subject: [PATCH] Refinement of previous check-in re OOo transformations. I have pulled up the code that handles blocked transformations into a superclass so that the JodConverter-based transformer worker can inherit the same list of blocked transformations. To reiterate, blocked transformations are those that the OOo integration code believes should work but which are broken in practice. These are blocked by the transformers and will always be unavailable regardless of the OOo connection state. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19705 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../OOoContentTransformerHelper.java | 70 +++++++++++++++++++ .../OpenOfficeContentTransformerWorker.java | 29 +------- 2 files changed, 73 insertions(+), 26 deletions(-) create mode 100644 source/java/org/alfresco/repo/content/transform/OOoContentTransformerHelper.java diff --git a/source/java/org/alfresco/repo/content/transform/OOoContentTransformerHelper.java b/source/java/org/alfresco/repo/content/transform/OOoContentTransformerHelper.java new file mode 100644 index 0000000000..875620046a --- /dev/null +++ b/source/java/org/alfresco/repo/content/transform/OOoContentTransformerHelper.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2005-2010 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.repo.content.transform; + +import org.alfresco.repo.content.MimetypeMap; + +/** + * A class providing basic OOo-related functionality shared by both + * {@link ContentTransformer}s and {@link ContentTransformerWorker}s. + */ +public class OOoContentTransformerHelper extends ContentTransformerHelper +{ + /** + * There are some conversions that fail, despite the converter believing them possible. + * This method can be used by subclasses to check if a targetMimetype or source/target + * Mimetype pair are blocked. + * + * @param sourceMimetype + * @param targetMimetype + * @return true if the mimetypes are blocked, else false + */ + protected boolean isTransformationBlocked(String sourceMimetype, String targetMimetype) + { + if (targetMimetype.equals(MimetypeMap.MIMETYPE_XHTML)) + { + return false; + } + else if (targetMimetype.equals(MimetypeMap.MIMETYPE_WORDPERFECT)) + { + return false; + } + else if (targetMimetype.equals(MimetypeMap.MIMETYPE_FLASH)) + { + return false; + } + // OpenOffice 3.2.x doesn't seem to support all Office 97 to Office 07 conversions + else if (sourceMimetype.equals(MimetypeMap.MIMETYPE_WORD) && targetMimetype.equals(MimetypeMap.MIMETYPE_OPENXML_WORDPROCESSING)) + { + return false; + } + else if (sourceMimetype.equals(MimetypeMap.MIMETYPE_EXCEL) && targetMimetype.equals(MimetypeMap.MIMETYPE_OPENXML_SPREADSHEET)) + { + return false; + } + else if (sourceMimetype.equals(MimetypeMap.MIMETYPE_HTML) && targetMimetype.equals(MimetypeMap.MIMETYPE_OPENXML_WORDPROCESSING)) + { + return false; + } + else + { + return true; + } + } +} \ No newline at end of file diff --git a/source/java/org/alfresco/repo/content/transform/OpenOfficeContentTransformerWorker.java b/source/java/org/alfresco/repo/content/transform/OpenOfficeContentTransformerWorker.java index ed27034f09..c9ae31db64 100644 --- a/source/java/org/alfresco/repo/content/transform/OpenOfficeContentTransformerWorker.java +++ b/source/java/org/alfresco/repo/content/transform/OpenOfficeContentTransformerWorker.java @@ -32,7 +32,6 @@ import net.sf.jooreports.openoffice.converter.AbstractOpenOfficeDocumentConverte import net.sf.jooreports.openoffice.converter.OpenOfficeDocumentConverter; import org.alfresco.error.AlfrescoRuntimeException; -import org.alfresco.repo.content.MimetypeMap; import org.alfresco.service.cmr.repository.ContentIOException; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentWriter; @@ -49,7 +48,7 @@ import org.springframework.core.io.DefaultResourceLoader; * * @author Derek Hulley */ -public class OpenOfficeContentTransformerWorker extends ContentTransformerHelper implements ContentTransformerWorker, InitializingBean +public class OpenOfficeContentTransformerWorker extends OOoContentTransformerHelper implements ContentTransformerWorker, InitializingBean { private OpenOfficeConnection connection; private AbstractOpenOfficeDocumentConverter converter; @@ -137,33 +136,11 @@ public class OpenOfficeContentTransformerWorker extends ContentTransformerHelper return false; } - // there are some conversions that fail, despite the converter believing them possible - if (targetMimetype.equals(MimetypeMap.MIMETYPE_XHTML)) + if (isTransformationBlocked(sourceMimetype, targetMimetype)) { return false; } - else if (targetMimetype.equals(MimetypeMap.MIMETYPE_WORDPERFECT)) - { - return false; - } - else if (targetMimetype.equals(MimetypeMap.MIMETYPE_FLASH)) - { - return false; - } - // OpenOffice 3.2.x doesn't seem to support all Office 97 to Office 07 conversions - else if (sourceMimetype.equals(MimetypeMap.MIMETYPE_WORD) && targetMimetype.equals(MimetypeMap.MIMETYPE_OPENXML_WORDPROCESSING)) - { - return false; - } - else if (sourceMimetype.equals(MimetypeMap.MIMETYPE_EXCEL) && targetMimetype.equals(MimetypeMap.MIMETYPE_OPENXML_SPREADSHEET)) - { - return false; - } - else if (sourceMimetype.equals(MimetypeMap.MIMETYPE_HTML) && targetMimetype.equals(MimetypeMap.MIMETYPE_OPENXML_WORDPROCESSING)) - { - return false; - } - + MimetypeService mimetypeService = getMimetypeService(); String sourceExtension = mimetypeService.getExtension(sourceMimetype); String targetExtension = mimetypeService.getExtension(targetMimetype);