diff gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java @ 164:5570d9b3282f

Implemented a better GUI-Structure for displaying the Statisticdata. issue83 gnv/trunk@327 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Thu, 12 Nov 2009 10:22:30 +0000
parents 013d47662161
children 183850730a90
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java	Wed Nov 11 16:24:02 2009 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java	Thu Nov 12 10:22:30 2009 +0000
@@ -39,7 +39,9 @@
 import de.intevation.gnv.artifactdatabase.objects.ArtifactFactory;
 import de.intevation.gnv.artifactdatabase.objects.ArtifactObject;
 import de.intevation.gnv.artifactdatabase.objects.ArtifactStatisticValue;
+import de.intevation.gnv.artifactdatabase.objects.ArtifactStatisticsSet;
 import de.intevation.gnv.artifactdatabase.objects.DefaultArtifactStatisticValue;
+import de.intevation.gnv.artifactdatabase.objects.DefaultArtifactStatisticsSet;
 import de.intevation.gnv.artifactdatabase.objects.DefaultOutputMode;
 import de.intevation.gnv.artifactdatabase.objects.DefaultOutputParameter;
 import de.intevation.gnv.artifactdatabase.objects.InputParameter;
@@ -688,38 +690,48 @@
 
     }
 
-    public Collection<ArtifactStatisticValue> calculateStatistics(
+    public Collection<ArtifactStatisticsSet> calculateStatistics(
                                                                   ArtifactObject artifactFactory,
                                                                   ArtifactObject currentArtifact)
                                                                                                  throws ArtifactDatabaseClientException {
         log.debug("DefaultArtifactDatabaseClient.calculateStatistics");
-        Collection<ArtifactStatisticValue> result;
+        Collection<ArtifactStatisticsSet> resultValues = null;
+        
         try {
-            result = null;
             String targetName = "statistics";
             String requestUrl = this.getArtifactUrl(artifactFactory,
-                    currentArtifact)
-                                + "/" + targetName;
+                    currentArtifact) + "/" + targetName;
             Document requestBody = this.createOutRequestBody(currentArtifact,
                     targetName, "text/xml", null);
             XMLUtils xmlUtils = new XMLUtils();
             InputStream is = this.doPostRequest(requestUrl, requestBody);
             Document resultDocument = xmlUtils.readDocument(is);
             if (resultDocument != null) {
-                NodeList resultNodes = xmlUtils.getNodeSetXPath(resultDocument,
-                        "/statistic-values/statistic");
-                if (resultNodes != null) {
-                    result = new ArrayList<ArtifactStatisticValue>(resultNodes
-                            .getLength());
-                    for (int i = 0; i < resultNodes.getLength(); i++) {
-                        Node statisticNode = resultNodes.item(i);
-                        String name = xmlUtils.getStringXPath(statisticNode,
-                                "@name");
-                        String value = xmlUtils.getStringXPath(statisticNode,
-                                "@value");
-                        result.add(new DefaultArtifactStatisticValue(name,
-                                value));
+                
+                NodeList statisticSetNodes = xmlUtils.getNodeSetXPath(resultDocument,
+                                                  "/statistics/statistic");
+                resultValues = new ArrayList<ArtifactStatisticsSet>
+                                          (statisticSetNodes.getLength());
+                for (int i = 0; i < statisticSetNodes.getLength(); i++) {
+                    Element statisticSetNode = (Element)statisticSetNodes.item(i);
+                    String name = statisticSetNode.getAttribute("name");
+                    ArtifactStatisticsSet set = 
+                               new DefaultArtifactStatisticsSet(name);
+                    NodeList resultNodes = xmlUtils.getNodeSetXPath(statisticSetNode,
+                            "statistic-value");
+                    if (resultNodes != null) {
+                        for (int j = 0; j < resultNodes.getLength(); j++) {
+                            Element statisticNode = (Element)resultNodes.item(j);
+                            String statisticName = statisticNode.
+                                                        getAttribute("name");
+                            String statisticValue = statisticNode.
+                                                        getAttribute("value");
+                            set.addStatisticValues(
+                                   new DefaultArtifactStatisticValue
+                                               (statisticName,statisticValue));
+                        }
                     }
+                    resultValues.add(set);
                 }
             }
         } catch (IOException e) {
@@ -727,7 +739,7 @@
             throw new ArtifactDatabaseClientException(e);
         }
 
-        return result;
+        return resultValues;
     }
 
     public void setLocale(Locale locale) {

http://dive4elements.wald.intevation.org