view artifacts/src/main/java/org/dive4elements/river/exports/GeneratorLookup.java @ 7228:3f141505077b

Global facet filtering with bound to out: The DiagramAttributes implements the FacetFilter and not the Generators.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 02 Oct 2013 23:11:59 +0200
parents 744df5a03337
children 9667900536b6
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.exports;

import java.util.HashMap;
import java.util.Map;

import org.dive4elements.river.utils.Pair;
import org.dive4elements.river.artifacts.D4EArtifact.FacetFilter;

public class GeneratorLookup
implements   FacetFilter
{
    private Map<String, Pair<Class<OutGenerator>, Object>> generators;

    public GeneratorLookup() {
        generators = new HashMap<String, Pair<Class<OutGenerator>, Object>>();
    }

    public void putGenerator(
        String              outName,
        Class<OutGenerator> generatorClass,
        Object              ctx
    ) {
        Pair<Class<OutGenerator>, Object> pair =
            new Pair<Class<OutGenerator>, Object>(generatorClass, ctx);
        generators.put(outName, pair);
    }

    public Pair<Class<OutGenerator>, Object> getGenerator(String outName) {
        return generators.get(outName);
    }

    @Override
    public boolean accept(String outName, String facetName) {

        Pair<Class<OutGenerator>, Object> pair = generators.get(outName);
        if (pair == null) {
            return true;
        }

        Object ff = pair.getB();
        return ff instanceof FacetFilter
            ? ((FacetFilter)ff).accept(outName, facetName)
            : true;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org