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