    001    package calhoun.analysis.crf.io;
    002
    003    import java.io.IOException;
    004    import java.util.List;
    005
    006    /** an output handler that allows multiple output handlers to be configured.  Each result is handed to each
    007     * output handler in the list.
    008     */
    009    public class OutputHandlerComposite implements OutputHandler {
    010            private static final long serialVersionUID = 7923868199821973396L;
    011
    012            List<OutputHandler> handlers;
    013
    014            public void setOutputLocation(String location) {
    015                    for(OutputHandler handler : handlers) {
    016                            handler.setOutputLocation(location);
    017                    }
    018            }
    019
    020            public void writeOutput(InputSequence<?> sequence, int[] hiddenStates) throws IOException {
    021                    for(OutputHandler handler : handlers) {
    022                            handler.writeOutput(sequence, hiddenStates);
    023                    }
    024            }
    025
    026            public void writeTestOutput(InputSequence<?> sequence, int[] truePath, int[] hiddenStates) throws IOException {
    027                    for(OutputHandler handler : handlers) {
    028                            handler.writeTestOutput(sequence, truePath, hiddenStates);
    029                    }
    030            }
    031
    032            public void outputComplete() throws IOException {
    033                    for(OutputHandler handler : handlers) {
    034                            handler.outputComplete();
    035                    }
    036            }
    037
    038            /** retursn the configured list of output handler.
    039             * @return returns the output handlers
    040             */
    041            public List<OutputHandler> getHandlers() {
    042                    return handlers;
    043            }
    044
    045            /** sets the list of output handlers
    046             * @param handlers a list of output handlers.  The output handlers will be called in order for each prediction or test result.
    047             */
    048            public void setHandlers(List<OutputHandler> handlers) {
    049                    this.handlers = handlers;
    050            }
    051    }