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