diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/DistanceInfoService.java @ 686:3dc61e00385e facets-slt

Merged with trunk and introduced hashing of computed values. flys-artifacts/branches/facets-slt@2126 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 15 Jun 2011 15:28:54 +0000
parents 02c0cce0e469
children eab5e5089d77
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/DistanceInfoService.java	Wed Jun 08 13:03:21 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/DistanceInfoService.java	Wed Jun 15 15:28:54 2011 +0000
@@ -12,7 +12,6 @@
 
 import de.intevation.artifacts.common.ArtifactNamespaceContext;
 import de.intevation.artifacts.common.utils.XMLUtils;
-import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
 
 import de.intevation.artifactdatabase.DefaultService;
 
@@ -21,6 +20,7 @@
 import de.intevation.flys.model.Attribute;
 import de.intevation.flys.model.Position;
 import de.intevation.flys.model.Range;
+import de.intevation.flys.model.Edge;
 
 import de.intevation.flys.artifacts.model.AnnotationsFactory;
 
@@ -98,22 +98,17 @@
 
         Document result = XMLUtils.newDocument();
 
-        ElementCreator ec = new ElementCreator(
-            result,
-            ArtifactNamespaceContext.NAMESPACE_URI,
-            ArtifactNamespaceContext.NAMESPACE_PREFIX);
-
         Session session = SessionHolder.acquire();
 
         try {
             Iterator<Annotation> iter =
                 AnnotationsFactory.getAnnotationsIterator(river);
 
-            Element all = ec.create("distances");
+            Element all = result.createElement("distances");
 
             while (iter.hasNext()) {
                 Annotation a = iter.next();
-                Element distance = buildDistanceNode(ec, a);
+                Element distance = buildDistanceNode(result, a);
                 all.appendChild(distance);
             }
 
@@ -136,19 +131,43 @@
      *
      * @return an Element that contains information about a distance.
      */
-    protected static Element buildDistanceNode(ElementCreator ec, Annotation anno) {
-        Position  pos   = anno.getPosition();
-        Range     range = anno.getRange();
-        Attribute attr  = anno.getAttribute();
+    protected static Element buildDistanceNode(
+        Document   document,
+        Annotation anno
+    ) {
+        Position   pos   = anno.getPosition();
+        Range      range = anno.getRange();
+        Attribute  attr  = anno.getAttribute();
+        Edge       edge  = anno.getEdge();
+        BigDecimal a     = range.getA();
+        BigDecimal b     = range.getB();
 
-        BigDecimal a = range.getA();
-        BigDecimal b = range.getB();
+        Element distance = document.createElement("distance");
 
-        Element distance = ec.create("distance");
-        ec.addAttr(distance, "description", pos.getValue(), true);
-        ec.addAttr(distance, "from", a != null ? a.toString() : "", true);
-        ec.addAttr(distance, "to", b != null ? b.toString() : "", true);
-        ec.addAttr(distance, "riverside", attr.getValue(), true);
+        distance.setAttribute("description", pos.getValue());
+
+        String riverSide = attr.getValue();
+
+        if (riverSide != null && riverSide.length() > 0) {
+            distance.setAttribute("riverside", riverSide);
+        }
+
+        if (a != null) {
+            distance.setAttribute("from", a.toString());
+        }
+        if (b != null) {
+            distance.setAttribute("to", b.toString());
+        }
+        if (edge != null) {
+            BigDecimal bottom = edge.getBottom();
+            BigDecimal top    = edge.getTop();
+            if (bottom != null) {
+                distance.setAttribute("bottom", bottom.toString());
+            }
+            if (top != null) {
+                distance.setAttribute("top", top.toString());
+            }
+        }
 
         return distance;
     }

http://dive4elements.wald.intevation.org