// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.testutil.v0_6;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.openstreetmap.osmosis.core.container.v0_6.EntityContainer;
import org.openstreetmap.osmosis.core.task.v0_6.Sink;
/**
* Mock object for inspecting the resulting entities after passing through a pipeline task.
*
* @author Karl Newman
*/
public class SinkEntityInspector implements Sink {
private List<EntityContainer> processedEntities;
/**
* Creates a new instance.
*/
public SinkEntityInspector() {
processedEntities = new LinkedList<EntityContainer>();
}
/**
* {@inheritDoc}
*/
public void initialize(Map<String, Object> metaData) {
// Nothing to do here
}
/**
* {@inheritDoc}
*/
@Override
public void complete() {
// Nothing to do here
}
/**
* Catch all passed entities and save them for later inspection.
*
* @param entityContainer
* The entity to be processed.
*/
@Override
public void process(EntityContainer entityContainer) {
processedEntities.add(entityContainer);
}
/**
* {@inheritDoc}
*/
@Override
public void close() {
// Nothing to do here
}
/**
* Shortcut method if you only care about the most recent EntityContainer.
*
* @return the lastEntityContainer
*/
public EntityContainer getLastEntityContainer() {
if (processedEntities.isEmpty()) {
return null;
} else {
return processedEntities.get(processedEntities.size() - 1);
}
}
/**
* Retrieve an Iterable of all the processed EntityContainers.
*
* @return the processedEntities
*/
public Iterable<EntityContainer> getProcessedEntities() {
return Collections.unmodifiableList(processedEntities);
}
}