diff artifacts/src/main/java/org/dive4elements/river/artifacts/services/DynamicMainValuesService.java @ 9404:bc9a45d2b1fa

common time range for gauges incl. error messages
author gernotbelger
date Wed, 15 Aug 2018 13:59:09 +0200
parents 6ebc9357550c
children 4cccbd32b680
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/services/DynamicMainValuesService.java	Wed Aug 15 13:22:00 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/services/DynamicMainValuesService.java	Wed Aug 15 13:59:09 2018 +0200
@@ -16,11 +16,7 @@
 import java.util.Date;
 import java.util.List;
 
-import org.dive4elements.artifacts.CallMeta;
-import org.dive4elements.artifacts.GlobalContext;
-import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
 import org.dive4elements.artifacts.common.utils.DateUtils;
-import org.dive4elements.artifacts.common.utils.XMLUtils;
 import org.dive4elements.river.backend.SessionHolder;
 import org.dive4elements.river.model.Gauge;
 import org.dive4elements.river.model.MainValue;
@@ -34,7 +30,6 @@
 import org.dive4elements.river.model.sinfo.DailyDischargeValue.OrderByField;
 import org.dive4elements.river.utils.DoubleUtil;
 import org.hibernate.Session;
-import org.w3c.dom.Document;
 
 import gnu.trove.TDoubleArrayList;
 
@@ -44,80 +39,14 @@
  *
  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
  */
-public class DynamicMainValuesService extends AbstractMainValuesService {
+public class DynamicMainValuesService extends AbstractDynamicMainValuesService {
 
     private static final long serialVersionUID = 1L;
 
-    private static final String XPATH_START_YEAR = "/art:mainvalues/art:startYear/text()";
-
-    private static final String XPATH_END_YEAR = "/art:mainvalues/art:endYear/text()";
-
-    @Override
-    public Document doProcess(final Document data, final GlobalContext context, final CallMeta callMeta) {
-        try {
-
-            final River river = getRequestedRiver(data);
-            final Gauge gauge = getRequestedGauge(data, river);
-            final Date startTime = getRequestedStartYear(data);
-            final Date endTime = getRequestedEndYear(data);
-
-            final List<MainValue> mainValues = getMainValues(river, gauge, startTime, endTime);
-
-            return buildDocument(river, gauge, mainValues, context);
-        }
-        catch (final MainValuesServiceException e) {
-            // e.printStackTrace();
-            return error(e.getMessage());
-        }
-        catch (final Exception e) {
-            e.printStackTrace();
-            return error(e.getMessage());
-        }
-    }
-
-    private Date getRequestedStartYear(final Document data) throws MainValuesServiceException {
-
-        final String startStr = XMLUtils.xpathString(data, XPATH_START_YEAR, ArtifactNamespaceContext.INSTANCE);
-
-        if (startStr == null)
-            throw new MainValuesServiceException("no start year");
-
-        try {
-            final int year = Integer.parseInt(startStr);
-            final Calendar cal = Calendar.getInstance();
-            cal.clear();
-            cal.set(year, 0, 1);
-            return cal.getTime();
-        }
-        catch (final NumberFormatException e) {
-            e.printStackTrace();
-            throw new MainValuesServiceException("invalid start year");
-        }
-    }
-
-    private Date getRequestedEndYear(final Document data) throws MainValuesServiceException {
-
-        final String endStr = XMLUtils.xpathString(data, XPATH_END_YEAR, ArtifactNamespaceContext.INSTANCE);
-
-        if (endStr == null)
-            throw new MainValuesServiceException("no end year");
-
-        try {
-            final int year = Integer.parseInt(endStr);
-            final Calendar cal = Calendar.getInstance();
-            cal.clear();
-            cal.set(year, 11, 31);
-            return cal.getTime();
-        }
-        catch (final NumberFormatException e) {
-            e.printStackTrace();
-            throw new MainValuesServiceException("invalid end year");
-        }
-    }
-
     /**
      * Computes a gauge's main values for a period of time based on its daily discharges stored in the database
      */
+    @Override
     protected List<MainValue> getMainValues(final River river, final Gauge gauge, final Date startTime, final Date endTime) throws MainValuesServiceException {
 
         final List<MainValue> mainValues = new ArrayList<>();
@@ -135,7 +64,7 @@
         final List<DailyDischargeValue> qdvs = DailyDischargeValue.getValues(gauge, startTime, endTime, OrderByField.DAY);
         if (qdvs.isEmpty())
             throw new MainValuesServiceException("no daily discharge values for gauge " + gauge.getName() + " in the requested time period");
-        // return; // TODO Fehlermeldung
+        // return;
 
         // Build yearly aggregates
         final TDoubleArrayList mnqs = new TDoubleArrayList();
@@ -152,8 +81,7 @@
                 mqcnt++;
                 if (i == qdvs.size() - 1)
                     mqs.set(j, mqs.get(j) / mqcnt);
-            }
-            else {
+            } else {
                 // Complete mq aggregation
                 if (mqcnt >= 1) {
                     mqs.set(j, mqs.get(j) / mqcnt);

http://dive4elements.wald.intevation.org