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@7226: import java.util.Map; teichmann@7226: teichmann@7227: import org.apache.log4j.Logger; teichmann@7226: import org.dive4elements.river.utils.Pair; teichmann@7227: import org.dive4elements.river.artifacts.D4EArtifact.FacetFilter; teichmann@7226: teichmann@7226: public class GeneratorLookup teichmann@7227: implements FacetFilter teichmann@7226: { teichmann@7227: private static Logger log = Logger.getLogger(GeneratorLookup.class); teichmann@7227: teichmann@7226: private Map, Object>> generators; teichmann@7226: teichmann@7226: public GeneratorLookup() { teichmann@7226: generators = new HashMap, Object>>(); teichmann@7226: } teichmann@7226: teichmann@7226: public void putGenerator( teichmann@7226: String outName, teichmann@7226: Class generatorClass, teichmann@7226: Object ctx teichmann@7226: ) { teichmann@7226: Pair, Object> pair = teichmann@7226: new Pair, Object>(generatorClass, ctx); teichmann@7226: generators.put(outName, pair); teichmann@7226: } teichmann@7226: teichmann@7226: public Pair, Object> 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@7227: Pair, Object> pair = generators.get(outName); teichmann@7227: if (pair == null) { teichmann@7227: return true; teichmann@7227: } teichmann@7227: teichmann@7227: try { teichmann@7227: Class clazz = pair.getA(); teichmann@7227: OutGenerator generator = clazz.newInstance(); teichmann@7227: teichmann@7227: return generator instanceof FacetFilter teichmann@7227: ? ((FacetFilter)generator).accept(outName, facetName) teichmann@7227: : true; teichmann@7227: } teichmann@7227: catch (InstantiationException ie) { teichmann@7227: log.error(ie, ie); teichmann@7227: } teichmann@7227: catch (IllegalAccessException iae) { teichmann@7227: log.error(iae, iae); teichmann@7227: } teichmann@7227: return true; teichmann@7227: } teichmann@7226: } teichmann@7226: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :