com.topologi.diffx.format.MultiplexFormatter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of docx4j-diffx Show documentation
Show all versions of docx4j-diffx Show documentation
differencing of docx files
/*
* This file is part of the DiffX library.
*
* For licensing information please see the file license.txt included in the release.
* A copy of this licence can also be found at
* http://www.opensource.org/licenses/artistic-license-2.0.php
*/
package com.topologi.diffx.format;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.topologi.diffx.config.DiffXConfig;
import com.topologi.diffx.event.DiffXEvent;
/**
* A formatter which can relay the method calls to multiple formatters.
*
* @author Christophe Lauret
* @version 11 December 2008
*/
public final class MultiplexFormatter implements DiffXFormatter {
// class attributes ---------------------------------------------------------------------------
/**
* the list of formatters to use.
*/
private final List formatters;
// constructors -------------------------------------------------------------------------------
/**
* Creates a new formatter without any underlying formatters.
*/
public MultiplexFormatter() {
this.formatters = new ArrayList();
}
/**
* Creates a new formatter wrapping the specified formatter.
*
* @param f The formatter to use.
*/
public MultiplexFormatter(DiffXFormatter f) {
this.formatters = new ArrayList(1);
this.formatters.add(f);
}
// methods ------------------------------------------------------------------------------------
/**
* Adds a formatter to multiplex.
*
* @param f The Diff-X formatter to add.
*/
public void add(DiffXFormatter f) {
this.formatters.add(f);
}
@Override
public void format(DiffXEvent e) throws IOException {
for (DiffXFormatter f : this.formatters) {
f.format(e);
}
}
@Override
public void insert(DiffXEvent e) throws IOException {
for (DiffXFormatter f : this.formatters) {
f.insert(e);
}
}
@Override
public void delete(DiffXEvent e) throws IOException, IllegalStateException {
for (DiffXFormatter f : this.formatters) {
f.delete(e);
}
}
@Override
public void setConfig(DiffXConfig config) {
for (DiffXFormatter f : this.formatters) {
f.setConfig(config);
}
}
}