All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nuiton.eugene.writer.ChainedWriterEngine Maven / Gradle / Ivy

/*
 * #%L
 * EUGene :: EUGene
 * 
 * $Id: ChainedWriterEngine.java 1079 2011-06-28 09:15:23Z tchemit $
 * $HeadURL: https://svn.nuiton.org/eugene/tags/eugene-2.11/eugene/src/main/java/org/nuiton/eugene/writer/ChainedWriterEngine.java $
 * %%
 * Copyright (C) 2004 - 2010 CodeLutin
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as 
 * published by the Free Software Foundation, either version 3 of the 
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Lesser Public License for more details.
 * 
 * You should have received a copy of the GNU General Lesser Public 
 * License along with this program.  If not, see
 * .
 * #L%
 */

package org.nuiton.eugene.writer;

import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Contract of the chained writer engine.
 * 

* You can register inputs via the method {@link #registerInclude(String)}. *

* And later obtain of the selected writers for your inputs via the method * {@link #getSelectedWriters()}. *

* Created: 17 déc. 2009 * * @author tchemit * @version $Revision: 1079 $ * @since 2.0.0 */ public interface ChainedWriterEngine { /** * Register in engine a new input source. *

* this method will detects writers to register and chain them if * necessary. * * @param include the new include to digest */ void registerInclude(String include); /** @return the common configuration of engine */ ChainedFileWriterConfiguration getConfiguration(); /** * Sets the common configuration. * * @param configuration the new configuration ot use. */ void setConfiguration(ChainedFileWriterConfiguration configuration); /** @return the set of all available writers discovered at runtime */ Set getAvailableWriters(); /** @return the list of selected writers after having registred some inputs. */ List getSelectedWriters(); /** * Tests if there is a selected writer using the given input protocol. * * @param inputProtocol the inputProtocol to test * @return {@code true} if there is a selected writer using this input * protocol * @see ChainedFileWriter#getInputProtocol() * @see #getSelectedWriters() */ boolean containsWriter(String inputProtocol); /** * Filter the given {@code universe} of writers which accept the given * {@code modelType}. * * @param universe the list of writers to filter * @param modelType the accepted model type * @return the set of filtered writers * @see ChainedFileWriter#acceptModel(String) */ Set filterWriterForModelType( Map universe, String modelType); /** * Filter the given {@code universe} of writers which accept the given * {@code modelType} and {@code inputProtocol}. * * @param universe the list of writers to filter * @param inputProtocol the accepted input protocol * @param modelType the accepted model type * @return the set of filtered writers * @see ChainedFileWriter#acceptModel(String) * @see ChainedFileWriter#getInputProtocol() * @see ChainedFileWriter#getInputProtocol(String) */ ChainedFileWriter getWriterForInputProtocol( Set universe, String inputProtocol, String modelType); /** * Filter the given {@code universe} of writers which accept the given * {@code modelType} and {@code include}. *

* The include can have several forms :

* * @param universe the list of writers to filter * @param include the include configuration * @param modelType the accepted model type * @return the set of filtered writers * @see ChainedFileWriter#acceptModel(String) * @see ChainedFileWriter#getInputProtocol() * @see ChainedFileWriter#getInputProtocol(String) */ ChainedFileWriter getWriterForInclude( Set universe, String include, String modelType); /** * Obtain the universe of files to react by the given {@code writer} * associated with each (distinct). *

* Note: If some files are in class-path (using the classpath: * prefix) then they will be extracted to the * {@link ChainedFileWriterConfiguration#getExtractDirectory()}. * * @param writer the writer to inspect * @return the universe of files to react for the given writer * @throws IOException for any IO pb * @since 2.1.3 */ ChainedFileWriterData getData(ChainedFileWriter writer) throws IOException; /** clean all internal states */ void clear(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy