package com.tinkerpop.pipes.util.structures;
import com.tinkerpop.pipes.util.AsPipe;
import com.tinkerpop.pipes.util.FluentUtility;
import com.tinkerpop.pipes.util.MetaPipe;
import java.util.HashMap;
import java.util.Map;
/**
* The current object at a named step in a PipesFluentPipeline can be accessed via AsMap.
* AsMap maintains an internal HashMap that maps a String name to an AsPipe.
* The AsPipe.getCurrentEnd() allows access to the last object to be emitted from the AsPipe.
* This is used in conjunction with PipesFunction to allow PipeFunctions to access objects.
*
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public class AsMap {
private final MetaPipe metaPipe;
private final Map<String, AsPipe> map = new HashMap<String, AsPipe>();
public AsMap(final MetaPipe metaPipe) {
this.metaPipe = metaPipe;
}
public void refresh() {
for (final AsPipe asPipe : FluentUtility.getAsPipes(this.metaPipe)) {
this.map.put(asPipe.getName(), asPipe);
}
}
public Object get(final String name) {
final AsPipe asPipe = this.map.get(name);
if (null == asPipe)
throw new RuntimeException("Named step does not exist: " + name);
else
return asPipe.getCurrentEnd();
}
}