/* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ package org.openoffice.xmerge; import org.openoffice.xmerge.util.registry.ConverterInfo; import java.io.InputStream; import java.io.IOException; /** *

A PluginFactory encapsulates the * conversions from one Document format to another. * It provides conversions in both directions. Refer to the * * package description for its usage.

* *

Conversion from the "Office" Document * format to a "Device" Document format may * be lossy, i.e. some information may be lost. If a plug-in * implements the DocumentMergerFactory interface, * then there is the possibility for merging the changes done on the * "Device" Document back to the original * "Office" Document via the * DocumentMerger interface.

* *

Plug-ins that convert from the "Device" * Document format to the "Office" * Document format must implement the * DocumentDeserializerFactory interface. Plug-ins * that convert from the "Office" Document * format to the "Device" format must implement the * DocumentSerializerFactory interface. * *

All plug-ins should have an associated Plugin Configuration XML * File which describes the capabilities of the plug-in. If the * plug-in is bundled in a jarfile, then this XML file is also bundled * with the jarfile. The data in the XML file is managed by the * ConverterInfo object. The ConverterInfoMgr * manages a registry of all ConverterInfo objects. For * more information about this XML file, refer to * * org.openoffice.xmerge.util.registry.

* * @author Herbie Ong * @see Document * @see DocumentSerializer * @see DocumentSerializerFactory * @see DocumentDeserializer * @see DocumentDeserializerFactory * @see DocumentMerger * @see DocumentMergerFactory * @see ConverterInfo * @see org.openoffice.xmerge.util.registry.ConverterInfoMgr */ public abstract class PluginFactory { /** * Cached ConvertInfo object. */ private ConverterInfo ciCache; /** * Constructor that caches the ConvertInfo that * corresponds to the registry information for this plug-in. * * @param ci ConvertInfo object. */ public PluginFactory(ConverterInfo ci) { ciCache=ci; } /** * Returns the ConvertInfo that corresponds to this * plug-in. * * @return The ConvertInfo that corresponds to this * plug-in. */ public ConverterInfo getConverterInfo () { return ciCache; } /** *

Create a Document object that corresponds to * the Office data passed in via the InputStream * object. This abstract method must be implemented for each * plug-in.

* *

This method will read from the given InputStream * object. The returned Document object will contain * the necessary data for the other objects created by the * PluginFactory to process, like a * DocumentSerializer object and a * DocumentMerger object.

* * @param name The Document name. * @param is InputStream object corresponding * to the Document. * * @return A Document object representing the * particular Document format for the * PluginFactory. * * @throws IOException If any I/O error occurs. */ public abstract Document createOfficeDocument(String name, InputStream is) throws IOException; /** *

Create a Document object that corresponds to * the Office data passed in via the InputStream * object. This abstract method must be implemented for each * plug-in.

* *

This method will read from the given InputStream * object. The returned Document object will contain * the necessary data for the other objects created by the * PluginFactory to process, like a * DocumentSerializer object and a * DocumentMerger object.

* * @param name The Document name. * @param is InputStream object corresponding * to the Document. * @param isZip boolean to show that the created office * document is to be zipped. * * @return A Document object representing the * particular Document format for the * PluginFactory. * * @throws IOException If any I/O error occurs. */ public abstract Document createOfficeDocument(String name, InputStream is,boolean isZip) throws IOException; /** *

Create a Document object that corresponds to * the device data passed in via the InputStream * object. This abstract method must be implemented for each * plug-in.

* *

This method will read from the given InputStream * object. The returned Document object will contain * the necessary data for the other objects created by the * PluginFactory to process, like a * DocumentSerializer object and a * DocumentMerger object.

* * @param name The Document name. * @param is InputStream object corresponding * to the Document. * * @return A Document object representing the * particular Document format for the * PluginFactory. * * @throws IOException If any I/O error occurs. */ public abstract Document createDeviceDocument(String name, InputStream is) throws IOException; }