# HG changeset patch # User Andre Heinecke # Date 1408961915 -7200 # Node ID 2c21fd1ade39f75992f11b45d7474638039ff526 # Parent 4a2ef6895557ec0eaf52c112cc574afc6c8fdbe8 (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. diff -r 4a2ef6895557 -r 2c21fd1ade39 artifacts/src/main/java/org/dive4elements/river/artifacts/services/SedimentLoadInfoService.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/services/SedimentLoadInfoService.java Mon Aug 25 12:05:37 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/services/SedimentLoadInfoService.java Mon Aug 25 12:18:35 2014 +0200 @@ -9,6 +9,7 @@ package org.dive4elements.river.artifacts.services; import java.util.Calendar; +import java.util.Collection; import org.apache.log4j.Logger; import org.w3c.dom.Document; @@ -18,9 +19,9 @@ import org.dive4elements.artifacts.CallMeta; import org.dive4elements.artifacts.GlobalContext; import org.dive4elements.artifacts.common.utils.XMLUtils; -import org.dive4elements.river.artifacts.model.minfo.SedimentLoadLSData; -import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFactory; - +import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataFactory; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Load; /** Service delivering info about sediment loads. */ public class SedimentLoadInfoService @@ -69,23 +70,28 @@ return XMLUtils.newDocument(); } - SedimentLoadLSData[] loads = - SedimentLoadFactory.getLoads(river, type, fromD, toD); + /* This call initializes the sedimentloaddata for the river. Might be + * expensive but has to be done anyway for the calculation later on. */ + SedimentLoadData allLoadData = SedimentLoadDataFactory.INSTANCE.getSedimentLoadData( + river); + + Collection loads = allLoadData.findLoads(fromD, toD); + return buildDocument(loads); } - protected Document buildDocument(SedimentLoadLSData[] loads) { + protected Document buildDocument(Collection loads) { Document result = XMLUtils.newDocument(); Element all = result.createElement("sedimentloads"); - for (SedimentLoadLSData sl : loads) { - Element load = result.createElement("sedimentload"); - load.setAttribute("description", sl.getDescription()); - if (sl.isEpoch()) { + for (Load load : loads) { + Element ele = result.createElement("sedimentload"); + ele.setAttribute("description", load.getDescription()); + if (load.isEpoch()) { Calendar calendarS = Calendar.getInstance(); - calendarS.setTime(sl.getStart()); + calendarS.setTime(load.getStartTime()); Calendar calendarE = Calendar.getInstance(); - calendarE.setTime(sl.getEnd()); - load.setAttribute( + calendarE.setTime(load.getStopTime()); + ele.setAttribute( "date", calendarS.get(Calendar.YEAR) + " - " + @@ -93,12 +99,12 @@ } else { Calendar calendar = Calendar.getInstance(); - calendar.setTime(sl.getStart()); - load.setAttribute( + calendar.setTime(load.getStartTime()); + ele.setAttribute( "date", String.valueOf(calendar.get(Calendar.YEAR))); } - all.appendChild(load); + all.appendChild(ele); } result.appendChild(all); return result;