view flys-artifacts/doc/conf/meta-data.xml @ 5510:d4bee6d5c866

merged
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 28 Mar 2013 16:51:32 +0100
parents 23d8f2700b38
children 87dab419b924
line wrap: on
line source
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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:elements>
          <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:elements>
        </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:elements>

        <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:elements>
                  <basedata>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="base_data-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </basedata>
                </dc:elements>
              </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:elements>
                  <basedata>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="base_data-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="wqinterpol"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </basedata>
                </dc:elements>
              </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:elements>
                  <additional>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="additionalsmarks-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </additional>
                </dc:elements>
              </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:elements>
                  <additional>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="additionals-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </additional>
                </dc:elements>
              </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:elements>
                  <relativepoint>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="additionals-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </relativepoint>
                </dc:elements>
              </dc:context>
            </additionals>
          </dc:call-macro>
        </dc:macro>

        <dc:macro name="basedata_2_fixations_wst">
          <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}
                </dc:statement>
                <dc:elements>
                  <fixation>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <!--dc:attribute name="ids" value="fixations-wstv-A-${prot_id}"/-->
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="fixations-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="wqinterpol"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </fixation>
                </dc:elements>
              </dc:context>
            </fixations>
          </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}
                </dc:statement>
                <dc:elements>
                  <fixation>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="fixations-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="wqinterpol"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </fixation>
                </dc:elements>
              </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}
                </dc:statement>
                <dc:elements>
                  <fixation>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="fixations-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </fixation>
                </dc:elements>
              </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}
                </dc:statement>
                <dc:elements>
                  <relativepoint>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="fixations-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </relativepoint>
                </dc:elements>
              </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:elements>
                  <official>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="additionals-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwqkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </official>
                </dc:elements>
              </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:elements>
                  <relativepoint>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="heightmarks_points-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </relativepoint>
                </dc:elements>
              </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:elements>
                  <heightmark>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="heightmarks_points-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </heightmark>
                </dc:elements>
              </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:elements>
                  <heightmark>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="heightmarks_annotations-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="wqinterpol"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </heightmark>
                </dc:elements>
              </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>
              <dc:attribute name="id" value="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:elements>
                  <relativepoint>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:attribute name="db-id" value="${prot_id}"/>
                    <dc:attribute name="factory" value="staticwkms"/>
                    <columns>
                      <dc:context>
                        <dc:call-macro name="SQL-wst_columns_statement"/>
                        <dc:elements>
                          <column>
                            <dc:attribute name="name" value="${prot_column_name}"/>
                            <dc:attribute name="ids" value="flood_protection-wstv-${prot_rel_pos}-${prot_id}"/>
                            <dc:attribute name="factory" value="staticwkms"/>
                            <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                          </column>
                        </dc:elements>
                      </dc:context>
                    </columns>
                  </relativepoint>
                </dc:elements>
              </dc:context>
            </flood_protections>
          </dc:call-macro>
        </dc:macro>

        <dc:macro name="basedata_5_flood-protections">
          <dc:call-macro name="user-range">
            <flood_protections>
              <dc:attribute name="id" value="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:elements>
                  <flood_protection>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:attribute name="db-id" value="${prot_id}"/>
                    <dc:attribute name="factory" value="staticwkms"/>
                    <dc:context>
                      <dc:call-macro name="SQL-wst_columns_statement"/>
                      <dc:elements>
                        <column>
                          <dc:attribute name="name" value="${prot_column_name}"/>
                          <dc:attribute name="ids" value="flood_protection-wstv-${prot_rel_pos}-${prot_id}"/>
                          <dc:attribute name="factory" value="staticwkms"/>
                          <dc:attribute name="info" value="${info} [km ${deffrom} - ${defto}]"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </flood_protection>
                </dc:elements>
              </dc:context>
            </flood_protections>
          </dc:call-macro>
        </dc:macro>

        <dc:macro name="mainvalues">
          <mainvalue>
            <dc:attribute name="factory" value="mainvalue"/>
            <dc:attribute name="ids"     value="${river_id}"/>
          </mainvalue>
          <wmainvalue>
            <dc:attribute name="factory" value="mainvalue"/>
            <dc:attribute name="ids"     value="${river_id}:w"/>
          </wmainvalue>
          <qmainvalue>
            <dc:attribute name="factory" value="mainvalue"/>
            <dc:attribute name="ids"     value="${river_id}:q"/>
          </qmainvalue>
        </dc:macro>

        <dc:macro name="qsectors">
          <qsector>
            <dc:attribute name="factory" value="qsectors"/>
            <dc:attribute name="ids"     value="${river_id}"/>
          </qsector>
        </dc:macro>

        <dc:macro name="annotations">
          <annotation>
            <dc:attribute name="factory" value="annotations"/>
            <dc:attribute name="ids"     value="${river_id}"/>
          </annotation>
        </dc:macro>

        <dc:macro name="annotations_per_type">
          <annotations>
            <dc:context>
              <annotation>
                <dc:attribute name="name"    value="all_annotations"/>
                <dc:attribute name="factory" value="annotations"/>
                <dc:attribute name="ids"     value="${river_id}"/>
              </annotation>
              <dc:statement>
                SELECT id          AS anno_id,
                       name AS anno_description
                FROM annotation_types
              </dc:statement>
              <dc:elements>
                <annotation>
                  <dc:attribute name="name"    value="${anno_description}"/>
                  <dc:attribute name="factory" value="annotations"/>
                  <dc:attribute name="ids"     value="${river_id}:${anno_description}"/>
                </annotation>
             </dc:elements>
            </dc:context>
          </annotations>
        </dc:macro>

        <dc:macro name="cross_sections">
          <dc:call-macro name="user-range">
            <cross_sections>
              <dc:attribute name="id" value="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:elements>
                  <cross_section>
                    <dc:attribute name="name" value="${prot_description}"/>
                    <dc:attribute name="ids" value="${prot_id}"/>
                    <dc:attribute name="factory" value="crosssections"/>
                  </cross_section>
                </dc:elements>
              </dc:context>
            </cross_sections>
          </dc:call-macro>
        </dc:macro>

        <dc:macro name="hyks">
          <dc:call-macro name="user-range">
            <hyks>
              <dc:attribute name="id" value="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:elements>
                  <hyk>
                    <dc:attribute name="name" value="${hyk_description}"/>
                    <dc:attribute name="ids" value="${hyk_id}"/>
                    <dc:attribute name="factory" value="hyk"/>
                  </hyk>
                </dc:elements>
              </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:elements>
                  <flow_velocity_measurement>
                    <dc:attribute name="name" value="${fvmd}"/>
                    <dc:attribute name="ids" value="${fvmid}"/>
                    <dc:attribute name="factory" value="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:elements>
                           <measurement_value>
                             <dc:attribute name="name" value="${id}-${description}-${station}-${datetime}"/>
                             <dc:attribute name="ids" value="${id}"/>
                             <dc:attribute name="factory" value="flowvelocity"/>
                           </measurement_value>
                         </dc:elements>
                    </dc:context>
                  </flow_velocity_measurement>
              </dc:elements>
          </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:elements>
                <height>
                  <dc:attribute name="factory" value="bedheight"/>
                  <dc:attribute name="ids" value="bedheight-singlevalues-${bedh_id}-${bedh_year}"/>
                  <dc:attribute name="description" value="${bedh_descr}"/>
                </height>
              </dc:elements>
            </dc:context>
          </soundings_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: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:if test="dc:contains($artifact-outs, 'flow_velocity')">
               <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"/>
              <dc:call-macro name="flow_velocity_measurements"/>
            </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: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 (dc:contains($parameters, 'recommended'))">
              <!--dc:call-macro name="basedata_2_fixations_wst"/-->
        </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:elements>
                    <gauge>
                      <dc:attribute name="name" value="${gauge_name}"/>
                      <dc:attribute name="db-id" value="${gauge_id}"/>
                      <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="${gauge_name}"/>
                    </gauge>
                    <!--
                    <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:elements>
                          <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:elements>
                      </dc:context>
                    </gauge>
                    -->
                  </dc:elements>
                </dc:context>
              </discharge_table_gauge>

            </discharge_table_nn>

          <dc:call-macro name="basedata_2_fixations_wst"/>

          <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:elements>
                    <gauge>
                      <dc:attribute name="name" value="${gauge_name}"/>
                      <dc:attribute name="db-id" value="${gauge_id}"/>
                      <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="${gauge_name}"/>
                    </gauge>
                  </dc:elements>
                </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')">
            <floodmap>
            <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:otherwise>
                  <dc:call-macro name="flood-map-complete"/>
                </dc:otherwise>
            </dc:choose>
            </floodmap>
            <dc:if test="dc:contains($parameters, 'hws')">
              <hws>
                <dc:call-macro name="flood-map-hws-lines" />
                <dc:call-macro name="flood-map-hws-points" />
              </hws>
            </dc:if>

            <dc:macro name="flood-map-recommended">
              <dc:comment>
                 FIXME: Following two macros look identical to me.
              </dc:comment>
                <kilometrage>
                    <riveraxis>
                        <dc:attribute name="factory" value="riveraxis"/>
                        <dc:attribute name="ids" value="${river_id}"/>
                    </riveraxis>
                </kilometrage>
                <rastermap>
                    <background>
                        <dc:attribute name="factory" value="wmsbackground"/>
                        <dc:attribute name="ids" value="${river_id}"/>
                    </background>
                </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,
                           d.projection || ' | ' || t.start_time || ' - ' || t.stop_time AS info
                           FROM dem d
                           JOIN ranges r ON d.range_id = r.id
                           JOIN time_intervals t ON d.time_interval_id = t.id
                           WHERE d.river_id = ${river_id}
                  </dc:statement>
                  <dc:elements>
                      <dem>
                        <dc:attribute name="factory" value="demfactory"/>
                        <dc:attribute name="ids" value="${dem_id}"/>
                        <dc:attribute name="name" value="${name}"/>
                        <dc:attribute name="info" value="${info}"/>
                      </dem>
                  </dc:elements>
                </dc:context>
              </dems>
            </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>
                <lines>
                  <official>
                    <Durchlass>
                      <dc:elements filter="$hws_kind=1 and $hws_official=1">
                          <hws>
                            <dc:attribute name="factory" value="hwsfactory"/>
                            <dc:attribute name="name" value="${hws_name}"/>
                          </hws>
                      </dc:elements>
                    </Durchlass>
                    <Damm>
                      <dc:elements filter="$hws_kind=2 and $hws_official=1">
                          <hws>
                            <dc:attribute name="factory" value="hwsfactory"/>
                            <dc:attribute name="name" value="${hws_name}"/>
                          </hws>
                      </dc:elements>
                    </Damm>
                    <Graben>
                      <dc:elements filter="$hws_kind=3 and $hws_official=1">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_name}"/>
                        </hws>
                      </dc:elements>
                    </Graben>
                  </official>
                  <inofficial>
                    <Durchlass>
                      <dc:elements filter="$hws_kind=1 and $hws_official=0">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_name}"/>
                        </hws>
                      </dc:elements>
                    </Durchlass>
                    <Damm>
                      <dc:elements filter="$hws_kind=2 and $hws_official=0">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_name}"/>
                        </hws>
                      </dc:elements>
                    </Damm>
                    <Graben>
                      <dc:elements filter="$hws_kind=3 and $hws_official=0">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_name}"/>
                        </hws>
                      </dc:elements>
                    </Graben>
                  </inofficial>
                </lines>
              </dc:context>
            </dc:macro>
            <dc:macro name="flood-map-hws-points">
              <dc:context>
                <dc:statement>
                  SELECT DISTINCT
                         name AS hws_points_name,
                         official AS hws_points_official,
                         kind_id AS hws_points_kind
                  FROM hws_points
                  WHERE river_id = ${river_id}
                </dc:statement>
                <points>
                  <official>
                    <Durchlass>
                      <dc:elements filter="$hws_points_kind=1 and $hws_points_official=1">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_points_name}"/>
                        </hws>
                      </dc:elements>
                    </Durchlass>
                    <Damm>
                      <dc:elements filter="$hws_points_kind=2 and $hws_points_official=1">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_points_name}"/>
                        </hws>
                      </dc:elements>
                    </Damm>
                    <Graben>
                      <dc:elements filter="$hws_kind=3 and $hws_official=1">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_points_name}"/>
                        </hws>
                      </dc:elements>
                    </Graben>
                  </official>
                  <inofficial>
                    <Durchlass>
                      <dc:elements filter="$hws_points_kind=1 and $hws_points_official=0">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_points_name}"/>
                        </hws>
                      </dc:elements>
                    </Durchlass>
                    <Damm>
                      <dc:elements filter="$hws_points_kind=2 and $hws_points_official=0">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_points_name}"/>
                        </hws>
                      </dc:elements>
                    </Damm>
                    <Graben>
                      <dc:elements filter="$hws_points_kind=3 and $hws_points_official=0">
                        <hws>
                          <dc:attribute name="factory" value="hwsfactory"/>
                          <dc:attribute name="name" value="${hws_points_name}"/>
                        </hws>
                      </dc:elements>
                    </Graben>
                  </inofficial>
                </points>
              </dc:context>
            </dc:macro>
            <dc:macro name="flood-map-km">
              <dc:context>
                <dc:statement>
                  SELECT count(*) as km_exists
                  FROM river_axes_km WHERE river_id = ${river_id}
                </dc:statement>
                 <dc:elements>
                  <dc:if test="$km_exists>0">
                    <kilometrage>
                      <dc:attribute name="factory" value="wmskmfactory"/>
                      <dc:attribute name="ids" value="${river_id}"/>
                    </kilometrage>
                  </dc:if>
                </dc:elements>
              </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:elements>
                    <actual>
                      <dc:attribute name="description" value="${kind_name}"/>
                      <dc:attribute name="factory" value="wmsqpsfactory"/>
                      <dc:attribute name="ids" value="${river_id};${kind_name};${kind_id}"/>
                    </actual>
                  </dc:elements>
                </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:elements>
                      <misc-qps>
                        <dc:attribute name="description" value="${layer_name}"/>
                        <dc:attribute name="factory" value="wmsqpsfactory"/>
                        <dc:attribute name="ids" value="${river_id};${layer_name};${kind_id}"/>
                      </misc-qps>
                    </dc:elements>
                  </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:elements>
                    <actual factory="riveraxis">
                      <dc:attribute name="description" value="${kind_name}"/>
                      <dc:attribute name="ids" value="${river_id};${kind_name};${kind_id}"/>
                    </actual>
                  </dc:elements>
                </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:elements>
                      <misc-axis factory="riveraxis">
                        <dc:attribute name="description" value="${layer_name}"/>
                        <dc:attribute name="ids" value="${river_id};${layer_name};${kind_id}"/>
                      </misc-axis>
                    </dc:elements>
                  </other>
                </dc:if>
              </dc:context>
            </dc:macro>
            <dc:macro name="flood-map-hydr-boundaries">
              <hydr_boundaries_lines>
                <dc:call-macro name="flood-map-hydr-boundaries-lines"/>
              </hydr_boundaries_lines>
              <hydr_boundaries_polygons>
                <dc:call-macro name="flood-map-hydr-boundaries-poly"/>
              </hydr_boundaries_polygons>
            </dc:macro>
            <dc:macro name="flood-map-hydr-boundaries-lines">
              <bfg>
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists, name as name
                    FROM hydr_boundaries WHERE river_id = ${river_id} AND kind = 1 GROUP BY name
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <hydrboundary>
                        <dc:attribute name="factory" value="wmshydrboundariesfactory"/>
                        <dc:attribute name="ids" value="${river_id};${name}"/>
                        <dc:attribute name="name" value="${name}"/>
                      </hydrboundary>
                    </dc:if>
                  </dc:elements>
                </dc:context>
              </bfg>
              <land>
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists, name as name
                    FROM hydr_boundaries WHERE river_id = ${river_id} AND kind = 2 GROUP BY name
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <hydrboundary>
                        <dc:attribute name="factory" value="wmshydrboundariesfactory"/>
                        <dc:attribute name="ids" value="${river_id};${name}"/>
                        <dc:attribute name="name" value="${name}"/>
                      </hydrboundary>
                    </dc:if>
                  </dc:elements>
                </dc:context>
              </land>
            </dc:macro>
            <dc:macro name="flood-map-hydr-boundaries-poly">
              <bfg>
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists, name as name
                    FROM hydr_boundaries_poly WHERE river_id = ${river_id} AND kind = 1 GROUP BY name
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <hws>
                        <dc:attribute name="factory" value="wmshydrboundariespolyfactory"/>
                        <dc:attribute name="ids" value="${river_id};${name}"/>
                        <dc:attribute name="name" value="${name}"/>
                      </hws>
                    </dc:if>
                  </dc:elements>
                </dc:context>
              </bfg>
              <land>
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists, name as name
                    FROM hydr_boundaries_poly WHERE river_id = ${river_id} AND kind = 2 GROUP BY name
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <hws>
                        <dc:attribute name="factory" value="wmshydrboundariespolyfactory"/>
                        <dc:attribute name="ids" value="${river_id};${name}"/>
                        <dc:attribute name="name" value="${name}"/>
                      </hws>
                    </dc:if>
                  </dc:elements>
                </dc:context>
              </land>
            </dc:macro>
            <dc:macro name="flood-map-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:elements>
                    <floody factory="wmsfloodplainfactory"
                      description="{$kind_name}"
                      ids="{$river_id};{$kind_name};{$kind_id}"/>
                  </dc:elements>
                </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:elements>
                      <floody factory="wmsfloodplainfactory"
                        description="{$layer_name}"
                        ids="{$river_id};{$layer_name};{$kind_id}"/>
                    </dc:elements>
                  </other>
                </dc:if>
              </dc:context>
            </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>
              <Durchlass>
                <dc:elements filter="$hws_kind=1">
                  <hws>
                    <dc:attribute name="factory" value="wmshwslinesfactory"/>
                    <dc:attribute name="ids" value="${river_id};${hws_name}"/>
                    <dc:attribute name="name" value="${hws_name}"/>
                  </hws>
                </dc:elements>
              </Durchlass>
              <Damm>
                <dc:elements filter="$hws_kind=2">
                  <hws>
                    <dc:attribute name="factory" value="wmshwslinesfactory"/>
                    <dc:attribute name="ids" value="${river_id};${hws_name}"/>
                    <dc:attribute name="name" value="${hws_name}"/>
                  </hws>
                </dc:elements>
              </Damm>
              <Graben>
                <dc:elements filter="$hws_kind=3">
                  <hws>
                    <dc:attribute name="factory" value="wmshwslinesfactory"/>
                    <dc:attribute name="ids" value="${river_id};${hws_name}"/>
                    <dc:attribute name="name" value="${hws_name}"/>
                  </hws>
                </dc:elements>
              </Graben>
            </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:elements>
                      <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>
                          <dc:attribute name="description" value="${fed_name}"/>
                          <dc:call-macro name="hwslines_by_kind"/>
                        </fedstate>
                      </dc:context>
                    </dc:elements>
                  </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:elements>
                      <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>
                          <dc:attribute name="description" value="${fed_name}"/>
                          <dc:call-macro name="hwslines_by_kind"/>
                        </fedstate>
                      </dc:context>
                    </dc:elements>
                  </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>
              <Durchlass>
                <dc:elements filter="$hws_kind=1">
                  <hws>
                    <dc:attribute name="factory" value="wmshwspointsfactory"/>
                    <dc:attribute name="ids" value="${river_id};${hws_name}"/>
                    <dc:attribute name="name" value="${hws_name}"/>
                  </hws>
                </dc:elements>
              </Durchlass>
              <Damm>
                <dc:elements filter="$hws_kind=2">
                  <hws>
                    <dc:attribute name="factory" value="wmshwspointsfactory"/>
                    <dc:attribute name="ids" value="${river_id};${hws_name}"/>
                    <dc:attribute name="name" value="${hws_name}"/>
                  </hws>
                </dc:elements>
              </Damm>
              <Graben>
                <dc:elements filter="$hws_kind=3">
                  <hws>
                    <dc:attribute name="factory" value="wmshwspointsfactory"/>
                    <dc:attribute name="ids" value="${river_id};${hws_name}"/>
                    <dc:attribute name="name" value="${hws_name}"/>
                  </hws>
                </dc:elements>
              </Graben>
            </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:elements>
                      <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>
                          <dc:attribute name="description" value="${fed_name}"/>
                          <dc:call-macro name="hwspoints_by_kind"/>
                        </fedstate>
                      </dc:context>
                    </dc:elements>
                  </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:elements>
                      <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>
                          <dc:attribute name="description" value="${fed_name}"/>
                          <dc:call-macro name="hwspoints_by_kind"/>
                        </fedstate>
                      </dc:context>
                    </dc:elements>
                  </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:elements>
                <buildings>
                  <dc:attribute name="description" value="${building_kind}"/>
                  <dc:attribute name="factory" value="wmsbuildingsfactory"/>
                  <dc:attribute name="ids" value="${river_id};${building_kind};${building_kind_id}"/>
                </buildings>
              </dc:elements>
            </dc:context>
            <dc:context>
              <dc:statement>
                SELECT DISTINCT
                b.kind_id AS building_kind_id,
                b.name AS building_name,
                bk.name AS building_kind
                FROM buildings b
                JOIN building_kinds bk ON b.kind_id = bk.id
                WHERE river_id = ${river_id}
                AND kind_id = 0 OR
                kind_id IS NULL
              </dc:statement>
              <dc:elements>
                <dc:element name="${building_kind}">
                  <dc:elements>
                    <buildings>
                      <dc:attribute name="description" value="${building_name}"/>
                      <dc:attribute name="factory" value="wmsbuildingsfactory"/>
                      <dc:attribute name="ids" value="${river_id};${building_name}"/>
                    </buildings>
                  </dc:elements>
                </dc:element>
              </dc:elements>
            </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:elements>
                    <jetty>
                      <dc:attribute name="description" value="${jetty_kind}"/>
                      <dc:attribute name="factory" value="wmsjettiesfactory"/>
                      <dc:attribute name="ids" value="${river_id};${jetty_kind};${jetty_kind_id}"/>
                    </jetty>
                  </dc:elements>
                </jetties>
              </dc:if>
            </dc:context>
          </dc:macro>
            <dc:macro name="flood-map-fixpoints">
              <dc:context>
                <dc:statement>
                  SELECT count(*) as km_exists, name as name
                  FROM fixpoints WHERE river_id = ${river_id} GROUP BY name
                </dc:statement>
                 <dc:elements>
                  <dc:if test="$km_exists>0">
                    <fixpoint>
                      <dc:attribute name="factory" value="wmsfixpointsfactory"/>
                      <dc:attribute name="ids" value="${river_id};${name}"/>
                      <dc:attribute name="name"  value="${name}"/>
                    </fixpoint>
                  </dc:if>
                </dc:elements>
              </dc:context>
            </dc:macro>
            <dc:macro name="flood-map-gaugelocations">
              <dc:context>
                <dc:statement>
                  SELECT count(*) as km_exists, name as name
                  FROM gauge_location WHERE river_id = ${river_id} GROUP BY name
                </dc:statement>
                 <dc:elements>
                  <dc:if test="$km_exists>0">
                    <gaugelocation>
                      <dc:attribute name="factory" value="wmsgaugelocationfactory"/>
                      <dc:attribute name="ids" value="${river_id};${name}"/>
                      <dc:attribute name="name"  value="${name}"/>
                    </gaugelocation>
                  </dc:if>
                </dc:elements>
              </dc:context>
            </dc:macro>
            <dc:macro name="flood-map-uesk">
              <uesk>
                <calculations>
                  <current>
                    <bfg>
                      <dc:context>
                        <dc:statement>
                            SELECT count(*) as uesg_exist, name as name
                            FROM floodmaps
                            WHERE river_id = ${river_id} AND kind = 111
                            GROUP BY name, kind
                        </dc:statement>
                        <dc:elements>
                          <dc:if test="$uesg_exist>0">
                            <floodmaps>
                              <dc:attribute name="factory" value="wmsfloodmapsfactory"/>
                              <dc:attribute name="ids" value="${river_id};${name}"/>
                              <dc:attribute name="name" value="${name}"/>
                            </floodmaps>
                          </dc:if>
                        </dc:elements>
                      </dc:context>
                    </bfg>
                    <land>
                      <dc:context>
                        <dc:statement>
                            SELECT count(*) as uesg_exist, name as name
                            FROM floodmaps
                            WHERE river_id = ${river_id} AND kind = 112
                            GROUP BY name, kind
                        </dc:statement>
                        <dc:elements>
                          <dc:if test="$uesg_exist>0">
                            <floodmaps>
                              <dc:attribute name="factory" value="wmsfloodmapsfactory"/>
                              <dc:attribute name="ids" value="${river_id};${name}"/>
                              <dc:attribute name="name" value="${name}"/>
                            </floodmaps>
                          </dc:if>
                        </dc:elements>
                      </dc:context>
                    </land>
                  </current>
                  <potentiel>
                    <bfg>
                      <dc:context>
                        <dc:statement>
                            SELECT count(*) as uesg_exist, name as name
                            FROM floodmaps
                            WHERE river_id = ${river_id} AND kind = 121
                            GROUP BY name, kind
                        </dc:statement>
                        <dc:elements>
                          <dc:if test="$uesg_exist>0">
                            <floodmaps>
                              <dc:attribute name="factory" value="wmsfloodmapsfactory"/>
                              <dc:attribute name="ids" value="${river_id};${name}"/>
                              <dc:attribute name="name" value="${name}"/>
                            </floodmaps>
                          </dc:if>
                        </dc:elements>
                      </dc:context>
                    </bfg>
                    <land>
                      <dc:context>
                        <dc:statement>
                            SELECT count(*) as uesg_exist, name as name
                            FROM floodmaps
                            WHERE river_id = ${river_id} AND kind = 122
                            GROUP BY name, kind
                        </dc:statement>
                        <dc:elements>
                          <dc:if test="$uesg_exist>0">
                            <floodmaps>
                              <dc:attribute name="factory" value="wmsfloodmapsfactory"/>
                              <dc:attribute name="ids" value="${river_id};${name}"/>
                              <dc:attribute name="name" value="${name}"/>
                            </floodmaps>
                          </dc:if>
                        </dc:elements>
                      </dc:context>
                    </land>
                  </potentiel>
                </calculations>
              </uesk>
            </dc:macro>

            <dc:macro name="flood-map-catchments">
              <dc:attribute name="factory" value="externalwmsfactory"/>
              <dc:attribute name="ids" value="http://geoportal.bafg.de/wmsproxy/INSPIRE/DrainageBasin;HY.PHYSICALWATERS.CATCHMENTS;Einzugsgebiet"/>
            </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="flood-map-complete">
                <buildings>
                  <dc:call-macro name="flood-map-buildings"/>
                </buildings>
                <catchments>
                  <dc:call-macro name="flood-map-catchments"/>
                </catchments>
                <!-- TODO: HW-Marken -->
                <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"/>
                <gaugelocations>
                  <dc:call-macro name="flood-map-gaugelocations"/>
                </gaugelocations>
                <background>
                  <dc:attribute name="factory" value="wmsbackground"/>
                  <dc:attribute name="ids" value="${river_id}"/>
                </background>
              </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:elements>
                <height>
                  <dc:attribute name="factory" value="bedheight"/>
                  <dc:attribute name="ids" value="bedheight-single-${bedh_id}-${bedh_year}"/>
                  <dc:attribute name="description" value="${bedh_descr}"/>
                </height>
              </dc:elements>
            </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:elements>
                <height>
                  <dc:attribute name="factory" value="bedheight"/>
                  <dc:attribute name="ids" value="bedheight-epoch-${bedh_id}-${bedh_interval_id}"/>
                  <dc:attribute name="description" value="${bedh_descr}"/>
                </height>
              </dc:elements>
            </dc:context>
          </epoch>
        </dc:macro>
      </dc:elements>
    </dc:context>
  </dc:macro>

  <dc:choose>
    <dc:comment>
      User specific part
      ------------------
    </dc:comment>
    <dc:when test="dc:contains($parameters, 'user-id')">


    <old_calculations>
      <!--      <dc:macro name="load-user">-->
        <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:elements>
                   <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:elements>
               </dc:macro>
 
        <!-- OFFICIAL LINES -->
        <dc:if test="dc:contains($artifact-outs, 'longitudinal_section')">
          <dc:comment comment=".wst -------------------------------"/>
          <officiallines>
            <dc:elements>
                <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:elements>
                      <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:elements>
                          <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:elements>
                      </dc:context>
                  </dc:elements>
                </dc:context>
          </dc:elements>
          </officiallines>
        </dc:if>
        <!-- END OFFICIAL LINES -->

        <dc:comment>
          SHOW W-DIFFERENCES
        </dc:comment>

       <dc:macro name="differences">
          <differences>
            <dc:elements>
                <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:elements>
                          <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:elements>
                      </dc:context>
                    </dc:call-macro>
                </dc:context>
            </dc:elements>
          </differences>
        </dc:macro>

        <dc:comment>
          SHOW REFERENCE CURVE
        </dc:comment>


        <dc:macro name="reference-curves">
          <reference_curves>
            <dc:elements>
                <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:elements>
                          <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:elements>
                      </dc:context>
                    </dc:call-macro>
                </dc:context>
            </dc:elements>
          </reference_curves>
        </dc:macro>

        <dc:comment>
          SHOW COMPUTED DISCHARGE CURVES
        </dc:comment>

        <dc:macro name="computed-discharge-curve">
          <computed_discharge_curves>
            <dc:elements>
                <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:elements>
                          <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:elements>
                      </dc:context>
                    </dc:call-macro>
                </dc:context>
            </dc:elements>
          </computed_discharge_curves>
        </dc:macro>

        <dc:comment>
          CROSS SECTION
        </dc:comment>


        <dc:macro name="waterlevels">
          <waterlevels>
            <dc:elements>
              <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:elements>
                         <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>
                             <dc:attribute name="description" value="${river} ${a_creation}"/>
                             <dc:elements>
                               <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:elements>
                           </longitudinal_section_columns>
                         </dc:context>
                       </dc:elements>
                     </dc:context>
                   </dc:call-macro>
               </dc:context>
             </dc:elements>
          </waterlevels>
        </dc:macro>


        <dc:macro name="longitudinal">
          <waterlevels>
            <dc:elements>
              <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:elements>
                       <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>
                             <dc:attribute name="description" value="${river} ${a_creation}"/>
                             <dc:elements>
                               <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:elements>
                         </longitudinal_section_columns>
                       </dc:context>
                     </dc:elements>
                   </dc:context>
                 </dc:call-macro>
               </dc:context>
             </dc:elements>
          </waterlevels>
        </dc:macro>


        <dc:macro name="longitudinal-section">
          <waterlevels>
            <dc:elements>
              <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:elements>
                     <dc:context>
                     <!-- average und deviation ls_0 . ls_1 ...-->
                       <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>
                         <dc:attribute name="description" value="${river} ${a_creation} ${collection_name}"/>
                         <dc:elements>
                           <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:elements>
                       </waterlevels>
                     </dc:context>
                   </dc:elements>
                  </dc:context>
                </dc:call-macro>
                </dc:context>
             </dc:elements>
          </waterlevels>
        </dc:macro>

        <dc:macro name="delta-wt">
          <waterlevels>
            <dc:elements>
              <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:elements>
                     <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>
                         <dc:attribute name="description" value="${river} ${a_creation} ${collection_name}"/>
                         <dc:elements>
                           <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:elements>
                       </waterlevels>
                     </dc:context>
                   </dc:elements>
                  </dc:context>
                </dc:call-macro>
                </dc:context>
             </dc:elements>
          </waterlevels>
        </dc:macro>


        <dc:macro name="fix-derivate-curve">
          <waterlevels>
            <dc:elements>
              <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:elements>
                     <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>
                         <dc:attribute name="description" value="${river} ${a_creation} ${collection_name}"/>
                         <dc:elements>
                           <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:elements>
                       </waterlevels>
                     </dc:context>
                   </dc:elements>
                  </dc:context>
                </dc:call-macro>
                </dc:context>
             </dc:elements>
          </waterlevels>
        </dc:macro>


        <dc:macro name="fix-wq-curve">
          <waterlevels>
            <dc:elements>
              <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:elements>
                     <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>
                         <dc:attribute name="description" value="${river} ${a_creation} ${collection_name}"/>
                         <dc:elements>
                           <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:elements>
                       </waterlevels>
                     </dc:context>
                   </dc:elements>
                  </dc:context>
                </dc:call-macro>
                </dc:context>
             </dc:elements>
          </waterlevels>
        </dc:macro>


        <dc:macro name="duration-curve">
          <computed_discharge_curves>
            <dc:elements>
                <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:elements>
                          <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:elements>
                      </dc:context>
                    </dc:call-macro>
                </dc:context>
            </dc:elements>
          </computed_discharge_curves>
        </dc:macro>

        <dc:comment>
           WATERLEVELS - ONLY SHOW Ws
        </dc:comment>

        <!-- TODO doesnt work nicely for fix/wq-diags. -->

        <dc:macro name="waterlevels-fix">
          <waterlevels>
            <dc:elements>
              <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:elements>
                     <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>
                         <dc:attribute name="description" value="${river} ${a_creation} ${collection_name}"/>
                         <dc:elements>
                           <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:elements>
                       </waterlevels>
                     </dc:context>
                   </dc:elements>
                  </dc:context>
                </dc:call-macro>
                </dc:context>
             </dc:elements>
          </waterlevels>
        </dc:macro>

        <dc:comment>
          SHOW FLOODMAPS
        </dc:comment>


        <dc:macro name="flood-map">
          <floodmap>
            <dc:elements>
                <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:elements>
                          <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:elements>
                      </dc:context>
                  </dc:call-macro>
                </dc:context>
            </dc:elements>
          </floodmap>
        </dc:macro>

        <dc:comment>
          MINFO bedheight difference
        </dc:comment>

        <dc:macro name="bed-difference">
          <fix_longitudinal_section_curve>
            <dc:elements>
                <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 = 'fix_sector_average_ls_0' or f.name = 'fix_sector_average_ls_1' or f.name = 'fix_sector_average_ls_2'
                                 or f.name = 'fix_sector_average_ls_3' or f.name = 'fix_analysis_events_ls' or f.name = 'fix_reference_events_ls')
                                and f.out_id = o.id and o.artifact_id = ${a_id} and a.id = ${a_id}
                        </dc:statement>
                        <fix_longitudinal_section_curve>
                            <dc:attribute name="description" value="${river} ${a_creation} ${collection_name}"/>
                            <dc:elements>
                            <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="fix_longitudinal_section_curve"/>
                            </dc:element>
                            </dc:elements>
                        </fix_longitudinal_section_curve>
                        </dc:context>
                    </dc:call-macro>
                </dc:context>
            </dc:elements>
          </fix_longitudinal_section_curve>
        </dc:macro>

        <dc:comment>
          MINFO bedheight middle
        </dc:comment>

        <dc:macro name="bed-height">
          <fix_vollmer_wq_curve>
            <dc:elements>
                <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>
                            <dc:attribute name="description" value="${river} ${a_creation} ${collection_name}"/>
                            <dc:elements>
                                <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:elements>
                        </fix_vollmer_wq_curve>
                        </dc:context>
                    </dc:call-macro>
                </dc:context>
            </dc:elements>
          </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:elements>
                      <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:elements>
                            <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:elements>
                        </own-hws>
                      </dc:context>
                    </dc:elements>
                  </dc:context>
        </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, 'bed_difference_year') or dc:contains($artifact-outs, 'bed_difference_height_year')">
          <dc:call-macro name="bed-difference"/>
        </dc:if>
        <dc:if test="dc:contains($artifact-outs, 'bedheight_middle')">
          <dc:call-macro name="bed-height"/>
        </dc:if>
        <dc:if test="dc:contains($artifact-outs, 'floodmap-hws')">
          <dc:call-macro name="floodmap-hws-user"/>
        </dc:if>
      </dc:context>
  </dc:call-macro>

      </old_calculations>


      <dc:comment>
        Include System specific part when 'load-system' is in parameters.
        -----------------------------------------------------------------
      </dc:comment>
      <dc:choose>
        <dc:when test="dc:contains($parameters,'load-system')">
          <dc:call-macro name="load-system"/>
        </dc:when>
      </dc:choose>
    </dc:when>


    <dc:comment>
      Include System specific part only if no user ID is given.
      ---------------------------------------------------------
    </dc:comment>
    <dc:otherwise>
        <dc:call-macro name="load-system"/>
    </dc:otherwise>
  </dc:choose>
</datacage>
</dc:template>

http://dive4elements.wald.intevation.org