annotate 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
rev   line source
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
3 *
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
7 */
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
8
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.exports;
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
10
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
11 import java.util.HashMap;
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
12 import java.util.Map;
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
13
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
14 import org.dive4elements.artifacts.ContextInjector;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
15
7227
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
16 import org.dive4elements.river.artifacts.D4EArtifact.FacetFilter;
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
17
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
18 public class GeneratorLookup
7227
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
19 implements FacetFilter
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
20 {
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
21 public static final class Item {
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
22 private Class<OutGenerator> generator;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
23 private Object ctx;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
24 private ContextInjector ci;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
25
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
26 public Item(Class<OutGenerator> generator, Object ctx, ContextInjector ci) {
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
27 this.generator = generator;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
28 this.ctx = ctx;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
29 this.ci = ci;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
30 }
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
31
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
32 public Class<OutGenerator> getGenerator() {
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
33 return generator;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
34 }
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
35
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
36 public Object getContext() {
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
37 return ctx;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
38 }
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
39
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
40 public ContextInjector getContextInjector() {
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
41 return ci;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
42 }
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
43 } // class Item
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
44
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
45 private Map<String, Item> generators;
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
46
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
47 public GeneratorLookup() {
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
48 generators = new HashMap<String, Item>();
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
49 }
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
50
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
51 public void putGenerator(
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
52 String outName,
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
53 Class<OutGenerator> generatorClass,
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
54 Object ctx,
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
55 ContextInjector ci
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
56 ) {
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
57 Item item = new Item(generatorClass, ctx, ci);
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
58 generators.put(outName, item);
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
59 }
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
60
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
61 public Item getGenerator(String outName) {
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
62 return generators.get(outName);
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
63 }
7227
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
64
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
65 @Override
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
66 public boolean accept(String outName, String facetName) {
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
67
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
68 Item item = generators.get(outName);
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
69 if (item == null) {
7227
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
70 return true;
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
71 }
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
72
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
73 Object ctx = item.getContext();
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
74 return ctx instanceof FacetFilter
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
75 ? ((FacetFilter)ctx).accept(outName, facetName)
7228
3f141505077b Global facet filtering with bound to out: The DiagramAttributes implements the FacetFilter and not the Generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7227
diff changeset
76 : true;
7227
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
77 }
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
78 }
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
79 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org