//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.jobs.interactions.io; import java.io.IOException; import java.util.Collection; import java.util.Collections; import uk.gov.dstl.baleen.jobs.interactions.data.InteractionDefinition; /** * A writer for Interactions. * <p> * Implementations can save to database, file or print to console. */ @FunctionalInterface public interface InteractionWriter extends AutoCloseable { /** * Initialise the writer - this is called before any calls to write(). * * @throws IOException * Signals that an I/O exception has occurred. */ default void initialise() throws IOException { // Do nothing } /** * Write an interaction together with its alternative words (words which indicate the same * interaction). * * @param interaction * the interaction * @param alternatives * the alternatives * @throws IOException * Signals that an I/O exception has occurred. */ void write(InteractionDefinition interaction, Collection<String> alternatives) throws IOException; /** * Write an interaction, without alternatives. * * The only alternative which is output is the interactions own lemma. * * @param interaction * the interaction * @throws IOException * Signals that an I/O exception has occurred. */ default void write(InteractionDefinition interaction) throws IOException { write(interaction, Collections.singletonList(interaction.getWord().getLemma())); } /** * Destroy the writer - this is called after all write() calls. */ default void destroy() { // Do nothing } @Override default void close() { destroy(); } }