diff artifacts/doc/conf/meta-data.xml @ 9625:07f02019065e

Nachtrag Pos. 20: infrastructure query added, calculation updated for extended access class
author mschaefer
date Mon, 14 Oct 2019 08:14:58 +0200
parents 02ca823ec9c6
children ad852be69900
line wrap: on
line diff
--- a/artifacts/doc/conf/meta-data.xml	Fri Oct 11 18:30:36 2019 +0200
+++ b/artifacts/doc/conf/meta-data.xml	Mon Oct 14 08:14:58 2019 +0200
@@ -1418,23 +1418,84 @@
     <dc:macro name="predefined_infrastructures">
       <infrastructures TODO="i10n">
         <dc:context connection="system">
-          <dc:statement>
-            SELECT *
-            FROM infrastructure
-            WHERE river_id = ${river_id}
-          </dc:statement>
-          <dc:group expr="$group_id">
-            <infrastructure_group description="{dc:group-key()}">
-              <dc:for-each>
-                <!-- name="{$annotation_type_id}" -->
-                 <!-- not necessary: target_out="{$out}" -->
-                <infrastructure_type description="{$FILENAME}" factory="FAKE_FACTORY" group_label="{$group_id}" group_id="{$group_id}" type_id="{$annotation_type_id}" type_label="{$annotation_type_id}" />
-              </dc:for-each>
-            </infrastructure_group>
-          </dc:group>
+          <!--dc:choose>
+            <dc:when test="dc:contains($riverside, 'left')">
+              <dc:call-macro name="infrastructures_leftside_statement" />
+              <dc:call-macro name="infrastructures_groups_fill" />
+            </dc:when>
+            <dc:when test="dc:contains($riverside, 'right')">
+              <dc:call-macro name="infrastructures_rightside_statement" />
+              <dc:call-macro name="infrastructures_groups_fill" />
+            </dc:when>
+            <dc:otherwise>
+              <dc:call-macro name="infrastructures_bothsides_statement" />
+              <dc:call-macro name="infrastructures_groups_fill" />
+            </dc:otherwise>
+          </dc:choose-->
+          <dc:call-macro name="infrastructures_bothsides_statement" />
+          <dc:call-macro name="infrastructures_groups_fill" />
         </dc:context>
       </infrastructures>
     </dc:macro>
+    
+    <dc:macro name="infrastructures_groups_fill">
+      <dc:group expr="$group_label">
+        <infrastructure_group name="{dc:group-key()}" description="{dc:group-key()}">
+          <dc:for-each>
+            <!-- name="{$annotation_type_id}" -->
+             <!-- not necessary: target_out="{$out}" -->
+            <infrastructure_type name="{$type_label}" description="{$filename}" factory="FAKE_FACTORY" group_label="{$group_label}" group_id="{$group_id}" type_id="{$type_id}" type_label="{$type_label}" />
+          </dc:for-each>
+        </infrastructure_group>
+      </dc:group>
+    </dc:macro>
+    
+    <dc:macro name="infrastructures_leftside_statement">
+      <dc:statement>
+          SELECT s.id, MIN(s.filename) AS filename, MIN(s.group_id) AS group_id, MIN(g.name) AS group_label, 
+            MIN(s.annotation_type_id) AS type_id, MIN(t.name) AS type_label
+          FROM (((infrastructure AS s INNER JOIN infrastructure_values AS v ON v.infrastructure_id = s.id)
+            INNER JOIN annotation_types AS g ON s.group_id = g.id)
+            INNER JOIN annotation_types AS t ON s.annotation_type_id = t.id)
+            INNER JOIN attributes AS rs ON v.attribute_id = rs.id
+          WHERE (s.river_id = ${river_id})
+            AND (v.station BETWEEN ${fromkm}-0.0001 AND ${tokm}+0.0001)
+            AND (lower(rs.value) = 'links')
+          GROUP BY s.id
+          ORDER BY MIN(g.name), MIN(t.name)
+      </dc:statement>
+    </dc:macro>
+
+    <dc:macro name="infrastructures_rightside_statement">
+      <dc:statement>
+          SELECT s.id, MIN(s.filename) AS filename, MIN(s.group_id) AS group_id, MIN(g.name) AS group_label, 
+            MIN(s.annotation_type_id) AS type_id, MIN(t.name) AS type_label
+          FROM (((infrastructure AS s INNER JOIN infrastructure_values AS v ON v.infrastructure_id = s.id)
+            INNER JOIN annotation_types AS g ON s.group_id = g.id)
+            INNER JOIN annotation_types AS t ON s.annotation_type_id = t.id)
+            INNER JOIN attributes AS rs ON v.attribute_id = rs.id
+          WHERE (s.river_id = ${river_id})
+            AND (v.station BETWEEN ${fromkm}-0.0001 AND ${tokm}+0.0001)
+            AND (lower(rs.value) = 'rechts')
+          GROUP BY s.id
+          ORDER BY MIN(g.name), MIN(t.name)
+      </dc:statement>
+    </dc:macro>
+
+    <dc:macro name="infrastructures_bothsides_statement">
+      <dc:statement>
+          SELECT s.id, MIN(s.filename) AS filename, MIN(s.group_id) AS group_id, MIN(g.name) AS group_label, 
+            MIN(s.annotation_type_id) AS type_id, MIN(t.name) AS type_label
+          FROM (((infrastructure AS s INNER JOIN infrastructure_values AS v ON v.infrastructure_id = s.id)
+            INNER JOIN annotation_types AS g ON s.group_id = g.id)
+            INNER JOIN annotation_types AS t ON s.annotation_type_id = t.id)
+            INNER JOIN attributes AS rs ON v.attribute_id = rs.id
+          WHERE (s.river_id = ${river_id})
+            AND (v.station BETWEEN ${fromkm}-0.0001 AND ${tokm}+0.0001)
+          GROUP BY s.id
+          ORDER BY MIN(g.name), MIN(t.name)
+      </dc:statement>
+    </dc:macro>
 
     <!-- wst-data -->
 

http://dive4elements.wald.intevation.org