/* * 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; /** *

A DocumentMerger can merge changes from a modified * "Device" Document to the assigned original * "Office" Document.

* *

Merge is useful when an OfficeDocument * is converted to a "Device" Document format, * and the "Device" Document version is modified. * Those changes can be merged back into the original * OfficeDocument with the merger. The merger is capable * of doing this even if the "Device" format is lossy in * comparison to the OfficeDocument format.

* *

The ConverterCapabilities object is what the * DocumentMerger utilizes to know how the "Office" * Document tags are supported in the "Device" * format.

* *

The DocumentMerger object is created by a * the DocumentMergerFactory {@link * org.openoffice.xmerge.DocumentMergerFactory#createDocumentMerger * createDocumenMerger} method. When it is constructed, the * "Original Office" Document object is * passed in to be used as input.

* * @author Herbie Ong * @see org.openoffice.xmerge.PluginFactory * @see org.openoffice.xmerge.DocumentMergerFactory * @see org.openoffice.xmerge.ConverterCapabilities */ public interface DocumentMerger { /** *

This method will find the changes that had happened * in the modifiedDoc Document * object given the designated original Document.

* *

Note that this process may need the knowledge of the * conversion process since some conversion process are lossy. * Items/Data that are lost during the conversion process are not * classified as changes. The main target of this method * is to apply the changes done in modifiedDoc * into the assigned original Document object, thus * it also will try to preserve items that were originally in * the original Document, but never got transferred * during the * {@link org.openoffice.xmerge.DocumentSerializer#serialize * serialize} process/method call. After this method call, the * original Document object will contain the changes * applied.

* *

This method may or may not be thread-safe. * Also, it is expected that the user uses only one instance * of a DocumentMerger object per merge process. * Create another DocumentMerger object for another * merge process.

* * @param modifiedDoc device Document object. * * @throws MergeException If any merge error occurs. */ public void merge(Document modifiedDoc) throws MergeException; }