comparison 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
comparison
equal deleted inserted replaced
8218:ed8c1a0b4cfb 8219:9667900536b6
9 package org.dive4elements.river.exports; 9 package org.dive4elements.river.exports;
10 10
11 import java.util.HashMap; 11 import java.util.HashMap;
12 import java.util.Map; 12 import java.util.Map;
13 13
14 import org.dive4elements.river.utils.Pair; 14 import org.dive4elements.artifacts.ContextInjector;
15
15 import org.dive4elements.river.artifacts.D4EArtifact.FacetFilter; 16 import org.dive4elements.river.artifacts.D4EArtifact.FacetFilter;
16 17
17 public class GeneratorLookup 18 public class GeneratorLookup
18 implements FacetFilter 19 implements FacetFilter
19 { 20 {
20 private Map<String, Pair<Class<OutGenerator>, Object>> generators; 21 public static final class Item {
22 private Class<OutGenerator> generator;
23 private Object ctx;
24 private ContextInjector ci;
25
26 public Item(Class<OutGenerator> generator, Object ctx, ContextInjector ci) {
27 this.generator = generator;
28 this.ctx = ctx;
29 this.ci = ci;
30 }
31
32 public Class<OutGenerator> getGenerator() {
33 return generator;
34 }
35
36 public Object getContext() {
37 return ctx;
38 }
39
40 public ContextInjector getContextInjector() {
41 return ci;
42 }
43 } // class Item
44
45 private Map<String, Item> generators;
21 46
22 public GeneratorLookup() { 47 public GeneratorLookup() {
23 generators = new HashMap<String, Pair<Class<OutGenerator>, Object>>(); 48 generators = new HashMap<String, Item>();
24 } 49 }
25 50
26 public void putGenerator( 51 public void putGenerator(
27 String outName, 52 String outName,
28 Class<OutGenerator> generatorClass, 53 Class<OutGenerator> generatorClass,
29 Object ctx 54 Object ctx,
55 ContextInjector ci
30 ) { 56 ) {
31 Pair<Class<OutGenerator>, Object> pair = 57 Item item = new Item(generatorClass, ctx, ci);
32 new Pair<Class<OutGenerator>, Object>(generatorClass, ctx); 58 generators.put(outName, item);
33 generators.put(outName, pair);
34 } 59 }
35 60
36 public Pair<Class<OutGenerator>, Object> getGenerator(String outName) { 61 public Item getGenerator(String outName) {
37 return generators.get(outName); 62 return generators.get(outName);
38 } 63 }
39 64
40 @Override 65 @Override
41 public boolean accept(String outName, String facetName) { 66 public boolean accept(String outName, String facetName) {
42 67
43 Pair<Class<OutGenerator>, Object> pair = generators.get(outName); 68 Item item = generators.get(outName);
44 if (pair == null) { 69 if (item == null) {
45 return true; 70 return true;
46 } 71 }
47 72
48 Object ff = pair.getB(); 73 Object ctx = item.getContext();
49 return ff instanceof FacetFilter 74 return ctx instanceof FacetFilter
50 ? ((FacetFilter)ff).accept(outName, facetName) 75 ? ((FacetFilter)ctx).accept(outName, facetName)
51 : true; 76 : true;
52 } 77 }
53 } 78 }
54 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 79 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org