
org.dbunit.dataset.common.handlers.Pipeline Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jtidy Show documentation
Show all versions of jtidy Show documentation
old 2002 version of xmlc-jtidy
The newest version!
/*
*
* The DbUnit Database Testing Framework
* Copyright (C)2002-2004, DbUnit.org
*
* This library 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 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package org.dbunit.dataset.common.handlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author fede
* @author Last changed by: $Author$
* @version $Revision$ $Date$
* @since 2.2 (Sep 12, 2004)
*/
public class Pipeline implements Handler {
/**
* Logger for this class
*/
private static final Logger logger = LoggerFactory.getLogger(Pipeline.class);
private LinkedList components;
private List products;
private StringBuffer currentProduct;
private PipelineComponent noHandler;
public Pipeline() {
setComponents(new LinkedList());
setProducts(new ArrayList());
// add a no handler as the last handler
setNoHandler(NoHandler.IGNORE());
getNoHandler().setSuccessor(null);
getComponents().addFirst(getNoHandler());
// add a transparent handler as placeholder
//getComponents().addFirst(TransparentHandler.IGNORE);
//prepareNewPiece();
setCurrentProduct(new StringBuffer());
putFront(TransparentHandler.IGNORE());
}
public StringBuffer getCurrentProduct() {
logger.debug("getCurrentProduct() - start");
return currentProduct;
}
public void setCurrentProduct(StringBuffer currentProduct) {
logger.debug("setCurrentProduct(currentProduct={}) - start", currentProduct);
this.currentProduct = currentProduct;
}
private void prepareNewPiece() {
logger.debug("prepareNewPiece() - start");
setCurrentProduct(new StringBuffer());
// remove all the components down to a TrasparentHandler
try {
while (!(getComponents().getFirst() instanceof TransparentHandler)) {
removeFront();
}
} catch (PipelineException e) {
throw new RuntimeException(e.getMessage());
}
}
public void thePieceIsDone() {
logger.debug("thePieceIsDone() - start");
getProducts().add(getCurrentProduct().toString());
prepareNewPiece();
}
public List getProducts() {
logger.debug("getProducts() - start");
return products;
}
protected void setProducts(List products) {
logger.debug("setProducts(products={}) - start", products);
this.products = products;
}
private LinkedList getComponents() {
logger.debug("getComponents() - start");
return components;
}
private void setComponents(LinkedList components) {
logger.debug("setComponents(components={}) - start", components);
this.components = components;
}
public void putFront(PipelineComponent component) {
logger.debug("putFront(component={}) - start", component);
component.setSuccessor((PipelineComponent) getComponents().getFirst());
component.setPipeline(this);
getComponents().addFirst(component);
}
public PipelineComponent removeFront() throws PipelineException {
logger.debug("removeFront() - start");
PipelineComponent first = (PipelineComponent) getComponents().getFirst();
remove(first);
return first;
}
public void remove(PipelineComponent component) throws PipelineException {
logger.debug("remove(component={}) - start", component);
if (component == getNoHandler()) {
throw new PipelineException("Cannot remove the last handler");
}
if (!getComponents().remove(component)) {
throw new PipelineException("Cannot remove a non existent component from a pipeline");
}
}
public boolean canHandle(char c) throws IllegalInputCharacterException {
if(logger.isDebugEnabled())
logger.debug("canHandle(c={}) - start", String.valueOf(c));
return true;
}
public void handle(char c) throws IllegalInputCharacterException, PipelineException {
if(logger.isDebugEnabled())
logger.debug("handle(c={}) - start", String.valueOf(c));
((Handler) getComponents().getFirst()).handle(c);
}
public boolean allowForNoMoreInput() {
logger.debug("allowForNoMoreInput() - start");
throw new IllegalStateException("you cannot call Pipeline.allowForNoMoreInput");
}
private PipelineComponent getNoHandler() {
logger.debug("getNoHandler() - start");
return noHandler;
}
private void setNoHandler(PipelineComponent noHandler) {
logger.debug("setNoHandler(noHandler={}) - start", noHandler);
this.noHandler = noHandler;
}
public void resetProducts() {
logger.debug("resetProducts() - start");
setProducts(new ArrayList());
}
public void noMoreInput() {
logger.debug("noMoreInput() - start");
((Handler) getComponents().getFirst()).noMoreInput();
//thePieceIsDone();
}
private PipelineConfig pipelineConfig = new PipelineConfig();
public PipelineConfig getPipelineConfig() {
return pipelineConfig;
}
public void setPipelineConfig(PipelineConfig pipelineConfig) {
this.pipelineConfig = pipelineConfig;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy