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 }

http://dive4elements.wald.intevation.org