Mercurial > dive4elements > river
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 : |