/* * 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.
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.
Document
object.
*
* @throws MergeException If any merge error occurs.
*/
public void merge(Document modifiedDoc) throws MergeException;
}