Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/services/SedimentLoadInfoService.java @ 8124:2c21fd1ade39
(issue 1448) Use new data model for sedimentloadinfo
This probably returns a bit too much of data. So we might need
to reduce this later on.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 25 Aug 2014 12:18:35 +0200 |
parents | 963ede7b32bb |
children | e4606eae8ea5 |
comparison
equal
deleted
inserted
replaced
8123:4a2ef6895557 | 8124:2c21fd1ade39 |
---|---|
7 */ | 7 */ |
8 | 8 |
9 package org.dive4elements.river.artifacts.services; | 9 package org.dive4elements.river.artifacts.services; |
10 | 10 |
11 import java.util.Calendar; | 11 import java.util.Calendar; |
12 import java.util.Collection; | |
12 | 13 |
13 import org.apache.log4j.Logger; | 14 import org.apache.log4j.Logger; |
14 import org.w3c.dom.Document; | 15 import org.w3c.dom.Document; |
15 import org.w3c.dom.Element; | 16 import org.w3c.dom.Element; |
16 | 17 |
17 import org.dive4elements.artifacts.ArtifactNamespaceContext; | 18 import org.dive4elements.artifacts.ArtifactNamespaceContext; |
18 import org.dive4elements.artifacts.CallMeta; | 19 import org.dive4elements.artifacts.CallMeta; |
19 import org.dive4elements.artifacts.GlobalContext; | 20 import org.dive4elements.artifacts.GlobalContext; |
20 import org.dive4elements.artifacts.common.utils.XMLUtils; | 21 import org.dive4elements.artifacts.common.utils.XMLUtils; |
21 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadLSData; | 22 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataFactory; |
22 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFactory; | 23 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData; |
23 | 24 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Load; |
24 | 25 |
25 /** Service delivering info about sediment loads. */ | 26 /** Service delivering info about sediment loads. */ |
26 public class SedimentLoadInfoService | 27 public class SedimentLoadInfoService |
27 extends D4EService | 28 extends D4EService |
28 { | 29 { |
67 catch (NumberFormatException nfe) { | 68 catch (NumberFormatException nfe) { |
68 logger.warn("Invalid locations. Cannot return sediment loads."); | 69 logger.warn("Invalid locations. Cannot return sediment loads."); |
69 return XMLUtils.newDocument(); | 70 return XMLUtils.newDocument(); |
70 } | 71 } |
71 | 72 |
72 SedimentLoadLSData[] loads = | 73 /* This call initializes the sedimentloaddata for the river. Might be |
73 SedimentLoadFactory.getLoads(river, type, fromD, toD); | 74 * expensive but has to be done anyway for the calculation later on. */ |
75 SedimentLoadData allLoadData = SedimentLoadDataFactory.INSTANCE.getSedimentLoadData( | |
76 river); | |
77 | |
78 Collection <Load> loads = allLoadData.findLoads(fromD, toD); | |
79 | |
74 return buildDocument(loads); | 80 return buildDocument(loads); |
75 } | 81 } |
76 | 82 |
77 protected Document buildDocument(SedimentLoadLSData[] loads) { | 83 protected Document buildDocument(Collection<Load> loads) { |
78 Document result = XMLUtils.newDocument(); | 84 Document result = XMLUtils.newDocument(); |
79 Element all = result.createElement("sedimentloads"); | 85 Element all = result.createElement("sedimentloads"); |
80 for (SedimentLoadLSData sl : loads) { | 86 for (Load load : loads) { |
81 Element load = result.createElement("sedimentload"); | 87 Element ele = result.createElement("sedimentload"); |
82 load.setAttribute("description", sl.getDescription()); | 88 ele.setAttribute("description", load.getDescription()); |
83 if (sl.isEpoch()) { | 89 if (load.isEpoch()) { |
84 Calendar calendarS = Calendar.getInstance(); | 90 Calendar calendarS = Calendar.getInstance(); |
85 calendarS.setTime(sl.getStart()); | 91 calendarS.setTime(load.getStartTime()); |
86 Calendar calendarE = Calendar.getInstance(); | 92 Calendar calendarE = Calendar.getInstance(); |
87 calendarE.setTime(sl.getEnd()); | 93 calendarE.setTime(load.getStopTime()); |
88 load.setAttribute( | 94 ele.setAttribute( |
89 "date", | 95 "date", |
90 calendarS.get(Calendar.YEAR) + | 96 calendarS.get(Calendar.YEAR) + |
91 " - " + | 97 " - " + |
92 calendarE.get(Calendar.YEAR)); | 98 calendarE.get(Calendar.YEAR)); |
93 } | 99 } |
94 else { | 100 else { |
95 Calendar calendar = Calendar.getInstance(); | 101 Calendar calendar = Calendar.getInstance(); |
96 calendar.setTime(sl.getStart()); | 102 calendar.setTime(load.getStartTime()); |
97 load.setAttribute( | 103 ele.setAttribute( |
98 "date", | 104 "date", |
99 String.valueOf(calendar.get(Calendar.YEAR))); | 105 String.valueOf(calendar.get(Calendar.YEAR))); |
100 } | 106 } |
101 all.appendChild(load); | 107 all.appendChild(ele); |
102 } | 108 } |
103 result.appendChild(all); | 109 result.appendChild(all); |
104 return result; | 110 return result; |
105 } | 111 } |
106 } | 112 } |