diff artifacts/doc/conf/meta-data.xml @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-artifacts/doc/conf/meta-data.xml@a7df90f425e2
children 6343a61b62c8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/doc/conf/meta-data.xml	Thu Apr 25 15:23:37 2013 +0200
@@ -0,0 +1,3064 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dc:template xmlns:dc="http://www.intevation.org/2011/Datacage">
+<datacage>
+  <dc:comment>
+    Statement to load data from wsts.
+  </dc:comment>
+  <dc:macro name="SQL-wst_columns_statement">
+    <dc:statement>
+        SELECT wst_columns.id          AS prot_column_id,
+               wst_columns.name        AS prot_column_name,
+               wst_columns.position    AS prot_rel_pos,
+               wst_columns.description AS info,
+               wst_ranges.a            AS deffrom,
+               wst_ranges.b            AS defto
+        FROM wst_columns, wst_ranges
+        WHERE wst_columns.wst_id = ${prot_id}
+           AND wst_ranges.wst_column_id = wst_columns.id
+           AND (${fromkm} BETWEEN wst_ranges.a AND wst_ranges.b
+           OR ${tokm} BETWEEN wst_ranges.a AND wst_ranges.b
+           OR wst_ranges.a BETWEEN ${fromkm} AND ${tokm}
+           OR wst_ranges.b BETWEEN ${fromkm} AND ${tokm})
+        ORDER by wst_columns.position
+    </dc:statement>
+  </dc:macro>
+
+  <dc:comment>
+    Load user specific distance information from artifact.
+  </dc:comment>
+  <dc:macro name="user-range">
+    <dc:choose>
+      <dc:when test="dc:contains($parameters, 'user-id')">
+        <dc:context connection="user">
+        <dc:statement>
+          SELECT COALESCE(ld_mode, '')      AS ldm,
+                 COALESCE(ld_locations, '') AS ldl,
+                 COALESCE(ld_from, '')      AS ldf,
+                 COALESCE(ld_to, '')        AS ldt
+          FROM master_artifacts_range
+          WHERE gid = CAST(${artifact-id} AS uuid)
+        </dc:statement>
+        <dc:for-each>
+          <dc:variable name="fromkm" type="number" expr="dc:fromValue($ldm, $ldl, $ldf)"/>
+          <dc:variable name="tokm" type="number" expr="dc:toValue($ldm, $ldl, $ldt)"/>
+          <dc:macro-body/>
+        </dc:for-each>
+        </dc:context>
+      </dc:when>
+      <dc:otherwise>
+        <dc:variable name="fromkm" type="number" expr="dc:fromValue('', '', '')"/>
+        <dc:variable name="tokm" type="number" expr="dc:toValue('', '', '')"/>
+        <dc:macro-body/>
+      </dc:otherwise>
+    </dc:choose>
+  </dc:macro>
+
+  <dc:comment>
+    System part. Load data for the given river.
+  </dc:comment>
+  <dc:macro name="load-system">
+    <dc:context connection="system">
+      <dc:statement>
+        SELECT id AS river_id, name AS river_name FROM rivers
+        WHERE lower(name) LIKE lower(${river})
+      </dc:statement>
+      <dc:for-each>
+
+        <dc:comment>
+          Base-data macros (mostly data imported from wst-files).
+        </dc:comment>
+        <dc:macro name="basedata_0">
+          <dc:call-macro name="user-range">
+            <dc:comment comment=" BASEDATA ---------------------------"/>
+            <basedata>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 0 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <basedata name="{$prot_description}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="base_data-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwqkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </basedata>
+                </dc:for-each>
+              </dc:context>
+            </basedata>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_0_wq">
+          <dc:call-macro name="user-range">
+            <dc:comment comment=" BASEDATA ---------------------------"/>
+            <basedata>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 0 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <basedata name="{$prot_description}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="base_data-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="wqinterpol"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </basedata>
+                </dc:for-each>
+              </dc:context>
+            </basedata>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_1_additionals_marks">
+          <dc:call-macro name="user-range">
+            <dc:comment comment=".ZUS -------------------------------"/>
+            <additionals>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 1 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <additional name="{$prot_description}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="additionalsmarks-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context></additional>
+                </dc:for-each>
+              </dc:context>
+            </additionals>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_1_additionals">
+          <dc:call-macro name="user-range">
+            <dc:comment comment=".ZUS -------------------------------"/>
+            <additionals>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 1 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+		  <additional name="{dc:replace($prot_description, 'Zus.Längsschnitte/', '')}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="additionals-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </additional>
+                </dc:for-each>
+              </dc:context>
+            </additionals>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_1_additionals-relative_point">
+          <dc:call-macro name="user-range">
+            <dc:comment comment=".ZUS -------------------------------"/>
+            <additionals>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 1 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <relativepoint name="{$prot_description}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="additionals-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </relativepoint>
+                </dc:for-each>
+              </dc:context>
+            </additionals>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_2_fixations_wqkms">
+          <dc:call-macro name="user-range">
+            <fixations>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 2 AND river_id = ${river_id}
+                  ORDER BY prot_description
+                </dc:statement>
+                <dc:for-each>
+                  <fixation name="{dc:replace($prot_description, 'Fixierungen/', '')}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="fixations-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="wqinterpol"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </fixation>
+                </dc:for-each>
+              </dc:context>
+            </fixations>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_2_fixations">
+          <dc:call-macro name="user-range">
+            <fixations>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 2 AND river_id = ${river_id}
+                  ORDER BY prot_description
+                </dc:statement>
+                <dc:for-each>
+                  <fixation name="{dc:replace($prot_description, 'Fixierungen/', '')}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="fixations-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </fixation>
+                </dc:for-each>
+              </dc:context>
+            </fixations>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_2_fixations_relative_point">
+          <dc:call-macro name="user-range">
+            <fixations>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 2 AND river_id = ${river_id}
+                  ORDER BY prot_description
+                </dc:statement>
+                <dc:for-each>
+                  <relativepoint name="{dc:replace($prot_description, 'Fixierungen/', '')}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="fixations-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </relativepoint>
+                </dc:for-each>
+              </dc:context>
+            </fixations>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_3_officials">
+          <dc:call-macro name="user-range">
+            <dc:comment comment=".wst -------------------------------"/>
+            <officiallines>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 3 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <official name="{$prot_description}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="additionals-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwqkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </official>
+                </dc:for-each>
+              </dc:context>
+            </officiallines>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_4_heightmarks-points-relative_points">
+          <dc:call-macro name="user-range">
+            <heightmarks>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 4 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <relativepoint name="{$prot_description}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="heightmarks_points-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </relativepoint>
+                </dc:for-each>
+              </dc:context>
+            </heightmarks>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_4_heightmarks-points">
+          <dc:call-macro name="user-range">
+            <heightmarks>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 4 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <heightmark name="{dc:replace($prot_description, 'HW-Marken/', '')}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="heightmarks_points-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </heightmark>
+                </dc:for-each>
+              </dc:context>
+            </heightmarks>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_4_heightmarks-wq">
+          <dc:call-macro name="user-range">
+            <heightmarks>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 4 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <heightmark name="{$prot_description}">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="heightmarks_annotations-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="wqinterpol"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </heightmark>
+                </dc:for-each>
+              </dc:context>
+            </heightmarks>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_5_flood-protections_relative_points">
+          <dc:call-macro name="user-range">
+            <flood_protections id="flood-protections-{$river_id}">
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 5 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <relativepoint name="{$prot_description}"
+                                 db-id="{$prot_id}"
+                                 factory="staticwkms">
+                  <columns>
+                      <dc:context>
+                        <dc:call-macro name="SQL-wst_columns_statement"/>
+                        <dc:for-each>
+                          <column name="{$prot_column_name}"
+                                  ids="flood_protection-wstv-{$prot_rel_pos}-{$prot_id}"
+                                  factory="staticwkms"
+                                  info="{$info} [km {$deffrom} - {$defto}]"/>
+                        </dc:for-each>
+                      </dc:context>
+                    </columns>
+                  </relativepoint>
+                </dc:for-each>
+              </dc:context></flood_protections>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="basedata_5_flood-protections">
+          <dc:call-macro name="user-range">
+            <flood_protections id="flood-protections-{$river_id}">
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS prot_id,
+                         description AS prot_description
+                  FROM wsts WHERE kind = 5 AND river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <flood_protection name="{dc:replace($prot_description, 'HW-Schutzanlagen/', '')}"
+                                    db-id="{$prot_id}"
+                                    factory="staticwkms">
+                    <dc:context>
+                      <dc:call-macro name="SQL-wst_columns_statement"/>
+                      <dc:for-each>
+                        <column name="{$prot_column_name}"
+                                ids="flood_protection-wstv-{$prot_rel_pos}-{$prot_id}"
+                                factory="staticwkms"
+                                info="{$info} [km {$deffrom} - {$defto}]"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </flood_protection>
+                </dc:for-each>
+              </dc:context>
+            </flood_protections>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="mainvalues">
+          <mainvalue factory="mainvalue" ids="{$river_id}"/>
+          <wmainvalue factory="mainvalue" ids="{$river_id}:w"/>
+          <qmainvalue factory="mainvalue" ids="{$river_id}:q"/>
+        </dc:macro>
+
+        <dc:macro name="qsectors">
+          <qsector factory="qsectors" ids="{$river_id}"/>
+        </dc:macro>
+
+        <dc:macro name="annotations">
+          <annotation factory="annotations" ids="{$river_id}"/>
+        </dc:macro>
+
+        <dc:macro name="annotations_per_type">
+          <annotations>
+            <dc:context>
+              <annotation name="all_annotations" factory="annotations" ids="{$river_id}"/>
+              <dc:statement>
+                SELECT id          AS anno_id,
+                       name AS anno_description
+                FROM annotation_types
+              </dc:statement>
+              <dc:for-each>
+                <annotation name="{$anno_description}"
+                            factory="annotations"
+                            ids="{$river_id}:{$anno_description}"/>
+             </dc:for-each>
+            </dc:context>
+          </annotations>
+        </dc:macro>
+
+        <dc:macro name="cross_sections">
+          <dc:call-macro name="user-range">
+            <cross_sections id="flood-protections-{$river_id}">
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT DISTINCT
+                         cs.id          AS prot_id,
+                         cs.description AS prot_description
+                  FROM cross_sections cs
+                    JOIN cross_section_lines csl ON csl.cross_section_id = cs.id
+                  WHERE cs.river_id = ${river_id}
+                    AND csl.km BETWEEN ${fromkm} AND ${tokm}
+                </dc:statement>
+                <dc:for-each>
+                  <cross_section name="{$prot_description}"
+                                 ids="{$prot_id}"
+                                 factory="crosssections"/>
+                </dc:for-each>
+              </dc:context>
+            </cross_sections>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="hyks">
+          <dc:call-macro name="user-range">
+            <hyks id="hyk-{$river_id}">
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT DISTINCT
+                         h.id          AS hyk_id,
+                         h.description AS hyk_description
+                  FROM hyks h
+                    JOIN hyk_entries he ON he.hyk_id = h.id
+                  WHERE river_id = ${river_id}
+                    AND he.km BETWEEN ${fromkm} AND ${tokm}
+                </dc:statement>
+                <dc:for-each>
+                  <hyk name="{$hyk_description}" ids="{$hyk_id}" factory="hyk"/>
+                </dc:for-each>
+              </dc:context></hyks>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="flow_velocity_measurements">
+          <dc:call-macro name="user-range">
+            <flowvelocitymeasurement>
+              <dc:context connection="system">
+                <dc:statement>
+                  SELECT id          AS fvmid,
+                         description AS fvmd
+                  FROM flow_velocity_measurements WHERE river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <flow_velocity_measurement name="{$fvmd}"
+                                             ids="{$fvmid}"
+                                             factory="flowvelocity">
+                    <dc:context>
+                      <dc:statement>
+                        SELECT id, description, station, datetime, v, w, q
+                        FROM flow_velocity_measure_values
+                        WHERE measurements_id = ${fvmid}
+                          AND station BETWEEN ${fromkm} AND ${tokm}
+                      </dc:statement>
+                      <dc:for-each>
+                        <measurement_value name="{$description} - {$station} - {$datetime}"
+                                           ids="{$id}"
+                                           factory="flowvelocity"/>
+                      </dc:for-each>
+                    </dc:context>
+                  </flow_velocity_measurement>
+                </dc:for-each>
+              </dc:context>
+            </flowvelocitymeasurement>
+          </dc:call-macro>
+        </dc:macro>
+
+        <dc:macro name="sounding-width">
+          <soundings_width>
+            <dc:context>
+              <dc:statement>
+                  SELECT id          AS bedh_id,
+                         year        AS bedh_year,
+                         description AS bedh_descr
+                  FROM bed_height_single WHERE river_id = ${river_id}
+              </dc:statement>
+              <dc:for-each>
+                <height factory="bedheight"
+                        ids="bedheight-singlevalues-{$bedh_id}-{$bedh_year}"
+                        description="{$bedh_descr}"/>
+              </dc:for-each>
+            </dc:context>
+          </soundings_width>
+        </dc:macro>
+
+        <dc:macro name="morph_width">
+          <morph_width>
+            <dc:context>
+              <dc:statement>
+                SELECT id   AS width_id
+                FROM morphologic_width
+                WHERE river_id = ${river_id}
+              </dc:statement>
+              <dc:for-each>
+                <dc:context>
+                  <dc:statement>
+                    SELECT min(station) AS from,
+                           max(station) AS to
+                    FROM morphologic_width_values
+                    WHERE morphologic_width_id = ${width_id}
+                  </dc:statement>
+                  <dc:for-each>
+                    <morphologic-width name="{$from} - {$to}"
+                                       ids="{$width_id}"
+                                       factory="morph-width"/>
+                  </dc:for-each>
+                </dc:context>
+              </dc:for-each>
+            </dc:context>
+          </morph_width>
+        </dc:macro>
+
+        <dc:macro name="longitudinal-section-prototype">
+          <dc:call-macro name="basedata_0"/>
+          <dc:call-macro name="basedata_1_additionals"/>
+          <dc:comment comment=" FIXATIONS ---------------------------"/>
+          <dc:call-macro name="basedata_2_fixations"/>
+          <dc:comment comment=" HOEHENMARKEN ---------------------------"/>
+          <dc:call-macro name="basedata_4_heightmarks-points"/>
+          <dc:comment comment=" AMTL LINIEN  ---------------------------"/>
+          <dc:call-macro name="basedata_3_officials"/>
+          <dc:call-macro name="basedata_5_flood-protections"/>
+          <dc:call-macro name="annotations_per_type"/>
+        </dc:macro>
+
+        <dc:comment>
+        + River-Node
+        </dc:comment>
+        <dc:attribute name="name" value="${river_name}"/>
+
+        <dc:choose>
+          <dc:when test="dc:contains($parameters, 'recommended')">
+             <dc:comment>
+                Recommendations (client shall load immediately).
+             </dc:comment>
+             <dc:if test="dc:contains($artifact-outs, 'w_differences') or (dc:contains($artifact-outs, 'discharge_longitudinal_section'))">
+               <dc:call-macro name="annotations"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'historical_discharge_wq')">
+               <dc:call-macro name="mainvalues"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'cross_section')">
+               <dc:call-macro name="cross_sections"/>
+               <dc:call-macro name="hyks"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'computed_discharge_curve')">
+               <dc:call-macro name="mainvalues"/>
+               <dc:call-macro name="basedata_2_fixations_wqkms"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'duration_curve')">
+               <dc:call-macro name="mainvalues"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'reference_curve')">
+               <dc:call-macro name="annotations"/>
+               <dc:call-macro name="mainvalues"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'fix_wq_curve')">
+               <dc:call-macro name="qsectors"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'longitudinal_section')">
+               <dc:call-macro name="annotations"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'fix_longitudinal_section_curve')">
+               <dc:call-macro name="annotations"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'bed_difference_epoch')">
+               <dc:call-macro name="annotations"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'bed_difference_year')">
+               <dc:call-macro name="annotations"/>
+             </dc:if>
+             <dc:if test="dc:contains($artifact-outs, 'bed_difference_height_year')">
+               <dc:call-macro name="annotations"/>
+             </dc:if>
+          </dc:when>
+          <dc:otherwise>
+            <dc:comment>
+               Non - Recommendations.
+            </dc:comment>
+            <dc:if test="dc:contains($artifact-outs, 'cross_section')">
+               <dc:call-macro name="basedata_0"/>
+               <dc:call-macro name="basedata_1_additionals"/>
+               <dc:call-macro name="basedata_2_fixations"/>
+               <dc:call-macro name="basedata_3_officials"/>
+               <dc:call-macro name="basedata_4_heightmarks-points"/>
+               <dc:call-macro name="cross_sections"/>
+               <dc:call-macro name="hyks"/>
+            </dc:if>
+            <!--dc:if test="dc:contains($artifact-outs, 'computed_discharge_curve')">
+               <dc:call-macro name="basedata_0_wq"/>
+               <dc:call-macro name="basedata_4_heightmarks-wq"/>
+            </dc:if-->
+            <dc:if test="dc:contains($artifact-outs, 'longitudinal_section') or (dc:contains($artifact-outs, 'w_differences')) or (dc:contains($artifact-outs, 'discharge_longitudinal_section'))">
+                <dc:call-macro name="longitudinal-section-prototype"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'duration_curve')">
+                <dc:call-macro name="mainvalues"/>
+                <dc:call-macro name="basedata_2_fixations_relative_point"/>
+                <dc:call-macro name="basedata_4_heightmarks-points-relative_points"/>
+                <dc:call-macro name="basedata_5_flood-protections_relative_points"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'reference_curve')">
+              <dc:call-macro name="annotations"/>
+              <!--dc:call-macro name="basedata_0"/-->
+              <dc:call-macro name="basedata_1_additionals-relative_point"/>
+              <dc:comment comment=" FIXATIONS ---------------------------"/>
+              <dc:call-macro name="basedata_2_fixations_relative_point"/>
+              <dc:comment comment=" HOEHENMARKEN ---------------------------"/>
+              <dc:call-macro name="basedata_4_heightmarks-points-relative_points"/>
+              <dc:call-macro name="basedata_5_flood-protections_relative_points"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'fix_wq_curve')">
+              <dc:call-macro name="basedata_0_wq"/>
+              <dc:call-macro name="basedata_1_additionals_marks"/>
+              <dc:call-macro name="basedata_2_fixations_wqkms"/>
+              <dc:call-macro name="basedata_3_officials"/>
+              <dc:call-macro name="basedata_4_heightmarks-points"/>
+              <dc:call-macro name="basedata_5_flood-protections_relative_points"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'fix_deltawt_curve')">
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'fix_longitudinal_section_curve')">
+              <dc:call-macro name="annotations"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'map')">
+              <dc:call-macro name="flood-map-complete"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'flow_velocity')">
+              <dc:call-macro name="annotations_per_type"/>
+              <dc:call-macro name="flow_velocity_measurements"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'bed_longitudinal_section')">
+              <dc:call-macro name="annotations_per_type"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'sedimentload_ls')">
+              <dc:call-macro name="annotations_per_type"/>
+              <dc:call-macro name="morph_width"/>
+            </dc:if>
+            <dc:comment>
+              MINFO bedheight middle
+            </dc:comment>
+            <dc:if test="dc:contains($artifact-outs, 'bedheight_middle')">
+              <dc:call-macro name="sounding-width"/>
+              <dc:call-macro name="basedata_0"/>
+              <dc:call-macro name="basedata_1_additionals"/>
+              <dc:call-macro name="basedata_2_fixations"/>
+              <dc:call-macro name="basedata_3_officials"/>
+              <dc:call-macro name="annotations_per_type"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'bed_difference_year') or
+                         dc:contains($artifact-outs, 'bed_difference_epoch')">
+              <dc:call-macro name="basedata_0"/>
+              <dc:call-macro name="basedata_1_additionals"/>
+              <dc:call-macro name="basedata_2_fixations"/>
+              <dc:call-macro name="basedata_3_officials"/>
+              <dc:call-macro name="annotations_per_type"/>
+              <dc:call-macro name="morph_width"/>
+            </dc:if>
+           <dc:comment comment="--- non-recommendations---"/>
+          </dc:otherwise>
+        </dc:choose>
+
+        <dc:if test="dc:contains($artifact-outs, 'waterlevels')">
+
+          <!-- base data -->
+          <dc:call-macro name="basedata_0"/>
+
+          <!-- extra-longitudinal-sections -->
+          <dc:call-macro name="basedata_1_additionals"/>
+
+          <!-- fixations -->
+          <dc:call-macro name="basedata_2_fixations"/>
+
+          <!-- flood water marks-->
+          <dc:call-macro name="basedata_4_heightmarks-points"/>
+
+          <!-- flood protection -->
+          <dc:call-macro name="basedata_5_flood-protections"/>
+
+        </dc:if>
+
+        <dc:if test="dc:contains($artifact-outs, 'computed_discharge_curve') and not (dc:contains($parameters, 'recommended'))">
+          <discharge_table_nn>
+            <discharge_table_gauge>
+              <dc:context>
+                <dc:statement>
+                  SELECT id   AS gauge_id,
+                         name AS gauge_name
+                  FROM gauges WHERE river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <gauge name="{$gauge_name}"
+                         db-id="{$gauge_id}"
+                         factory="gaugedischarge"
+                         from="{$g_start}"
+                         to="{$g_stop}"
+                         ids="{$gauge_name}"/>
+                  <dc:comment>
+                    <!--
+                    <gauge>
+                      <dc:attribute name="name" value="${gauge_name}"/>
+                      <dc:attribute name="db-id" value="${gauge_id}"/>
+                      <dc:context>
+                        <dc:statement>
+                          SELECT description   AS gauge_desc,
+                                 d.id          AS discharge_id,
+                                 ti.start_time AS g_start,
+                                 ti.stop_time  AS g_stop
+                          FROM discharge_tables d JOIN time_intervals ti
+                          ON d.time_interval_id = ti.id
+                          WHERE d.gauge_id = ${gauge_id} AND d.kind = 1
+                        </dc:statement>
+                        <dc:for-each>
+                          <historical>
+                            <dc:attribute name="name" value="${gauge_desc}"/>
+                            <dc:attribute name="factory" value="gaugedischarge"/>
+                            <dc:attribute name="from" value="${g_start}"/>
+                            <dc:attribute name="to" value="${g_stop}"/>
+                            <dc:attribute name="ids" value="${discharge_id}-${g_start}-${g_stop}"/>
+                          </historical>
+                        </dc:for-each>
+                      </dc:context>
+                    </gauge>
+                  -->
+                  </dc:comment>
+                </dc:for-each>
+              </dc:context>
+            </discharge_table_gauge>
+          </discharge_table_nn>
+
+          <dc:call-macro name="basedata_2_fixations_wqkms"/>
+
+          <dc:call-macro name="basedata_5_flood-protections"/>
+
+          <!-- former waterlevels -->
+          <dc:call-macro name="basedata_0"/>
+
+          <dc:call-macro name="basedata_1_additionals"/>
+
+          <!-- former flood-water-marks -->
+          <dc:call-macro name="basedata_4_heightmarks-points"/>
+            <computed_discharge_curve>
+              <dc:call-macro name="mainvalues"/>
+            </computed_discharge_curve>
+        </dc:if>
+
+        <dc:if test="dc:contains($artifact-outs, 'fix_wq_curve') and not (dc:contains($parameters, 'recommended'))">
+          <discharge_table_nn>
+            <discharge_table_gauge>
+              <dc:context>
+                <dc:statement>
+                  SELECT id   AS gauge_id,
+                         name AS gauge_name
+                  FROM gauges WHERE river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <gauge name="{$gauge_name}"
+                         db-id="{$gauge_id}"
+                         factory="gaugedischarge"
+                         from="{$g_start}"
+                         to="{$g_stop}"
+                         ids="{$gauge_name}"/>
+                </dc:for-each>
+              </dc:context>
+            </discharge_table_gauge>
+          </discharge_table_nn>
+        </dc:if>
+
+        <dc:if test="dc:contains($artifact-outs, 'floodmap') or dc:contains($artifact-outs, 'floodmap-hws')">
+          <dc:choose>
+            <dc:when test="dc:contains($parameters, 'recommended')">
+              <dc:call-macro name="flood-map-recommended"/>
+            </dc:when>
+            <dc:when test="dc:contains($parameters, 'dem')">
+              <dc:call-macro name="flood-map-dem"/>
+            </dc:when>
+            <dc:when test="dc:contains($parameters, 'hws')">
+              <hws>
+                <dc:call-macro name="flood-map-hws-lines"/>
+                <dc:call-macro name="flood-map-hws-points"/>
+              </hws>
+            </dc:when>
+            <dc:otherwise>
+              <dc:call-macro name="flood-map-complete"/>
+            </dc:otherwise>
+          </dc:choose>
+
+          <dc:macro name="flood-map-recommended">
+            <dc:comment>
+               FIXME: Following two macros look identical to me.
+            </dc:comment>
+            <kilometrage>
+              <riveraxis factory="riveraxis" ids="{$river_id}"/>
+            </kilometrage>
+            <rastermap>
+              <background factory="wmsbackground" ids="{$river_id}"/>
+            </rastermap>
+          </dc:macro>
+
+          <dc:macro name="flood-map-dem">
+            <dems>
+              <dc:context>
+                <dc:statement>
+                  SELECT d.id    AS dem_id,
+                         r.a     AS dem_lower,
+                         r.b     AS dem_upper,
+                         d.name  AS name,
+                         t.start_time AS start_time,
+                         t.stop_time AS stop_time,
+                         'Projektion: ' || d.projection || '$' ||
+                         'Rasterweite: '   || d.resolution || 'm$' ||
+                         'Format: '  || d.format || '$' ||
+                         'Zeitraum: '
+                         AS info
+                         FROM dem d
+                         JOIN ranges r ON d.range_id = r.id
+                         LEFT JOIN time_intervals t ON d.time_interval_id = t.id
+                         WHERE d.river_id = ${river_id}
+                </dc:statement>
+                <dc:for-each>
+                  <dem factory="demfactory" ids="{$dem_id}" name="{$name}"
+                    info="{dc:replace($info, '$', '&lt;BR&gt;')}{dc:date-format('yyyy', $start_time)} - {dc:date-format('yyyy', $stop_time)}"/>
+                </dc:for-each>
+              </dc:context>
+            </dems>
+          </dc:macro>
+
+          <dc:macro name="filter_hws_ddg">
+            <dc:macro name="durchlass_damm_graben">
+              <dc:macro name="ddg_factory">
+                <dc:for-each>
+                  <hws factory="hwsfactory" name="{$hws_name}"/>
+                </dc:for-each>
+              </dc:macro>
+
+              <dc:filter expr="$hws_kind=1">
+                <dc:if test="dc:has-result()">
+                  <Durchlass><dc:call-macro name="ddg_factory"/></Durchlass>
+                </dc:if>
+              </dc:filter>
+
+              <dc:filter expr="$hws_kind=2">
+                <dc:if test="dc:has-result()">
+                  <Damm><dc:call-macro name="ddg_factory"/></Damm>
+                </dc:if>
+              </dc:filter>
+
+              <dc:filter expr="$hws_kind=3">
+                <dc:if test="dc:has-result()">
+                  <Graben><dc:call-macro name="ddg_factory"/></Graben>
+                </dc:if>
+              </dc:filter>
+            </dc:macro>
+
+            <dc:filter expr="$hws_official=1">
+              <dc:if test="dc:has-result()">
+                <official>
+                  <dc:call-macro name="durchlass_damm_graben"/>
+                </official>
+              </dc:if>
+            </dc:filter>
+
+            <dc:filter expr="$hws_official=0">
+              <dc:if test="dc:has-result()">
+                <inofficial>
+                  <dc:call-macro name="durchlass_damm_graben"/>
+                </inofficial>
+              </dc:if>
+            </dc:filter>
+          </dc:macro>
+
+          <dc:macro name="flood-map-hws-lines">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                       name     AS hws_name,
+                       official AS hws_official,
+                       kind_id  AS hws_kind
+                FROM hws_lines
+                WHERE river_id = ${river_id}
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <lines>
+                  <dc:call-macro name="filter_hws_ddg"/>
+                </lines>
+              </dc:if>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-hws-points">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                       name     AS hws_name,
+                       official AS hws_official,
+                       kind_id  AS hws_kind
+                FROM hws_points
+                WHERE river_id = ${river_id}
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <points>
+                  <dc:call-macro name="filter_hws_ddg"/>
+                </points>
+              </dc:if>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-km">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT 1 FROM river_axes_km WHERE river_id = ${river_id}
+              </dc:statement>
+               <dc:for-each>
+                  <kilometrage factory="wmskmfactory" ids="{$river_id}"/>
+              </dc:for-each>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-qps">
+            <dc:context>
+              <dc:comment>Grab only the actual first</dc:comment>
+              <dc:statement>
+                SELECT DISTINCT
+                cs.kind_id AS kind_id,
+                ck.name AS kind_name
+                FROM cross_section_tracks cs
+                JOIN cross_section_track_kinds ck on cs.kind_id = ck.id
+                WHERE river_id = ${river_id}
+                AND kind_id=1
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <dc:for-each>
+                  <actual description="{$kind_name}"
+                          factory="wmsqpsfactory"
+                          ids="{$river_id};{$kind_name};{$kind_id}"/>
+                </dc:for-each>
+              </dc:if>
+            </dc:context>
+            <dc:context>
+              <dc:comment>Now the other tracks</dc:comment>
+              <dc:statement>
+                SELECT DISTINCT
+                cs.kind_id AS kind_id,
+                ck.name AS kind_name,
+                cs.name AS layer_name
+                FROM cross_section_tracks cs
+                JOIN cross_section_track_kinds ck on cs.kind_id = ck.id
+                WHERE river_id = ${river_id}
+                AND kind_id=0
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <other>
+                  <dc:for-each>
+                    <misc-qps description="{$layer_name}"
+                              factory="wmsqpsfactory"
+                              ids="{$river_id};{$layer_name};{$kind_id}"/>
+                  </dc:for-each>
+                </other>
+              </dc:if>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-riveraxis">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                ax.kind_id AS kind_id,
+                ak.name AS kind_name
+                FROM river_axes ax
+                JOIN axis_kinds ak on ax.kind_id = ak.id
+                WHERE river_id = ${river_id}
+                AND kind_id=1
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <dc:for-each>
+                  <actual description="{$kind_name}"
+                          ids="{$river_id};{$kind_name};{$kind_id}"
+                          factory="riveraxis"/>
+                </dc:for-each>
+              </dc:if>
+            </dc:context>
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                ak.name AS kind_name,
+                ax.kind_id AS kind_id,
+                ax.name AS layer_name
+                FROM river_axes ax
+                JOIN axis_kinds ak on ax.kind_id = ak.id
+                WHERE river_id = ${river_id}
+                AND kind_id &lt;&gt; 1
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <other>
+                  <dc:for-each>
+                    <misc-axis description="{$layer_name}"
+                               ids="{$river_id};{$layer_name};{$kind_id}"
+                               factory="riveraxis"/>
+                  </dc:for-each>
+                </other>
+              </dc:if>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-hydr-boundaries-state">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                name
+                FROM hydr_boundaries
+                WHERE river_id = ${river_id}
+                AND kind = 2
+              </dc:statement>
+              <dc:for-each>
+                <line factory="wmshydrboundariesfactory" 
+                      ids="{$river_id};{$name};2"
+                      name="{$name}"/>
+              </dc:for-each>
+            </dc:context>
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                name
+                FROM hydr_boundaries_poly
+                WHERE river_id = ${river_id}
+                AND kind = 2
+              </dc:statement>
+              <dc:for-each>
+                <line factory="wmshydrboundariespolyfactory"
+                      ids="{$river_id};{$name};2"
+                      name="{$name}"/>
+              </dc:for-each>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-hydr-boundaries-lines">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                name
+                FROM hydr_boundaries
+                WHERE river_id = ${river_id}
+                AND kind = 1
+              </dc:statement>
+              <dc:comment> What about all other line kinds?</dc:comment>
+              <dc:if test="dc:has-result()">
+                <lines>
+                  <dc:for-each>
+                    <line factory="wmshydrboundariesfactory"
+                          ids="{$river_id};{$name};1"
+                          name="{$name}"/>
+                  </dc:for-each>
+                </lines>
+              </dc:if>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-hydr-boundaries-poly">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                b.sectie AS sectie_id,
+                sk.name AS sectie
+                FROM hydr_boundaries_poly b
+                JOIN sectie_kinds sk ON b.sectie = sk.id
+                WHERE b.river_id = ${river_id}
+                AND b.kind = 1
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <sobek_areas>
+                  <dc:for-each>
+                    <boundary name="{$sectie}"
+                              factory="wmshydrboundariespolyfactory"
+                              ids="{$river_id};{$sectie};1;{$sectie_id};-1"/>
+                  </dc:for-each>
+                </sobek_areas>
+              </dc:if>
+            </dc:context>
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                b.sobek AS sobek_id,
+                sk.name AS sobek
+                FROM hydr_boundaries_poly b
+                JOIN sobek_kinds sk ON b.sobek = sk.id
+                WHERE b.river_id = ${river_id}
+                AND b.kind = 1
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <sobek_flooded>
+                  <dc:for-each>
+                    <boundary name="{$sobek}"
+                              factory="wmshydrboundariespolyfactory"
+                              ids="{$river_id};{$sobek};1;-1;{$sobek_id}"/>
+                  </dc:for-each>
+                </sobek_flooded>
+              </dc:if>
+            </dc:context>
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                b.name AS name
+                FROM hydr_boundaries_poly b
+                WHERE b.river_id = ${river_id}
+                AND b.kind = 1
+                AND b.sobek IS NULL
+                AND b.sectie is NULL
+              </dc:statement>
+              <dc:for-each>
+                <boundary name="{$name}"
+                          factory="wmshydrboundariespolyfactory"
+                          ids="{$river_id};{$name}"/>
+              </dc:for-each>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-hydr-boundaries">
+            <bfg_model>
+              <areas>
+                <dc:call-macro name="flood-map-hydr-boundaries-poly"/>
+              </areas>
+              <dc:call-macro name="flood-map-hydr-boundaries-lines"/>
+            </bfg_model>
+            <federal>
+              <dc:call-macro name="flood-map-hydr-boundaries-state"/>
+            </federal>
+          </dc:macro>
+
+          <dc:macro name="flood-map-floodplain">
+            <floodplain>
+              <dc:context>
+                <dc:statement>
+                  SELECT DISTINCT
+                  fp.kind_id AS kind_id,
+                  flk.name AS kind_name
+                  FROM floodplain fp
+                  JOIN floodplain_kinds flk on fp.kind_id = flk.id
+                  WHERE river_id = ${river_id}
+                  AND kind_id=1
+                </dc:statement>
+                <dc:if test="dc:has-result()">
+                  <dc:for-each>
+                    <floody factory="wmsfloodplainfactory"
+                      description="{$kind_name}"
+                      ids="{$river_id};{$kind_name};{$kind_id}"/>
+                  </dc:for-each>
+                </dc:if>
+              </dc:context>
+              <dc:context>
+                <dc:statement>
+                  SELECT DISTINCT
+                  flk.name AS kind_name,
+                  fp.kind_id AS kind_id,
+                  fp.name AS layer_name
+                  FROM floodplain fp
+                  JOIN floodplain_kinds flk on fp.kind_id = flk.id
+                  WHERE river_id = ${river_id}
+                  AND kind_id &lt;&gt; 1
+                </dc:statement>
+                <dc:if test="dc:has-result()">
+                  <other>
+                    <dc:for-each>
+                      <floody factory="wmsfloodplainfactory"
+                        description="{$layer_name}"
+                        ids="{$river_id};{$layer_name};{$kind_id}"/>
+                    </dc:for-each>
+                  </other>
+                </dc:if>
+              </dc:context>
+            </floodplain>
+          </dc:macro>
+
+          <dc:macro name="hwslines_by_kind">
+            <dc:comment>
+              Call from a context where fed_name hws_kind hws_name and river_id is
+              availble
+            </dc:comment>
+
+            <dc:macro name="hwslines_by_kind_factory">
+              <dc:for-each>
+                <hws factory="wmshwslinesfactory"
+                     ids="{$river_id};{$hws_name}"
+                     name="{$hws_name}"/>
+              </dc:for-each>
+            </dc:macro>
+
+            <dc:filter expr="$hws_kind=1">
+              <dc:if test="dc:has-result()">
+                <Durchlass>
+                  <dc:call-macro name="hwslines_by_kind_factory"/>
+                </Durchlass>
+              </dc:if>
+            </dc:filter>
+
+            <dc:filter expr="$hws_kind=2">
+              <dc:if test="dc:has-result()">
+                <Damm>
+                  <dc:call-macro name="hwslines_by_kind_factory"/>
+                </Damm>
+              </dc:if>
+            </dc:filter>
+
+            <dc:filter expr="$hws_kind=3">
+              <dc:if test="dc:has-result()">
+                <Graben>
+                  <dc:call-macro name="hwslines_by_kind_factory"/>
+                </Graben>
+              </dc:if>
+            </dc:filter>
+          </dc:macro>
+
+          <dc:macro name="hwslines">
+            <hws_lines>
+              <official>
+                <dc:context>
+                  <dc:statement>
+                    SELECT DISTINCT
+                    fs.name AS fed_name,
+                    fs.id AS fed_id
+                    FROM hws_lines hws
+                    JOIN fed_states fs ON hws.fed_state_id = fs.id
+                    WHERE river_id = ${river_id}
+                    AND hws.official=1
+                  </dc:statement>
+                  <dc:for-each>
+                    <dc:context>
+                      <dc:statement>
+                        SELECT DISTINCT
+                        name AS hws_name,
+                        kind_id AS hws_kind
+                        FROM hws_lines
+                        WHERE river_id = ${river_id}
+                        AND official=1
+                        AND fed_state_id = ${fed_id} ORDER BY name
+                      </dc:statement>
+                      <fedstate description="{$fed_name}">
+                        <dc:call-macro name="hwslines_by_kind"/>
+                      </fedstate>
+                    </dc:context>
+                  </dc:for-each>
+                </dc:context>
+                <dc:context>
+                  <dc:statement>
+                    SELECT distinct
+                    name AS hws_name,
+                    kind_id AS hws_kind
+                    FROM hws_lines
+                    WHERE river_id = ${river_id}
+                    AND official=1
+                    AND fed_state_id IS NULL
+                    ORDER BY name
+                  </dc:statement>
+                  <hws_fed_unknown>
+                    <dc:call-macro name="hwslines_by_kind"/>
+                  </hws_fed_unknown>
+                </dc:context>
+              </official>
+              <inofficial>
+                <dc:context>
+                  <dc:statement>
+                    SELECT DISTINCT
+                    fs.name AS fed_name,
+                    fs.id AS fed_id
+                    FROM hws_lines hws
+                    JOIN fed_states fs ON hws.fed_state_id = fs.id
+                    WHERE river_id = ${river_id}
+                    AND hws.official=0
+                  </dc:statement>
+                  <dc:for-each>
+                    <dc:context>
+                      <dc:statement>
+                        SELECT DISTINCT
+                        name AS hws_name,
+                        kind_id AS hws_kind
+                        FROM hws_lines
+                        WHERE river_id = ${river_id}
+                        AND official=0
+                        AND fed_state_id = ${fed_id} ORDER BY name
+                      </dc:statement>
+                      <fedstate description="{$fed_name}">
+                        <dc:call-macro name="hwslines_by_kind"/>
+                      </fedstate>
+                    </dc:context>
+                  </dc:for-each>
+                </dc:context>
+                <dc:context>
+                  <dc:statement>
+                    SELECT distinct
+                    name AS hws_name,
+                    kind_id AS hws_kind
+                    FROM hws_lines
+                    WHERE river_id = ${river_id}
+                    AND official=0
+                    AND fed_state_id IS NULL ORDER BY name
+                  </dc:statement>
+                  <hws_fed_unknown>
+                    <dc:call-macro name="hwslines_by_kind"/>
+                  </hws_fed_unknown>
+                </dc:context>
+              </inofficial>
+            </hws_lines>
+          </dc:macro>
+
+          <dc:macro name="hwspoints_by_kind">
+            <dc:comment>
+              Call from a context where fed_name hws_kind hws_name and river_id is
+              availble
+            </dc:comment>
+
+            <dc:macro name="hwspoints_by_kind_factory">
+              <dc:for-each>
+                <hws factory="wmshwspointsfactory"
+                     ids="{$river_id};{$hws_name}"
+                     name="{$hws_name}"/>
+              </dc:for-each>
+            </dc:macro>
+
+            <dc:filter expr="$hws_kind=1">
+              <dc:if test="dc:has-result()">
+                <Durchlass>
+                  <dc:call-macro name="hwspoints_by_kind_factory"/>
+                </Durchlass>
+              </dc:if>
+            </dc:filter>
+
+            <dc:filter expr="$hws_kind=2">
+              <dc:if test="dc:has-result()">
+                <Damm>
+                  <dc:call-macro name="hwspoints_by_kind_factory"/>
+                </Damm>
+              </dc:if>
+            </dc:filter>
+
+            <dc:filter expr="$hws_kind=3">
+              <dc:if test="dc:has-result()">
+                <Graben>
+                  <dc:call-macro name="hwspoints_by_kind_factory"/>
+                </Graben>
+              </dc:if>
+            </dc:filter>
+          </dc:macro>
+
+          <dc:macro name="hwspoints">
+            <hws_points>
+              <official>
+                <dc:context>
+                  <dc:statement>
+                    SELECT DISTINCT
+                    fs.name AS fed_name,
+                    fs.id AS fed_id
+                    FROM hws_points hws
+                    JOIN fed_states fs ON hws.fed_state_id = fs.id
+                    WHERE river_id = ${river_id}
+                    AND hws.official=1
+                  </dc:statement>
+                  <dc:for-each>
+                    <dc:context>
+                      <dc:statement>
+                        SELECT DISTINCT
+                        name AS hws_name,
+                        kind_id AS hws_kind
+                        FROM hws_points
+                        WHERE river_id = ${river_id}
+                        AND official=1
+                        AND fed_state_id = ${fed_id} ORDER BY name
+                      </dc:statement>
+                      <fedstate description="{$fed_name}">
+                        <dc:call-macro name="hwspoints_by_kind"/>
+                      </fedstate>
+                    </dc:context>
+                  </dc:for-each>
+                </dc:context>
+                <dc:context>
+                  <dc:statement>
+                    SELECT distinct
+                    name AS hws_name,
+                    kind_id AS hws_kind
+                    FROM hws_points
+                    WHERE river_id = ${river_id}
+                    AND official=1
+                    AND fed_state_id IS NULL
+                    ORDER BY name
+                  </dc:statement>
+                  <hws_fed_unknown>
+                    <dc:call-macro name="hwspoints_by_kind"/>
+                  </hws_fed_unknown>
+                </dc:context>
+              </official>
+              <inofficial>
+                <dc:context>
+                  <dc:statement>
+                    SELECT DISTINCT
+                    fs.name AS fed_name,
+                    fs.id AS fed_id
+                    FROM hws_points hws
+                    JOIN fed_states fs ON hws.fed_state_id = fs.id
+                    WHERE river_id = ${river_id}
+                    AND hws.official=0
+                  </dc:statement>
+                  <dc:for-each>
+                    <dc:context>
+                      <dc:statement>
+                        SELECT DISTINCT
+                        name AS hws_name,
+                        kind_id AS hws_kind
+                        FROM hws_points
+                        WHERE river_id = ${river_id}
+                        AND official=0
+                        AND fed_state_id = ${fed_id} ORDER BY name
+                      </dc:statement>
+                      <fedstate description="{$fed_name}">
+                        <dc:call-macro name="hwspoints_by_kind"/>
+                      </fedstate>
+                    </dc:context>
+                  </dc:for-each>
+                </dc:context>
+                <dc:context>
+                  <dc:statement>
+                    SELECT distinct
+                    name AS hws_name,
+                    kind_id AS hws_kind
+                    FROM hws_points
+                    WHERE river_id = ${river_id}
+                    AND official=0
+                    AND fed_state_id IS NULL ORDER BY name
+                  </dc:statement>
+                  <hws_fed_unknown>
+                    <dc:call-macro name="hwspoints_by_kind"/>
+                  </hws_fed_unknown>
+                </dc:context>
+              </inofficial>
+            </hws_points>
+          </dc:macro>
+
+          <dc:macro name="flood-map-buildings">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                b.kind_id AS building_kind_id,
+                bk.name AS building_kind
+                FROM buildings b
+                JOIN building_kinds bk ON b.kind_id = bk.id
+                WHERE b.river_id = ${river_id}
+                AND b.kind_id &lt;&gt; 0
+              </dc:statement>
+              <dc:for-each>
+                <buildings description="{$building_kind}"
+                           factory="wmsbuildingsfactory"
+                           ids="{$river_id};{$building_kind};{$building_kind_id}"/>
+              </dc:for-each>
+            </dc:context>
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                b.name AS building_name,
+                bk.name AS building_kind,
+                b.kind_id AS building_kind_id
+                FROM buildings b
+                JOIN building_kinds bk ON b.kind_id = bk.id
+                WHERE river_id = ${river_id}
+                AND kind_id = 0
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <other>
+                  <dc:for-each>
+                    <buildings description="{$building_name}"
+                      factory="wmsbuildingsfactory"
+                      ids="{$river_id};{$building_name}"/>
+                  </dc:for-each>
+                </other>
+              </dc:if>
+            </dc:context>
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                j.kind_id AS jetty_kind_id,
+                jk.name AS jetty_kind
+                FROM jetties j
+                JOIN jetty_kinds jk ON j.kind_id = jk.id
+                WHERE river_id = ${river_id}
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <jetties>
+                  <dc:for-each>
+                    <jetty description="{$jetty_kind}"
+                           factory="wmsjettiesfactory"
+                           ids="{$river_id};{$jetty_kind};{$jetty_kind_id}"/>
+                  </dc:for-each>
+                </jetties>
+              </dc:if>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-fixpoints">
+            <dc:context>
+              <dc:statement>
+                SELECT name AS name
+                FROM fixpoints WHERE river_id = ${river_id} GROUP BY name
+              </dc:statement>
+              <dc:for-each>
+                <fixpoints factory="wmsfixpointsfactory"
+                  ids="{$river_id};{$name}"/>
+              </dc:for-each>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-gaugelocations">
+            <gauge_points factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelpunkte;Pegelpunkte (WSV)"/>
+            <gauge_names factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelnamen;Pegelnamen (WSV)"/>
+            <gauge_level factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelwasserstand;Aktueller Wasserstand (WSV)"/>
+            <gauge_tendency factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;TendenzWasserstand;Tendenz des Wasserstands (WSV)"/>
+          </dc:macro>
+
+          <dc:macro name="flood-map-uesk">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT 1 from floodmaps where river_id = ${river_id}
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+              <uesk>
+                <calculations>
+                  <dc:context>
+                    <dc:statement>
+                      SELECT DISTINCT 1 from floodmaps where river_id = ${river_id} 
+                      AND (kind = 112 OR kind = 111)
+                    </dc:statement>
+                    <dc:if test="dc:has-result()">
+                      <current>
+                        <dc:context>
+                          <dc:statement>
+                            SELECT DISTINCT name AS name
+                            FROM floodmaps
+                            WHERE river_id = ${river_id} AND kind = 111
+                          </dc:statement>
+                          <dc:if test="dc:has-result()">
+                            <bfg>
+                              <dc:for-each>
+                                <floodmaps factory="wmsfloodmapsfactory"
+                                  ids="{$river_id};{$name}"
+                                  name="{$name}"/>
+                              </dc:for-each>
+                            </bfg>
+                          </dc:if>
+                        </dc:context>
+                        <dc:context>
+                          <dc:statement>
+                            SELECT DISTINCT name AS name
+                            FROM floodmaps
+                            WHERE river_id = ${river_id} AND kind = 112
+                          </dc:statement>
+                          <dc:if test="dc:has-result()">
+                            <federal>
+                              <dc:for-each>
+                                <floodmaps factory="wmsfloodmapsfactory"
+                                  ids="{$river_id};{$name}"
+                                  name="{$name}"/>
+                              </dc:for-each>
+                            </federal>
+                          </dc:if>
+                        </dc:context>
+                      </current>
+                    </dc:if>
+                  </dc:context>
+                  <dc:context>
+                    <dc:statement>
+                      SELECT DISTINCT 1 from floodmaps where river_id = ${river_id}
+                      AND (kind = 122 OR kind = 121)
+                    </dc:statement>
+                    <dc:if test="dc:has-result()">
+                      <potential>
+                        <dc:context>
+                          <dc:statement>
+                            SELECT DISTINCT name AS name
+                            FROM floodmaps
+                            WHERE river_id = ${river_id} AND kind = 121
+                          </dc:statement>
+                          <dc:if test="dc:has-result()">
+                            <bfg>
+                              <dc:for-each>
+                                <floodmaps factory="wmsfloodmapsfactory"
+                                  ids="{$river_id};{$name}"
+                                  name="{$name}"/>
+                              </dc:for-each>
+                            </bfg>
+                          </dc:if>
+                        </dc:context>
+                        <dc:context>
+                          <dc:statement>
+                            SELECT DISTINCT
+                            name AS name
+                            FROM floodmaps
+                            WHERE river_id = ${river_id} AND kind = 122
+                          </dc:statement>
+                          <dc:if test="dc:has-result()">
+                            <federal>
+                              <dc:for-each>
+                                <floodmaps factory="wmsfloodmapsfactory"
+                                  ids="{$river_id};{$name}"
+                                  name="{$name}"/>
+                              </dc:for-each>
+                            </federal>
+                          </dc:if>
+                        </dc:context>
+                      </potential>
+                    </dc:if>
+                  </dc:context>
+                </calculations>
+                <dc:context>
+                  <dc:statement>
+                    SELECT DISTINCT
+                    source AS source
+                    FROM floodmaps
+                    WHERE river_id = ${river_id} AND kind = 200
+                  </dc:statement>
+                  <dc:if test="dc:has-result()">
+                    <measurements>
+                      <dc:for-each>
+                        <year name="{$source}">
+                          <dc:context>
+                            <dc:statement>
+                              SELECT DISTINCT
+                              name AS name
+                              FROM floodmaps
+                              WHERE river_id = ${river_id} AND kind = 200 AND source =
+                              ${source}
+                            </dc:statement>
+                            <dc:for-each>
+                              <floodmaps factory="wmsfloodmapsfactory"
+                                ids="{$river_id};{$name}"
+                                name="{$name}"/>
+                            </dc:for-each>
+                          </dc:context>
+                        </year>
+                      </dc:for-each>
+                    </measurements>
+                  </dc:if>
+                </dc:context>
+              </uesk>
+            </dc:if>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-routing">
+            <qps>
+              <dc:call-macro name="flood-map-qps"/>
+            </qps>
+            <dc:call-macro name="flood-map-fixpoints"/>
+            <dc:call-macro name="flood-map-km"/>
+            <axis>
+              <dc:call-macro name="flood-map-riveraxis"/>
+            </axis>
+          </dc:macro>
+
+          <dc:macro name="floodmarks">
+            <dc:context>
+              <dc:statement>
+                SELECT DISTINCT
+                coalesce(CAST (year AS VARCHAR(64)), 'Unbekanntes Jahr') as year
+                FROM flood_marks
+                WHERE river_id = ${river_id}
+              </dc:statement>
+              <dc:if test="dc:has-result()">
+                <floodmarks>
+                  <dc:for-each>
+                    <floodmark name="{$year}"
+                      factory="wmsfloodmarkfactory"
+                      ids="{$river_id};{$year};{$year}"/>
+                  </dc:for-each>
+                </floodmarks>
+              </dc:if>
+            </dc:context>
+          </dc:macro>
+
+          <dc:macro name="flood-map-complete">
+            <buildings>
+              <dc:call-macro name="flood-map-buildings"/>
+          </buildings>
+          <catchments>
+              <catchment_wms factory="externalwmsfactory"
+                  ids="http://geoportal.bafg.de/wmsproxy/INSPIRE/DrainageBasin;HY.PHYSICALWATERS.CATCHMENTS;Einzugsgebiete (WMS)" />
+              <gaugelocations>
+                  <dc:call-macro name="flood-map-gaugelocations"/>
+              </gaugelocations>
+          </catchments>
+            <dc:call-macro name="floodmarks"/>
+            <hws>
+              <dc:call-macro name="hwslines"/>
+              <dc:call-macro name="hwspoints"/>
+            </hws>
+            <route_data>
+              <dc:call-macro name="flood-map-routing"/>
+            </route_data>
+            <hydrboundaries>
+              <dc:call-macro name="flood-map-floodplain"/>
+              <dc:call-macro name="flood-map-hydr-boundaries"/>
+            </hydrboundaries>
+            <dc:call-macro name="flood-map-uesk"/>
+          </dc:macro>
+
+        </dc:if>
+
+        <dc:if test="dc:contains($artifact-outs, 'minfo-heights')">
+          <dc:call-macro name="minfo-heights"/>
+          <dc:macro name="minfo-heights">
+            <bedheights>
+              <dc:call-macro name="bed-heights-single"/>
+              <dc:call-macro name="bed-heights-epoch"/>
+            </bedheights>
+          </dc:macro>
+        </dc:if>
+        <dc:if test="dc:contains($artifact-outs, 'minfo-heights-epoch')">
+          <bedheights>
+            <dc:call-macro name="bed-heights-epoch"/>
+          </bedheights>
+        </dc:if>
+
+        <dc:macro name="bed-heights-single">
+          <single>
+            <dc:context>
+              <dc:statement>
+                SELECT id          AS bedh_id,
+                       year        AS bedh_year,
+                       description AS bedh_descr
+                FROM bed_height_single WHERE river_id = ${river_id}
+              </dc:statement>
+              <dc:for-each>
+                <height factory="bedheight"
+                        ids="bedheight-single-{$bedh_id}-{$bedh_year}"
+                        description="{$bedh_descr}"/>
+              </dc:for-each>
+            </dc:context>
+          </single>
+        </dc:macro>
+
+        <dc:macro name="bed-heights-epoch">
+          <epoch>
+            <dc:context>
+              <dc:statement>
+                SELECT id               AS bedh_id,
+                       time_interval_id AS bedh_interval_id,
+                       description      AS bedh_descr
+                FROM bed_height_epoch WHERE river_id = ${river_id}
+              </dc:statement>
+              <dc:for-each>
+                <height factory="bedheight"
+                        ids="bedheight-epoch-{$bedh_id}-{$bedh_interval_id}"
+                        description="{$bedh_descr}"/>
+              </dc:for-each>
+            </dc:context>
+          </epoch>
+        </dc:macro>
+
+      </dc:for-each>
+    </dc:context>
+  </dc:macro>
+
+  <dc:choose>
+    <dc:comment>
+      User specific part
+      ------------------
+    </dc:comment>
+    <dc:when test="dc:contains($parameters, 'user-id') and
+      not(dc:contains($artifact-outs, 'floodmap-hws'))">
+
+      <old_calculations>
+
+        <dc:comment><!-- <dc:macro name="load-user">--></dc:comment>
+        <dc:call-macro name="user-range">
+          <dc:context connection="user">
+            <dc:comment> Get the user and collection-id. </dc:comment>
+            <dc:statement>
+              SELECT u.id AS user_id, c.id AS collection_id, c.name AS collection_name
+              FROM collections c JOIN users u ON c.user_id = u.id
+              WHERE u.gid = CAST(${user-id} AS uuid)
+              ORDER BY c.creation DESC
+            </dc:statement>
+
+            <dc:macro name="range-filter">
+              <dc:statement>
+                SELECT m.id       AS a_id,
+                       m.state    AS a_state,
+                       m.gid      AS a_gid,
+                       m.creation AS a_creation,
+                       COALESCE(ld_mode, '')      AS ld_m,
+                       COALESCE(ld_locations, '') AS ld_l,
+                       COALESCE(ld_from, '')      AS ld_f,
+                       COALESCE(ld_to, '')        AS ld_t
+                FROM   master_artifacts_range m
+                WHERE  m.collection_id = ${collection_id} AND m.gid &lt;&gt; CAST(${artifact-id} AS uuid)
+                AND EXISTS (
+                    SELECT id FROM artifact_data ad WHERE ad.artifact_id = m.id AND k = 'river' AND v = ${river})
+              </dc:statement>
+              <dc:for-each>
+                <dc:variable name="from" type="number" expr="dc:fromValue($ld_m, $ld_l, $ld_f)"/>
+                <dc:variable name="to" type="number" expr="dc:toValue($ld_m, $ld_l, $ld_t)"/>
+                <dc:if test="($from &gt;= $fromkm and $from &lt;= $tokm) or ($to &lt;= $tokm and $to &gt;= $fromkm) or ($from &lt;= $fromkm and $to &gt;= $tokm)">
+                  <dc:macro-body/>
+                </dc:if>
+              </dc:for-each>
+            </dc:macro>
+
+            <!-- OFFICIAL LINES -->
+            <dc:if test="dc:contains($artifact-outs, 'longitudinal_section')">
+              <dc:comment comment=".wst -------------------------------"/>
+              <officiallines>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:statement>
+                      SELECT m.id AS a_id,
+                             m.state AS a_state,
+                             m.gid AS a_gid,
+                             m.creation AS a_creation,
+                             ardg.v AS gaugy,
+                             arv.v AS wqsingle
+                      FROM   master_artifacts m,
+                             artifact_data ardg,
+                             artifact_data arv
+                      WHERE  m.collection_id = ${collection_id}
+                        AND m.gid = CAST(${artifact-id} AS uuid)
+                        AND ardg.artifact_id = m.id
+                        AND ardg.k = 'ld_gaugename'
+                        AND arv.artifact_id = m.id
+                        AND arv.k = 'wq_single'
+                        AND EXISTS (
+                          SELECT id
+                          FROM artifact_data ad
+                          WHERE ad.artifact_id = m.id
+                            AND k = 'river'
+                            AND v = ${river})
+                    </dc:statement>
+                    <dc:for-each>
+                      <dc:context connection="system">
+                        <dc:statement>
+                          SELECT ol.wst_id AS wstid, ol.wst_column_pos AS wstcolpos, ol.name AS olname, ol.value AS oval
+                          FROM official_q_values ol
+                          WHERE ol.value = CAST(${wqsingle} AS NUMERIC(10,2)) AND ol.gauge_name = ${gaugy}
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:element name="${olname}">
+                            <dc:attribute name="name" value="${olname}"/>
+                            <dc:attribute name="ids" value="additionals-wstv-${wstcolpos}-${wstid}"/>
+                            <dc:attribute name="factory" value="staticwkms"/>
+                          </dc:element>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:for-each>
+                  </dc:context>
+                </dc:for-each>
+              </officiallines>
+            </dc:if>
+            <!-- END OFFICIAL LINES -->
+
+            <dc:comment>
+              SHOW W-DIFFERENCES
+            </dc:comment>
+
+            <dc:macro name="differences">
+              <differences>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT a.gid AS aid, f.id AS fid, f.name AS facet_name, f.num AS facet_num, f.description AS facet_description
+                          FROM outs AS o, facets AS f, artifacts AS a
+                          WHERE f.name = 'w_differences' and f.out_id = o.id and o.artifact_id = ${a_id} and a.id = ${a_id}
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:element name="${facet_name}">
+                            <dc:attribute name="description" value="${facet_description}"/>
+                            <dc:attribute name="factory" value="winfo"/>
+                            <dc:attribute name="artifact-id" value="${aid}"/>
+                            <dc:attribute name="ids" value="${aid}"/>
+                            <dc:attribute name="out" value="w_differences"/>
+                          </dc:element>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </differences>
+            </dc:macro>
+
+            <dc:comment>
+              SHOW REFERENCE CURVE
+            </dc:comment>
+
+            <dc:macro name="reference-curves">
+              <reference_curves>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="user-range">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT a.gid AS aid, f.id AS fid, f.name AS facet_name, f.num AS facet_num, f.description AS facet_description
+                          FROM outs AS o, facets AS f, artifacts AS a
+                          WHERE f.name = 'reference_curve' and f.out_id = o.id and o.artifact_id = ${a_id} and a.id = ${a_id}
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:element name="${facet_name}">
+                            <dc:attribute name="description" value="${facet_description}"/>
+                            <dc:attribute name="factory" value="winfo"/>
+                            <dc:attribute name="artifact-id" value="${aid}"/>
+                            <dc:attribute name="ids" value="${aid}"/>
+                            <dc:attribute name="out" value="reference_curve"/>
+                          </dc:element>
+                        </dc:for-each>
+                      </dc:context>
+                     </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </reference_curves>
+            </dc:macro>
+
+            <dc:comment>
+              SHOW COMPUTED DISCHARGE CURVES
+            </dc:comment>
+
+            <dc:macro name="computed-discharge-curve">
+              <computed_discharge_curves>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT a.gid AS aid, f.id AS fid, f.name AS facet_name, f.num AS facet_num, f.description AS facet_description
+                          FROM outs AS o, facets AS f, artifacts AS a
+                          WHERE f.name = 'computed_discharge_curve.q' and f.out_id = o.id and o.artifact_id = ${a_id} and a.id = ${a_id}
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:element name="${facet_name}">
+                            <dc:attribute name="description" value="${facet_description}"/>
+                            <dc:attribute name="factory" value="winfo"/>
+                            <dc:attribute name="artifact-id" value="${aid}"/>
+                            <dc:attribute name="ids" value="${aid}"/>
+                            <dc:attribute name="out" value="computed_discharge_curve"/>
+                          </dc:element>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </computed_discharge_curves>
+            </dc:macro>
+
+            <dc:comment>
+              CROSS SECTION
+            </dc:comment>
+
+            <dc:macro name="waterlevels">
+              <waterlevels>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS out_id
+                          FROM outs
+                          WHERE artifact_id = ${a_id} AND name = 'cross_section'
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:context>
+                            <dc:statement>
+                              SELECT name AS facet_name, num AS facet_num, description AS facet_description
+                              FROM facets
+                              WHERE out_id = ${out_id}
+                              ORDER BY num ASC, name DESC
+                            </dc:statement>
+                            <longitudinal_section_columns description="{$river} {$a_creation}">
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}"/>
+                                  <dc:attribute name="factory" value="winfo"/>
+                                  <dc:attribute name="artifact-id" value="${a_gid}"/>
+                                  <dc:attribute name="out" value="cross_section"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </longitudinal_section_columns>
+                          </dc:context>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </waterlevels>
+            </dc:macro>
+
+            <dc:macro name="longitudinal">
+              <waterlevels>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS out_id
+                          FROM outs
+                          WHERE artifact_id = ${a_id} AND name = 'longitudinal_section'
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:context>
+                            <dc:statement>
+                              SELECT name AS facet_name, num AS facet_num, description AS facet_description
+                              FROM facets
+                              WHERE out_id = ${out_id}
+                              ORDER BY num ASC, name DESC
+                            </dc:statement>
+                            <longitudinal_section_columns description="{$river} {$a_creation}">
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}"/>
+                                  <dc:attribute name="factory" value="winfo"/>
+                                  <dc:attribute name="artifact-id" value="${a_gid}"/>
+                                  <dc:attribute name="out" value="longitudinal_section"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </longitudinal_section_columns>
+                          </dc:context>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </waterlevels>
+            </dc:macro>
+
+            <dc:macro name="longitudinal-section">
+              <waterlevels>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS out_id
+                          FROM outs
+                          WHERE artifact_id = ${a_id} AND name = 'fix_longitudinal_section_curve'
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:context>
+                            <dc:comment><!-- average und deviation ls_0 . ls_1 ...--></dc:comment>
+                            <dc:statement>
+                              SELECT name AS facet_name, num AS facet_num, description AS facet_description
+                              FROM facets
+                              WHERE out_id = ${out_id} AND ( 
+                                  name LIKE 'fix_deviation_ls%'       OR 
+                                  name LIKE 'fix_sector_average_ls%'  OR 
+                                  name LIKE 'fix_analysis_events_ls%' OR 
+                                  name LIKE 'fix_reference_events_ls%' )
+                              ORDER BY num ASC, name DESC
+                            </dc:statement>
+                            <waterlevels description="{$river} {$a_creation} {$collection_name}">
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}"/>
+                                  <dc:attribute name="factory" value="fixanalysis"/>
+                                  <dc:attribute name="artifact-id" value="${a_gid}"/>
+                                  <dc:attribute name="out" value="fix_longitudinal_section_curve"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </waterlevels>
+                          </dc:context>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </waterlevels>
+            </dc:macro>
+
+            <dc:macro name="delta-wt">
+              <waterlevels>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS out_id
+                          FROM outs
+                          WHERE artifact_id = ${a_id} AND name = 'fix_deltawt_curve'
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:context>
+                            <dc:statement>
+                              SELECT name AS facet_name, num AS facet_num, description AS facet_description
+                              FROM facets
+                              WHERE out_id = ${out_id} and (
+                                name LIKE 'fix_sector_average_dwt%' OR
+                                name LIKE 'fix_deviation_dwt%'      OR
+                                name = 'fix_analysis_events_dwt'    OR
+                                name = 'fix_reference_events_dwt'   OR
+                                name = 'fix_analysis_periods_dwt' )
+                              ORDER BY num ASC, name DESC
+                            </dc:statement>
+                            <waterlevels description="{$river} {$a_creation} {$collection_name}">
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}"/>
+                                  <dc:attribute name="factory" value="fixanalysis"/>
+                                  <dc:attribute name="artifact-id" value="${a_gid}"/>
+                                  <dc:attribute name="out" value="fix_deltawt_curve"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </waterlevels>
+                          </dc:context>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </waterlevels>
+            </dc:macro>
+
+            <dc:macro name="delta-wt-ls">
+              <waterlevels>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS out_id
+                          FROM outs
+                          WHERE artifact_id = ${a_id} AND name = 'fix_deltawt_curve'
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:context>
+                            <dc:statement>
+                              SELECT name AS facet_name, num AS facet_num, description AS facet_description
+                              FROM facets
+                              WHERE out_id = ${out_id} and (
+                                name LIKE 'fix_sector_average_dwt%' OR
+                                name LIKE 'fix_deviation_dwt%')
+                              ORDER BY num ASC, name DESC
+                            </dc:statement>
+                            <waterlevels description="{$river} {$a_creation} {$collection_name}">
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}"/>
+                                  <dc:attribute name="factory" value="fixanalysis"/>
+                                  <dc:attribute name="artifact-id" value="${a_gid}"/>
+                                  <dc:attribute name="out" value="fix_deltawt_curve"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </waterlevels>
+                          </dc:context>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </waterlevels>
+            </dc:macro>
+
+            <dc:macro name="fix-derivate-curve">
+              <waterlevels>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS out_id
+                          FROM outs
+                          WHERE artifact_id = ${a_id} AND name = 'fix_derivate_curve'
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:context>
+                            <dc:statement>
+                              SELECT name AS facet_name, num AS facet_num, description AS facet_description
+                              FROM facets
+                              WHERE out_id = ${out_id} and name = 'fix_derivate_curve'
+                              ORDER BY num ASC, name DESC
+                            </dc:statement>
+                            <waterlevels description="{$river} {$a_creation} {$collection_name}">
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}"/>
+                                  <dc:attribute name="factory" value="fixanalysis"/>
+                                  <dc:attribute name="artifact-id" value="${a_gid}"/>
+                                  <dc:attribute name="out" value="fix_derivate_curve"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </waterlevels>
+                          </dc:context>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </waterlevels>
+            </dc:macro>
+
+            <dc:macro name="fix-wq-curve">
+              <waterlevels>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS out_id
+                          FROM outs
+                          WHERE artifact_id = ${a_id} AND name = 'fix_wq_curve'
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:context>
+                            <dc:statement>
+                              SELECT name AS facet_name, num AS facet_num, description AS facet_description
+                              FROM facets
+                              WHERE out_id = ${out_id} and (
+                                name LIKE 'fix_sector_average_wq%'  OR
+                                name = 'fix_wq_curve'               OR
+                                name LIKE 'fix_analysis_events_wq%' OR
+                                name LIKE 'fix_reference_events_wq%' )
+                              ORDER BY num ASC, name DESC
+                            </dc:statement>
+                            <waterlevels description="{$river} {$a_creation} {$collection_name}">
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}"/>
+                                  <dc:attribute name="factory" value="fixanalysis"/>
+                                  <dc:attribute name="artifact-id" value="${a_gid}"/>
+                                  <dc:attribute name="out" value="fix_wq_curve"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </waterlevels>
+                          </dc:context>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </waterlevels>
+            </dc:macro>
+
+            <dc:macro name="duration-curve">
+              <computed_discharge_curves>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT a.gid         AS aid,
+                                 f.id          AS fid,
+                                 f.name        AS facet_name,
+                                 f.num         AS facet_num,
+                                 f.description AS facet_description
+                          FROM outs AS o, facets AS f, artifacts AS a
+                          WHERE
+                              (f.name = 'duration_curve.q' OR f.name = 'duration_curve.w') AND 
+                              f.out_id = o.id         AND
+                              o.artifact_id = ${a_id} AND
+                              a.id = ${a_id}
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:element name="${facet_name}">
+                            <dc:attribute name="description" value="${facet_description}"/>
+                            <dc:attribute name="factory" value="winfo"/>
+                            <dc:attribute name="artifact-id" value="${aid}"/>
+                            <dc:attribute name="ids" value="${aid}"/>
+                            <dc:attribute name="out" value="duration_curve"/>
+                          </dc:element>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </computed_discharge_curves>
+            </dc:macro>
+
+            <dc:comment>
+               WATERLEVELS - ONLY SHOW Ws
+            </dc:comment>
+
+            <dc:comment><!-- TODO doesnt work nicely for fix/wq-diags. --></dc:comment>
+
+            <dc:macro name="waterlevels-fix">
+              <waterlevels>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS out_id
+                          FROM outs
+                          WHERE artifact_id = ${a_id} AND name = 'longitudinal_section'
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:context>
+                            <dc:statement>
+                              SELECT name AS facet_name, num AS facet_num, description AS facet_description
+                              FROM facets
+                              WHERE out_id = ${out_id} and name = 'longitudinal_section.w'
+                              ORDER BY num ASC, name DESC
+                            </dc:statement>
+                            <waterlevels description="{$river} {$a_creation} {$collection_name}">
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}"/>
+                                  <dc:attribute name="factory" value="winfo"/>
+                                  <dc:attribute name="artifact-id" value="${a_gid}"/>
+                                  <dc:attribute name="out" value="longitudinal_section"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </waterlevels>
+                          </dc:context>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </waterlevels>
+            </dc:macro>
+
+            <dc:comment>
+              SHOW FLOODMAPS
+            </dc:comment>
+
+            <dc:macro name="flood-map">
+              <floodmap>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT a.gid         AS aid,
+                                 f.id          AS fid,
+                                 f.name        AS facet_name,
+                                 f.num         AS facet_num,
+                                 f.description AS facet_description
+                          FROM outs AS o, facets AS f, artifacts AS a
+                          WHERE f.name = 'floodmap.wsplgen' AND
+                                f.out_id = o.id             AND
+                                o.artifact_id = ${a_id}     AND
+                                a.id = ${a_id}
+                        </dc:statement>
+                        <dc:for-each>
+                          <dc:element name="${facet_name}">
+                            <dc:attribute name="description" value="${facet_description}"/>
+                            <dc:attribute name="factory" value="winfo"/>
+                            <dc:attribute name="artifact-id" value="${aid}"/>
+                            <dc:attribute name="ids" value="${aid}"/>
+                            <dc:attribute name="out" value="floodmap"/>
+                          </dc:element>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </floodmap>
+            </dc:macro>
+
+            <dc:comment>
+              MINFO bedheight middle
+            </dc:comment>
+
+            <dc:macro name="bed-height">
+              <fix_vollmer_wq_curve>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT a.gid         AS aid,
+                                 f.id          AS fid,
+                                 f.name        AS facet_name,
+                                 f.num         AS facet_num,
+                                 f.description AS facet_description
+                          FROM outs AS o, facets AS f, artifacts AS a
+                          WHERE (
+                              f.name = 'longitudinal_section.w' OR 
+                              f.name = 'heightmarks_points'
+                          ) AND f.out_id = o.id AND o.artifact_id = ${a_id} AND a.id = ${a_id}
+                        </dc:statement>
+                        <fix_vollmer_wq_curve description="{$river} {$a_creation} {$collection_name}">
+                          <dc:for-each>
+                            <dc:element name="${facet_name}">
+                              <dc:attribute name="description" value="${facet_description}"/>
+                              <dc:attribute name="factory" value="fixanalysis"/>
+                              <dc:attribute name="artifact-id" value="${aid}"/>
+                              <dc:attribute name="ids" value="${facet_num}"/>
+                              <dc:attribute name="out" value="longitudinal_section"/>
+                            </dc:element>
+                          </dc:for-each>
+                        </fix_vollmer_wq_curve>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </fix_vollmer_wq_curve>
+            </dc:macro>
+
+            <dc:macro name="floodmap-hws-user">
+              <dc:context>
+                <dc:statement>
+                  SELECT id AS out_id
+                  FROM outs
+                  WHERE artifact_id = ${a_id} AND name = 'floodmap'
+                </dc:statement>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:statement>
+                      SELECT name        AS facet_name,
+                             num         AS facet_num,
+                             description AS facet_description
+                      FROM facets
+                      WHERE out_id = ${out_id} AND name = 'floodmap.usershape'
+                      ORDER BY num ASC, name DESC
+                    </dc:statement>
+                    <own-hws>
+                      <dc:for-each>
+                        <dc:element name="${facet_name}">
+                          <dc:attribute name="description" value="${facet_description}"/>
+                          <dc:attribute name="ids" value="${facet_num}"/>
+                          <dc:attribute name="factory" value="winfo"/>
+                          <dc:attribute name="artifact-id" value="${a_gid}"/>
+                          <dc:attribute name="out" value="floodmap"/>
+                        </dc:element>
+                      </dc:for-each>
+                    </own-hws>
+                  </dc:context>
+                </dc:for-each>
+              </dc:context>
+            </dc:macro>
+
+            <dc:macro name="bedquality-bed">
+              <bed_quality_bed>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS oid
+                          FROM outs AS o
+                          WHERE
+                            o.artifact_id = ${a_id} AND
+                            o.name='bed_longitudinal_section'
+                        </dc:statement>
+                        <dc:for-each>
+                          <quality-bed description="{$river} {$a_creation} {$collection_name}">
+                            <dc:context>
+                              <dc:statement>
+                                SELECT a.gid         AS aid,
+                                       f.id          AS fid,
+                                       f.name        AS facet_name,
+                                       f.num         AS facet_num,
+                                       f.description AS facet_description
+                                FROM outs AS o, facets AS f, artifacts AS a
+                                WHERE
+                                  (f.name = 'bed_longitudinal_section.bed_diameter_toplayer'
+                                   OR f.name = 'bed_longitudinal_section.bed_diameter_sublayer') AND
+                                   f.out_id = o.id         AND
+                                   o.artifact_id = ${a_id} AND
+                                   a.id = ${a_id}
+                              </dc:statement>
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="factory" value="minfo"/>
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
+                                  <dc:attribute name="artifact-id" value="${aid}"/>
+                                  <dc:attribute name="out" value="bed_longitudinal_section"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </dc:context>
+                          </quality-bed>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </bed_quality_bed>
+            </dc:macro>
+
+            <dc:macro name="bedquality-load">
+              <bed_quality_load>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS oid
+                          FROM outs AS o
+                          WHERE
+                            o.artifact_id = ${a_id} AND
+                            o.name='bed_longitudinal_section'
+                        </dc:statement>
+                        <dc:for-each>
+                          <quality-load description="{$river} {$a_creation} {$collection_name}">
+                            <dc:context>
+                              <dc:statement>
+                                SELECT a.gid         AS aid,
+                                       f.id          AS fid,
+                                       f.name        AS facet_name,
+                                       f.num         AS facet_num,
+                                       f.description AS facet_description
+                                FROM outs AS o, facets AS f, artifacts AS a
+                                WHERE
+                                   f.name = 'bed_longitudinal_section.bedload_diameter' AND
+                                   f.out_id = o.id         AND
+                                   o.artifact_id = ${a_id} AND
+                                   a.id = ${a_id}
+                              </dc:statement>
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="factory" value="minfo"/>
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
+                                  <dc:attribute name="artifact-id" value="${aid}"/>
+                                  <dc:attribute name="out" value="bed_longitudinal_section"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </dc:context>
+                          </quality-load>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </bed_quality_load>
+            </dc:macro>
+
+            <dc:macro name="bedquality-density">
+              <bed_quality_density>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                    <dc:context>
+                      <dc:statement>
+                        SELECT id AS oid
+                        FROM outs AS o
+                        WHERE
+                          o.artifact_id = ${a_id} AND
+                          o.name='bed_longitudinal_section'
+                      </dc:statement>
+                      <dc:for-each>
+                        <density description="{$river} {$a_creation} {$collection_name}">
+                            <dc:context>
+                              <dc:statement>
+                                SELECT a.gid         AS aid,
+                                       f.id          AS fid,
+                                       f.name        AS facet_name,
+                                       f.num         AS facet_num,
+                                       f.description AS facet_description
+                                FROM outs AS o, facets AS f, artifacts AS a
+                                WHERE
+                                   (f.name = 'bed_longitudinal_section.sediment_density_toplayer' OR
+                                    f.name = 'bed_longitudinal_section.sediment_density_sublayer') AND
+                                   f.out_id = o.id         AND
+                                   o.artifact_id = ${a_id} AND
+                                   a.id = ${a_id}
+                              </dc:statement>
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="factory" value="minfo"/>
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
+                                  <dc:attribute name="artifact-id" value="${aid}"/>
+                                  <dc:attribute name="out" value="bed_longitudinal_section"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </dc:context>
+                          </density>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </bed_quality_density>
+            </dc:macro>
+
+            <dc:macro name="bedquality-porosity">
+              <bed_quality_porosity>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS oid
+                          FROM outs AS o
+                          WHERE
+                            o.artifact_id = ${a_id} AND
+                            o.name='bed_longitudinal_section'
+                        </dc:statement>
+                        <dc:for-each>
+                          <porosity description="{$river} {$a_creation} {$collection_name}">
+                            <dc:context>
+                              <dc:statement>
+                                SELECT a.gid         AS aid,
+                                       f.id          AS fid,
+                                       f.name        AS facet_name,
+                                       f.num         AS facet_num,
+                                       f.description AS facet_description
+                                FROM outs AS o, facets AS f, artifacts AS a
+                                WHERE
+                                   (f.name = 'bed_longitudinal_section.porosity_toplayer' OR
+                                    f.name = 'bed_longitudinal_section.porosity_sublayer') AND
+                                   f.out_id = o.id         AND
+                                   o.artifact_id = ${a_id} AND
+                                   a.id = ${a_id}
+                              </dc:statement>
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="factory" value="minfo"/>
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
+                                  <dc:attribute name="artifact-id" value="${aid}"/>
+                                  <dc:attribute name="out" value="bed_longitudinal_section"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </dc:context>
+                          </porosity>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </bed_quality_porosity>
+            </dc:macro>
+
+            <dc:macro name="flow-velocity">
+              <flow-velocity>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS oid
+                          FROM outs AS o
+                          WHERE
+                            o.artifact_id = ${a_id} and o.name='flow_velocity'
+                        </dc:statement>
+                        <dc:for-each>
+                          <flow description="{$river} {$a_creation} {$collection_name}">
+                          <dc:context>
+                            <dc:statement>
+                              SELECT a.gid         AS aid,
+                                     f.id          AS fid,
+                                     f.name        AS facet_name,
+                                     f.num         AS facet_num,
+                                     f.description AS facet_description
+                              FROM outs AS o, facets AS f, artifacts AS a
+                              WHERE
+                                (f.name = 'flow_velocity.totalchannel' OR
+                                 f.name = 'flow_velocity.mainchannel' OR
+                                 f.name = 'flow_velocity.totalchannel.filtered' OR
+                                 f.name = 'flow_velocity.mainchannel.filtered') AND
+                                 f.out_id = o.id         AND
+                                 o.artifact_id = ${a_id} AND
+                                 a.id = ${a_id}
+                            </dc:statement>
+                            <dc:for-each>
+                              <dc:element name="${facet_name}">
+                                <dc:attribute name="factory" value="minfo"/>
+                                <dc:attribute name="description" value="${facet_description}"/>
+                                <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
+                                <dc:attribute name="artifact-id" value="${aid}"/>
+                                <dc:attribute name="out" value="flow_velocity"/>
+                              </dc:element>
+                            </dc:for-each>
+                          </dc:context>
+                        </flow>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </flow-velocity>
+            </dc:macro>
+
+            <dc:macro name="sediment-load">
+              <sediment-load>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS oid
+                          FROM outs AS o
+                          WHERE
+                            o.artifact_id = ${a_id} and o.name='sedimentload_ls'
+                        </dc:statement>
+                        <dc:for-each>
+                          <load description="{$river} {$a_creation} {$collection_name}">
+                            <dc:context>
+                              <dc:statement>
+                                SELECT a.gid         AS aid,
+                                       f.id          AS fid,
+                                       f.name        AS facet_name,
+                                       f.num         AS facet_num,
+                                       f.description AS facet_description
+                                FROM outs AS o, facets AS f, artifacts AS a
+                                WHERE f.name LIKE 'sedimentload%' AND
+                                      f.out_id = o.id         AND
+                                      o.artifact_id = ${a_id} AND
+                                      a.id = ${a_id}
+                              </dc:statement>
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="factory" value="minfo"/>
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
+                                  <dc:attribute name="artifact-id" value="${aid}"/>
+                                  <dc:attribute name="out" value="sedimentload_ls"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </dc:context>
+                          </load>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </sediment-load>
+            </dc:macro>
+
+            <dc:macro name="bedheight-differences">
+              <bedheight-differences>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS oid,
+                                 name AS o_name
+                          FROM outs AS o
+                          WHERE
+                            o.artifact_id = ${a_id} AND
+                            (o.name = 'bed_difference_year' OR
+                             o.name = 'bed_differnece_epoch')
+                        </dc:statement>
+                        <dc:for-each>
+                          <difference description="{$river} {$a_creation} {$collection_name}">
+                            <dc:context>
+                              <dc:statement>
+                                SELECT a.gid         AS aid,
+                                       f.id          AS fid,
+                                       f.name        AS facet_name,
+                                       f.num         AS facet_num,
+                                       f.description AS facet_description
+                                FROM outs AS o, facets AS f, artifacts AS a
+                                WHERE (f.name LIKE 'bedheight_difference.year%' OR
+                                       f.name LIKE 'bedheight_difference.epoch%') AND
+                                      f.out_id = o.id         AND
+                                      o.artifact_id = ${a_id} AND
+                                      a.id = ${a_id}
+                              </dc:statement>
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="factory" value="minfo"/>
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
+                                  <dc:attribute name="artifact-id" value="${aid}"/>
+                                  <dc:choose>
+                                    <dc:when test="dc:contains($o_name, 'bed_difference_year')">
+                                      <dc:attribute name="out" value="bed_difference_year"/>
+                                    </dc:when>
+                                    <dc:otherwise>
+                                      <dc:attribute name="out" value="bed_difference_epoch"/>
+                                    </dc:otherwise>
+                                  </dc:choose>
+                                </dc:element>
+                              </dc:for-each>
+                            </dc:context>
+                          </difference>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </bedheight-differences>
+            </dc:macro>
+
+            <dc:macro name="fixings-year">
+              <fixings>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT ou.id AS oid
+                          FROM outs AS ou, artifacts AS ar
+                          WHERE
+                            ar.state = 'state.fix.vollmer.compute' AND
+                            ou.name = 'longitudinal_section'
+                        </dc:statement>
+                        <dc:for-each>
+                          <fix description="{$river} {$a_id} {$a_creation} {$collection_name}">
+                            <dc:context>
+                              <dc:statement>
+                                SELECT a.gid         AS aid,
+                                       f.id          AS fid,
+                                       f.name        AS facet_name,
+                                       f.num         AS facet_num,
+                                       f.description AS facet_description
+                                FROM outs AS o, facets AS f, artifacts AS a
+                                WHERE f.name = 'longitudinal_section.w' AND
+                                      f.out_id = o.id         AND
+                                      o.artifact_id = ${a_id} AND
+                                      a.id = ${a_id}
+                              </dc:statement>
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="factory" value="fixanalysis"/>
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
+                                  <dc:attribute name="artifact-id" value="${aid}"/>
+                                  <dc:attribute name="out" value="longitudinal_section"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </dc:context>
+                          </fix>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </fixings>
+            </dc:macro>
+
+            <dc:macro name="waterlevels-discharge">
+              <waterlevels-discharge>
+                <dc:for-each>
+                  <dc:context>
+                    <dc:call-macro name="range-filter">
+                      <dc:context>
+                        <dc:statement>
+                          SELECT id AS oid
+                          FROM outs AS o
+                          WHERE
+                            o.artifact_id = ${a_id} AND
+                            o.name = 'discharge_longitudinal_section'
+                        </dc:statement>
+                        <dc:for-each>
+                          <discharge description="{$oid} {$river} {$a_id} {$a_creation} {$collection_name}">
+                            <dc:context>
+                              <dc:statement>
+                                SELECT a.gid         AS aid,
+                                       f.id          AS fid,
+                                       f.name        AS facet_name,
+                                       f.num         AS facet_num,
+                                       f.description AS facet_description
+                                FROM outs AS o, facets AS f, artifacts AS a
+                                WHERE f.name = 'discharge_longitudinal_section.w' AND
+                                      f.out_id = o.id         AND
+                                      o.artifact_id = ${a_id} AND
+                                      a.id = ${a_id}
+                              </dc:statement>
+                              <dc:for-each>
+                                <dc:element name="${facet_name}">
+                                  <dc:attribute name="factory" value="winfo"/>
+                                  <dc:attribute name="description" value="${facet_description}"/>
+                                  <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
+                                  <dc:attribute name="artifact-id" value="${aid}"/>
+                                  <dc:attribute name="out" value="longitudinal_section"/>
+                                </dc:element>
+                              </dc:for-each>
+                            </dc:context>
+                          </discharge>
+                        </dc:for-each>
+                      </dc:context>
+                    </dc:call-macro>
+                  </dc:context>
+                </dc:for-each>
+              </waterlevels-discharge>
+            </dc:macro>
+
+            <dc:if test="dc:contains($artifact-outs, 'longitudinal_section') or (dc:contains($artifact-outs, 'discharge_longitudinal_section') or (dc:contains($artifact-outs, 'w_differences')))">
+              <dc:call-macro name="longitudinal"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'fix_deltawt_curve')">
+              <dc:call-macro name="delta-wt"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'longitudinal_section') or (dc:contains($artifact-outs, 'w_differences') or (dc:contains($artifact-outs, 'discharge_longitudinal_section')))">
+              <dc:call-macro name="differences"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'reference_curve')">
+              <dc:call-macro name="reference-curves"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'computed_discharge_curve')">
+              <dc:call-macro name="computed-discharge-curve"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'cross_section')">
+              <dc:call-macro name="waterlevels"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'fix_longitudinal_section_curve')">
+              <dc:call-macro name="longitudinal-section"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'fix_derivate_curve')">
+              <dc:call-macro name="fix-derivate-curve"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'fix_wq_curve')">
+              <dc:call-macro name="fix-wq-curve"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'duration_curve')">
+              <dc:call-macro name="duration-curve"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'waterlevels') or (dc:contains($artifact-outs, 'fix_wq_curve'))">
+              <dc:call-macro name="waterlevels-fix"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'floodmap') or dc:contains($artifact-outs, 'map')">
+              <dc:call-macro name="flood-map"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'bedheight_middle')">
+              <dc:call-macro name="waterlevels-discharge"/>
+              <dc:call-macro name="waterlevels-fix"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'floodmap-hws')">
+              <dc:call-macro name="floodmap-hws-user"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'flow_velocity')">
+              <dc:call-macro name="bedquality-bed"/>
+              <dc:call-macro name="bedquality-load"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'bed_longitudinal_section')">
+              <dc:call-macro name="bedquality-bed"/>
+              <dc:call-macro name="bedquality-load"/>
+              <dc:call-macro name="bedquality-density"/>
+              <dc:call-macro name="bedquality-porosity"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'sedimentload_ls')">
+              <dc:call-macro name="differences"/>
+              <dc:call-macro name="bedheight-differences"/>
+              <dc:call-macro name="flow-velocity"/>
+              <dc:call-macro name="sediment-load"/>
+            </dc:if>
+            <dc:if test="dc:contains($artifact-outs, 'bed_difference_year') or
+                         dc:contains($artifact-outs, 'bed_difference_epoch')">
+              <dc:call-macro name="waterlevels-discharge"/>
+              <dc:call-macro name="bedheight-differences"/>
+              <dc:call-macro name="differences"/>
+              <dc:call-macro name="waterlevels-fix"/>
+              <dc:call-macro name="delta-wt-ls"/>
+            </dc:if>
+          </dc:context>
+        </dc:call-macro>
+
+      </old_calculations>
+
+      <dc:if test="dc:contains($parameters,'load-system')">
+        <dc:comment>
+          Include System specific part when 'load-system' is in parameters.
+          -----------------------------------------------------------------
+        </dc:comment>
+        <dc:call-macro name="load-system"/>
+      </dc:if>
+    </dc:when>
+
+    <dc:otherwise>
+      <dc:comment>
+        Include System specific part only if no user ID is given.
+        ---------------------------------------------------------
+      </dc:comment>
+      <dc:call-macro name="load-system"/>
+    </dc:otherwise>
+  </dc:choose>
+
+</datacage>
+</dc:template>

http://dive4elements.wald.intevation.org