comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/BlackboardDataFacet.java @ 3818:dc18457b1cef

merged flys-artifacts/pre2.7-2012-03-16
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:59 +0200
parents f008c3335a77
children ccc955ef8811
comparison
equal deleted inserted replaced
2456:60ab1054069d 3818:dc18457b1cef
1 package de.intevation.flys.artifacts.model;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import de.intevation.artifacts.Artifact;
7 import de.intevation.artifacts.CallContext;
8
9 import de.intevation.artifactdatabase.state.Facet;
10 import de.intevation.artifactdatabase.state.DefaultFacet;
11
12
13 /**
14 * Facet that writes artifact-uui and facet index on the blackboard,
15 * delivers data if asked so.
16 */
17 public class BlackboardDataFacet extends DefaultFacet {
18
19 public BlackboardDataFacet() {}
20
21 /** Do not instantiate a BlackboardDataFacet, subclass it instead. */
22 public BlackboardDataFacet(int idx, String name, String description) {
23 super(idx, name, description);
24 }
25
26 /** Do not instantiate a BlackboardDataFacet, subclass it instead. */
27 public BlackboardDataFacet(String name, String description) {
28 super(0, name, description);
29 }
30
31 /** Define key to which to respond when asked for 'blackboard'
32 * (DataProvider)- data. */
33 public String areaDataKey(Artifact art) {
34 return art.identifier() + ":" + getName() + ":" + getIndex();
35 }
36
37
38 /** Hey, We can ArtifactUUID+:+FacetName+:+FacetIndex (i.e. getData)! */
39 @Override
40 public List getStaticDataProviderKeys(Artifact art) {
41 List list = new ArrayList();
42 list.add(areaDataKey(art));
43 return list;
44 }
45
46
47 /**
48 * Can provide whatever getData returns.
49 * @param key will respond on uuid+index
50 * @param param ignored
51 * @param context ignored
52 * @return whatever getData delivers.
53 */
54 @Override
55 public Object provideBlackboardData(Artifact artifact,
56 Object key,
57 Object param,
58 CallContext context
59 ) {
60 if (key.equals(areaDataKey(artifact))) {
61 return getData(artifact, context);
62 }
63 else {
64 return null;
65 }
66 }
67
68 /** Copy deeply. */
69 @Override
70 public Facet deepCopy() {
71 BlackboardDataFacet copy = new BlackboardDataFacet();
72 copy.set(this);
73 return copy;
74 }
75 }
76 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org