teichmann@7226: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@7226: * Software engineering by Intevation GmbH teichmann@7226: * teichmann@7226: * This file is Free Software under the GNU AGPL (>=v3) teichmann@7226: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@7226: * documentation coming with Dive4Elements River for details. teichmann@7226: */ teichmann@7226: teichmann@7226: package org.dive4elements.river.exports; teichmann@7226: teichmann@7226: import java.util.HashMap; teichmann@8254: import java.util.List; teichmann@7226: import java.util.Map; teichmann@7226: teichmann@8219: import org.dive4elements.artifacts.ContextInjector; teichmann@8219: teichmann@7227: import org.dive4elements.river.artifacts.D4EArtifact.FacetFilter; teichmann@7226: teichmann@7226: public class GeneratorLookup teichmann@7227: implements FacetFilter teichmann@7226: { teichmann@8219: public static final class Item { teichmann@8254: private Class generator; teichmann@8254: private Object ctx; teichmann@8254: private List cis; teichmann@8219: tom@8856: public Item( tom@8856: Class generator, tom@8856: Object ctx, tom@8856: List cis tom@8856: ) { teichmann@8219: this.generator = generator; teichmann@8219: this.ctx = ctx; teichmann@8254: this.cis = cis; teichmann@8219: } teichmann@8219: teichmann@8219: public Class getGenerator() { teichmann@8219: return generator; teichmann@8219: } teichmann@8219: teichmann@8219: public Object getContext() { teichmann@8219: return ctx; teichmann@8219: } teichmann@8219: teichmann@8254: public List getContextInjectors() { teichmann@8254: return cis; teichmann@8219: } teichmann@8219: } // class Item teichmann@8219: teichmann@8219: private Map generators; teichmann@7226: teichmann@7226: public GeneratorLookup() { teichmann@8219: generators = new HashMap(); teichmann@7226: } teichmann@7226: teichmann@7226: public void putGenerator( teichmann@8254: String outName, teichmann@8254: Class generatorClass, teichmann@8254: Object ctx, teichmann@8254: List cis teichmann@7226: ) { teichmann@8254: Item item = new Item(generatorClass, ctx, cis); teichmann@8219: generators.put(outName, item); teichmann@7226: } teichmann@7226: teichmann@8219: public Item getGenerator(String outName) { teichmann@7226: return generators.get(outName); teichmann@7226: } teichmann@7227: teichmann@7227: @Override teichmann@7227: public boolean accept(String outName, String facetName) { teichmann@7227: teichmann@8219: Item item = generators.get(outName); teichmann@8219: if (item == null) { teichmann@7227: return true; teichmann@7227: } teichmann@7227: teichmann@8219: Object ctx = item.getContext(); teichmann@8219: return ctx instanceof FacetFilter teichmann@8219: ? ((FacetFilter)ctx).accept(outName, facetName) teichmann@7228: : true; teichmann@7227: } teichmann@7226: } teichmann@7226: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :