comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/RiverAxisArtifact.java @ 1075:feaf778d510e

Changed the way of collecting the data for the RiverAxisArtifact - use the database instead of a Master-Artifact. flys-artifacts/trunk@2568 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 24 Aug 2011 14:35:38 +0000
parents ae198bef4ba0
children b2730e31ff5b
comparison
equal deleted inserted replaced
1074:21b9eb24bd47 1075:feaf778d510e
1 package de.intevation.flys.artifacts; 1 package de.intevation.flys.artifacts;
2 2
3 import java.util.ArrayList; 3 import java.util.ArrayList;
4 import java.util.List; 4 import java.util.List;
5 5
6 import org.w3c.dom.Document;
7
6 import org.apache.log4j.Logger; 8 import org.apache.log4j.Logger;
7 9
8 import de.intevation.artifacts.Artifact; 10 import de.intevation.artifacts.Artifact;
11 import de.intevation.artifacts.ArtifactFactory;
9 import de.intevation.artifacts.CallMeta; 12 import de.intevation.artifacts.CallMeta;
10 13
14 import de.intevation.artifacts.common.ArtifactNamespaceContext;
15 import de.intevation.artifacts.common.utils.XMLUtils;
16
17 import de.intevation.artifactdatabase.data.DefaultStateData;
11 import de.intevation.artifactdatabase.state.Facet; 18 import de.intevation.artifactdatabase.state.Facet;
12 19
20 import de.intevation.flys.model.River;
21
22 import de.intevation.flys.artifacts.model.RiverFactory;
13 import de.intevation.flys.artifacts.states.DefaultState; 23 import de.intevation.flys.artifacts.states.DefaultState;
14 24
15 25
16 public class RiverAxisArtifact extends StaticFLYSArtifact { 26 public class RiverAxisArtifact extends StaticFLYSArtifact {
17 27
18 public static final String NAME = "riveraxis"; 28 public static final String NAME = "riveraxis";
29
30 public static final String XPATH_IDS = "/art:action/art:ids/@value";
19 31
20 32
21 private static final Logger logger = 33 private static final Logger logger =
22 Logger.getLogger(RiverAxisArtifact.class); 34 Logger.getLogger(RiverAxisArtifact.class);
23 35
27 return NAME; 39 return NAME;
28 } 40 }
29 41
30 42
31 @Override 43 @Override
32 protected void initialize(Artifact artifact, Object context, CallMeta meta) { 44 public void setup(
33 logger.debug("Initialize internal state with: "+ artifact.identifier()); 45 String identifier,
46 ArtifactFactory factory,
47 Object context,
48 CallMeta callMeta,
49 Document data)
50 {
51 logger.debug("RiverAxisArtifact.setup");
34 52
35 FLYSArtifact flys = (FLYSArtifact) artifact; 53 super.setup(identifier, factory, context, callMeta, data);
36 addData("river", flys.getData("river"));
37 54
38 List<Facet> fs = new ArrayList<Facet>(); 55 String ids = XMLUtils.xpathString(
56 data, XPATH_IDS, ArtifactNamespaceContext.INSTANCE);
39 57
40 // TODO Add CallMeta 58 String[] splitted = ids != null ? ids.split(" ") : null;
41 DefaultState state = (DefaultState) getCurrentState(context);
42 state.computeInit(this, hash(), context, meta, fs);
43 59
44 if (!fs.isEmpty()) { 60 if (splitted != null && splitted.length > 0) {
45 facets.put(getCurrentStateId(), fs); 61 try {
62 int river_id = Integer.parseInt(splitted[0]);
63 River river = RiverFactory.getRiver(river_id);
64
65 if (river == null) {
66 throw new IllegalArgumentException(
67 "No river found for id: " + river_id);
68 }
69
70 String name = river.getName();
71
72 addData("river", new DefaultStateData("river",null,null,name));
73
74 List<Facet> fs = new ArrayList<Facet>();
75
76 DefaultState state = (DefaultState) getCurrentState(context);
77 state.computeInit(this, hash(), context, callMeta, fs);
78
79 if (!fs.isEmpty()) {
80 facets.put(getCurrentStateId(), fs);
81 }
82 }
83 catch (NumberFormatException nfe) {
84 logger.error("Could not create Artifact: " + nfe.getMessage());
85 throw new IllegalArgumentException("No river id given.");
86 }
46 } 87 }
88 }
89
90
91 @Override
92 protected void initialize(
93 Artifact artifact,
94 Object context,
95 CallMeta callMeta)
96 {
97 // do nothing
47 } 98 }
48 } 99 }
49 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 100 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org