diff artifacts/src/main/java/org/dive4elements/river/exports/GeneratorLookup.java @ 8219:9667900536b6

Added context injector to generators.
author Sascha L. Teichmann <teichmann@intevation.de>
date Mon, 08 Sep 2014 13:17:49 +0200
parents 3f141505077b
children c87c87544cc6
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/GeneratorLookup.java	Mon Sep 08 12:28:16 2014 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/GeneratorLookup.java	Mon Sep 08 13:17:49 2014 +0200
@@ -11,43 +11,68 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.dive4elements.river.utils.Pair;
+import org.dive4elements.artifacts.ContextInjector;
+
 import org.dive4elements.river.artifacts.D4EArtifact.FacetFilter;
 
 public class GeneratorLookup
 implements   FacetFilter
 {
-    private Map<String, Pair<Class<OutGenerator>, Object>> generators;
+    public static final class Item {
+        private Class<OutGenerator> generator;
+        private Object              ctx;
+        private ContextInjector     ci;
+
+        public Item(Class<OutGenerator> generator, Object ctx, ContextInjector ci) {
+            this.generator = generator;
+            this.ctx       = ctx;
+            this.ci        = ci;
+        }
+
+        public Class<OutGenerator> getGenerator() {
+            return generator;
+        }
+
+        public Object getContext() {
+            return ctx;
+        }
+
+        public ContextInjector getContextInjector() {
+            return ci;
+        }
+    } // class Item
+
+    private Map<String, Item> generators;
 
     public GeneratorLookup() {
-        generators = new HashMap<String, Pair<Class<OutGenerator>, Object>>();
+        generators = new HashMap<String, Item>();
     }
 
     public void putGenerator(
         String              outName,
         Class<OutGenerator> generatorClass,
-        Object              ctx
+        Object              ctx,
+        ContextInjector     ci
     ) {
-        Pair<Class<OutGenerator>, Object> pair =
-            new Pair<Class<OutGenerator>, Object>(generatorClass, ctx);
-        generators.put(outName, pair);
+        Item item = new Item(generatorClass, ctx, ci);
+        generators.put(outName, item);
     }
 
-    public Pair<Class<OutGenerator>, Object> getGenerator(String outName) {
+    public Item 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) {
+        Item item = generators.get(outName);
+        if (item == null) {
             return true;
         }
 
-        Object ff = pair.getB();
-        return ff instanceof FacetFilter
-            ? ((FacetFilter)ff).accept(outName, facetName)
+        Object ctx = item.getContext();
+        return ctx instanceof FacetFilter
+            ? ((FacetFilter)ctx).accept(outName, facetName)
             : true;
     }
 }

http://dive4elements.wald.intevation.org