annotate artifacts/src/main/java/org/dive4elements/river/exports/GeneratorLookup.java @ 8254:c87c87544cc6

Made call context injectors a list of comma separated classes.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 10 Sep 2014 12:42:39 +0200
parents 9667900536b6
children 5e38e2924c07
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;
8254
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
12 import java.util.List;
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
13 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
14
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
15 import org.dive4elements.artifacts.ContextInjector;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
16
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
17 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
18
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
19 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
20 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
21 {
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
22 public static final class Item {
8254
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
23 private Class<OutGenerator> generator;
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
24 private Object ctx;
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
25 private List<ContextInjector> cis;
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
26
8254
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
27 public Item(Class<OutGenerator> generator, Object ctx, List<ContextInjector> cis) {
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
28 this.generator = generator;
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
29 this.ctx = ctx;
8254
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
30 this.cis = cis;
8219
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
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
33 public Class<OutGenerator> getGenerator() {
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
34 return generator;
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
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
37 public Object getContext() {
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
38 return ctx;
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
8254
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
41 public List<ContextInjector> getContextInjectors() {
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
42 return cis;
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
43 }
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
44 } // class Item
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
45
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
46 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
47
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
48 public GeneratorLookup() {
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
49 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
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
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 public void putGenerator(
8254
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
53 String outName,
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
54 Class<OutGenerator> generatorClass,
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
55 Object ctx,
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
56 List<ContextInjector> cis
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
57 ) {
8254
c87c87544cc6 Made call context injectors a list of comma separated classes.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8219
diff changeset
58 Item item = new Item(generatorClass, ctx, cis);
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
59 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
60 }
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
61
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
62 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
63 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
64 }
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
65
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 @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
67 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
68
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
69 Item item = generators.get(outName);
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
70 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
71 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
72 }
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
73
8219
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
74 Object ctx = item.getContext();
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
75 return ctx instanceof FacetFilter
9667900536b6 Added context injector to generators.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7228
diff changeset
76 ? ((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
77 : 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
78 }
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
79 }
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
80 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org