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
This commit is contained in:
Neil McErlean
2010-03-31 15:25:57 +00:00
parent 7daa5141b6
commit fcc149147f
2 changed files with 73 additions and 26 deletions

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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 <code>true</code> if the mimetypes are blocked, else <code>false</code>
*/
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;
}
}
}

View File

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