mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-07 18:25:23 +00:00
Added a new metadata extractor based on POI for docx, xlsx and pptx mime types. Changed OpenOfficeMetadataExtracter so that it no longer supports these mime types. Added the new test code to ContentMinimalContextTestSuite Some tidying up of code in AbstractMetadataExtracterTest and OpenOfficeMetadataExtracter to reflect the fact that this extractor does not handle these mime types any more. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19792 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
112 lines
3.2 KiB
Java
112 lines
3.2 KiB
Java
/*
|
|
* Copyright (C) 2005 Jesper Steen Møller
|
|
*
|
|
* 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.metadata;
|
|
|
|
import java.io.Serializable;
|
|
import java.util.Arrays;
|
|
import java.util.HashSet;
|
|
import java.util.Map;
|
|
|
|
import org.alfresco.repo.content.MimetypeMap;
|
|
import org.alfresco.service.cmr.repository.ContentReader;
|
|
import org.alfresco.util.PropertyCheck;
|
|
|
|
/**
|
|
* Extracts values from Star Office documents into the following:
|
|
* <pre>
|
|
* <b>author:</b> -- cm:author
|
|
* <b>title:</b> -- cm:title
|
|
* <b>description:</b> -- cm:description
|
|
* </pre>
|
|
*
|
|
* TIKA Note - this probably won't be ported to TIKA. There's currently
|
|
* no support for these old formats in tika.
|
|
*
|
|
* @author Jesper Steen Møller
|
|
*/
|
|
public class OpenOfficeMetadataExtracter extends AbstractMappingMetadataExtracter implements OpenOfficeMetadataWorker
|
|
{
|
|
public static String[] SUPPORTED_MIMETYPES = new String[] {
|
|
MimetypeMap.MIMETYPE_STAROFFICE5_WRITER,
|
|
MimetypeMap.MIMETYPE_STAROFFICE5_IMPRESS,
|
|
MimetypeMap.MIMETYPE_OPENOFFICE1_WRITER,
|
|
MimetypeMap.MIMETYPE_OPENOFFICE1_IMPRESS
|
|
};
|
|
|
|
private OpenOfficeMetadataWorker worker;
|
|
|
|
public OpenOfficeMetadataExtracter()
|
|
{
|
|
super(new HashSet<String>(Arrays.asList(SUPPORTED_MIMETYPES)));
|
|
}
|
|
|
|
public void setWorker(OpenOfficeMetadataWorker worker)
|
|
{
|
|
this.worker = worker;
|
|
}
|
|
|
|
/**
|
|
* Initialises the bean by establishing an UNO connection
|
|
*/
|
|
@Override
|
|
public synchronized void init()
|
|
{
|
|
PropertyCheck.mandatory("OpenOfficeMetadataExtracter", "worker", worker);
|
|
|
|
// Base initialization
|
|
super.init();
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
public boolean isConnected()
|
|
{
|
|
return worker.isConnected();
|
|
}
|
|
|
|
/**
|
|
* Perform the default check, but also check if the OpenOffice connection is good.
|
|
*/
|
|
@Override
|
|
public boolean isSupported(String sourceMimetype)
|
|
{
|
|
if (!isConnected())
|
|
{
|
|
return false;
|
|
}
|
|
return super.isSupported(sourceMimetype);
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
@Override
|
|
public Map<String, Serializable> extractRaw(ContentReader reader) throws Throwable
|
|
{
|
|
Map<String, Serializable> rawProperties = newRawMap();
|
|
Map<String, Serializable> result = this.worker.extractRaw(reader);
|
|
for (Map.Entry<String, Serializable> entry : result.entrySet())
|
|
{
|
|
putRawValue(entry.getKey(), entry.getValue(), rawProperties);
|
|
}
|
|
return rawProperties;
|
|
}
|
|
}
|