view artifacts/src/main/java/org/dive4elements/river/exports/GeneratorLookup.java @ 7227:744df5a03337

Use diagram configuration and there processors to define compatible facets in loaded data.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 02 Oct 2013 19:24:43 +0200
parents 8ab618dda850
children 3f141505077b
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.apache.log4j.Logger;
import org.dive4elements.river.utils.Pair;
import org.dive4elements.river.artifacts.D4EArtifact.FacetFilter;

public class GeneratorLookup
implements   FacetFilter
{
    private static Logger log = Logger.getLogger(GeneratorLookup.class);

    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;
        }

        try {
            Class<OutGenerator> clazz = pair.getA();
            OutGenerator generator = clazz.newInstance();

            return generator instanceof FacetFilter
                ? ((FacetFilter)generator).accept(outName, facetName)
                : true;
        }
        catch (InstantiationException ie) {
            log.error(ie, ie);
        }
        catch (IllegalAccessException iae) {
            log.error(iae, iae);
        }
        return true;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org