view flys-artifacts/doc/conf/meta-data.xml @ 2689:3ab7b593c6e5

Show HYKS in datacage also in non-recommendation mode. flys-artifacts/trunk@4391 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 11 May 2012 12:14:36 +0000
parents 14188f8daefb
children 15c6f79ca3e2
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: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:comment comment=" BASEDATA ---------------------------"/>
            <basedata>
              <dc:context>
                <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:statement>
                        SELECT id       AS prot_column_id,
                               name     AS prot_column_name,
                               position AS prot_rel_pos
                        FROM wst_columns WHERE wst_id = ${prot_id}
                        ORDER by position
                      </dc: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"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </basedata>
                </dc:elements>
              </dc:context>
            </basedata>
        </dc:macro>
        <dc:macro name="basedata_0_wq">
            <dc:comment comment=" BASEDATA ---------------------------"/>
            <basedata>
              <dc:context>
                <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:statement>
                        SELECT id       AS prot_column_id,
                               name     AS prot_column_name,
                               position AS prot_rel_pos
                        FROM wst_columns WHERE wst_id = ${prot_id}
                        ORDER by position
                      </dc: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"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </basedata>
                </dc:elements>
              </dc:context>
            </basedata>
        </dc:macro>

        <dc:macro name="basedata_1_additionals">
            <dc:comment comment=".ZUS -------------------------------"/>
            <additionals>
              <dc:context>
                <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:statement>
                        SELECT id       AS prot_column_id,
                               name     AS prot_column_name,
                               position AS prot_rel_pos
                        FROM wst_columns WHERE wst_id = ${prot_id}
                        ORDER by position
                      </dc: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"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </additional>
                </dc:elements>
              </dc:context>
            </additionals>
        </dc:macro>

        <dc:macro name="basedata_2_fixations_wst">
          <fixations>
            <dc:context>
              <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:statement>
                      SELECT id       AS prot_column_id,
                             name     AS prot_column_name,
                             position AS prot_rel_pos
                      FROM wst_columns WHERE wst_id = ${prot_id}
                      ORDER by position
                    </dc: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"/>
                      </column>
                    </dc:elements>
                  </dc:context>
                </fixation>
              </dc:elements>
            </dc:context>
          </fixations>
        </dc:macro>

        <dc:macro name="basedata_2_fixations_wqkms">
          <fixations>
            <dc:context>
              <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:statement>
                      SELECT id       AS prot_column_id,
                             name     AS prot_column_name,
                             position AS prot_rel_pos
                      FROM wst_columns WHERE wst_id = ${prot_id}
                      ORDER by position
                    </dc: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"/>
                      </column>
                    </dc:elements>
                  </dc:context>
                </fixation>
              </dc:elements>
            </dc:context>
          </fixations>
        </dc:macro>

        <dc:macro name="basedata_2_fixations">
          <fixations>
            <dc:context>
              <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:statement>
                      SELECT id       AS prot_column_id,
                             name     AS prot_column_name,
                             position AS prot_rel_pos
                      FROM wst_columns WHERE wst_id = ${prot_id}
                      ORDER by position
                    </dc: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"/>
                      </column>
                    </dc:elements>
                  </dc:context>
                </fixation>
              </dc:elements>
            </dc:context>
          </fixations>
        </dc:macro>

        <dc:macro name="basedata_4_heightmarks-points">
          <heightmarks>
            <dc:context>
              <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:statement>
                      SELECT id       AS prot_column_id,
                             name     AS prot_column_name,
                             position AS prot_rel_pos
                      FROM wst_columns WHERE wst_id = ${prot_id}
                      ORDER by position
                    </dc: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"/>
                      </column>
                    </dc:elements>
                  </dc:context>
                </heightmark>
              </dc:elements>
            </dc:context>
          </heightmarks>
        </dc:macro>

        <dc:macro name="basedata_4_heightmarks-wq">
          <heightmarks>
            <dc:context>
              <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:statement>
                      SELECT id       AS prot_column_id,
                             name     AS prot_column_name,
                             position AS prot_rel_pos
                      FROM wst_columns WHERE wst_id = ${prot_id}
                      ORDER by position
                    </dc: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"/>
                      </column>
                    </dc:elements>
                  </dc:context>
                </heightmark>
              </dc:elements>
            </dc:context>
          </heightmarks>
        </dc:macro>

        <dc:macro name="basedata_5_flood-protections">
          <flood_protections>
            <dc:attribute name="id" value="flood-protections-${river_id}"/>
            <dc:context>
              <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"/>
                  <columns>
                    <dc:context>
                      <dc:statement>
                        SELECT id       AS prot_column_id,
                               name     AS prot_column_name,
                               position AS prot_rel_pos
                        FROM wst_columns WHERE wst_id = ${prot_id}
                        ORDER by position
                      </dc: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"/>
                        </column>
                      </dc:elements>
                    </dc:context>
                  </columns>
                </flood_protection>
              </dc:elements>
            </dc:context>
          </flood_protections>
        </dc:macro>

        <dc:macro name="mainvalues">
          <mainvalue>
            <dc:attribute name="factory" value="mainvalue"/>
            <dc:attribute name="ids"     value="${river_id}"/>
          </mainvalue>
        </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="cross_sections">
          <cross_sections>
            <dc:attribute name="id" value="flood-protections-${river_id}"/>
            <dc:context>
              <dc:statement>
                SELECT id          AS prot_id,
                       description AS prot_description
                FROM cross_sections WHERE river_id = ${river_id}
              </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:macro>

        <dc:macro name="hyks">
          <hyks>
            <dc:attribute name="id" value="hyk-${river_id}"/>
            <dc:context>
              <dc:statement>
                SELECT id          AS hyk_id,
                       description AS hyk_description
                FROM hyks WHERE river_id = ${river_id}
              </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:macro>

        <dc:comment>

        + River-Node

        </dc:comment>

        <river>
          <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, 'cross_section')">
                 <dc:call-macro name="cross_sections"/>
                 <dc:call-macro name="hyks"/>
               </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="cross_sections"/>
                 <dc:call-macro name="hyks"/>
              </dc:if>
              <dc:if test="dc:contains($artifact-outs, 'discharge_longitudinal_section')">
                 <dc:call-macro name="basedata_0"/>
                 <dc:call-macro name="basedata_4_heightmarks-points"/>
              </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'))">
                 <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:call-macro name="annotations"/>
              </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: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="from" value="${g_start}"/>
                              <dc:attribute name="to" value="${g_stop}"/>
                              <dc:attribute name="db-id" value="${discharge_id}"/></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"/>
          </dc:if>
          <dc:if test="dc:contains($artifact-outs, 'computed_discharge_curve')"><!-- or (dc:contains($artifact-outs, 'discharge_curve'))"-->
              <!-- && parameter contains recommended/ation -->
              <computed_discharge_curve>
                <dc:call-macro name="mainvalues"/>
              </computed_discharge_curve>
              <dc:call-macro name="basedata_2_fixations_wst"/>
          </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, 'longitudinal_section')">
              <longitudinal_section>
                <dc:call-macro name="annotations"/>
              </longitudinal_section>
          </dc:if>
          <dc:if test="dc:contains($artifact-outs, 'map')">
              <map>
              <dc:choose>
                  <dc:when test="dc:contains($parameters, 'recommended')">
                  </dc:when>
                  <dc:otherwise>
                      <dc:call-macro name="flood-map-complete"/>
                  </dc:otherwise>
              </dc:choose>
              </map>
          </dc:if>
          <dc:if test="dc:contains($artifact-outs, 'floodmap')">
              <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: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 id    AS dem_id,
                             lower AS dem_lower,
                             upper AS dem_upper
                      FROM dem WHERE 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="description" value="${dem_lower}-${dem_upper}"/>
                        </dem>
                    </dc:elements>
                  </dc:context>
                </dems>
              </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">
                      <km>
                        <dc:attribute name="factory" value="wmskmfactory"/>
                        <dc:attribute name="ids" value="${river_id}"/>
                      </km>
                    </dc:if>
                  </dc:elements>
                </dc:context>
              </dc:macro>
              <dc:macro name="flood-map-qps">
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists
                    FROM cross_section_tracks WHERE river_id = ${river_id}
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <qps>
                        <dc:attribute name="factory" value="wmsqpsfactory"/>
                        <dc:attribute name="ids" value="${river_id}"/>
                      </qps>
                    </dc:if>
                  </dc:elements>
                </dc:context>
              </dc:macro>
              <dc:macro name="flood-map-hws">
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists, name as name
                    FROM hws WHERE river_id = ${river_id} GROUP BY name
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <hws>
                        <dc:attribute name="factory" value="wmshwsfactory"/>
                        <dc:attribute name="ids" value="${river_id};${name}"/>
                        <dc:attribute name="name" value="${name}"/>
                      </hws>
                    </dc:if>
                  </dc:elements>
                </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-catchments">
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists, name as name
                    FROM catchment WHERE river_id = ${river_id} GROUP BY name
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <catchment>
                        <dc:attribute name="factory" value="wmscatchmentfactory"/>
                        <dc:attribute name="ids" value="${river_id};${name}"/>
                        <dc:attribute name="name" value="${name}"/>
                      </catchment>
                    </dc:if>
                  </dc:elements>
                </dc:context>
              </dc:macro>
              <dc:macro name="flood-map-floodplain">
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists
                    FROM floodplain WHERE river_id = ${river_id}
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <floodplain>
                        <dc:attribute name="factory" value="wmsfloodplainfactory"/>
                        <dc:attribute name="ids" value="${river_id}"/>
                      </floodplain>
                    </dc:if>
                  </dc:elements>
                </dc:context>
              </dc:macro>
              <dc:macro name="flood-map-lines">
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists, name as name
                    FROM lines WHERE river_id = ${river_id} GROUP BY name
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <line>
                        <dc:attribute name="factory" value="wmslinefactory"/>
                        <dc:attribute name="ids" value="${river_id};${name}"/>
                        <dc:attribute name="name" value="${name}"/>
                      </line>
                    </dc:if>
                  </dc:elements>
                </dc:context>
              </dc:macro>
              <dc:macro name="flood-map-buildings">
                <dc:context>
                  <dc:statement>
                    SELECT count(*) as km_exists, name as name
                    FROM buildings WHERE river_id = ${river_id} GROUP BY name
                  </dc:statement>
                   <dc:elements>
                    <dc:if test="$km_exists>0">
                      <building>
                        <dc:attribute name="factory" value="wmsbuildingsfactory"/>
                        <dc:attribute name="ids" value="${river_id};${name}"/>
                        <dc:attribute name="name" value="${name}"/>
                      </building>
                    </dc:if>
                  </dc:elements>
                </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-complete">
                  <buildings>
                    <dc:call-macro name="flood-map-buildings"/>
                  </buildings>
                  <catchments>
                    <dc:call-macro name="flood-map-catchments"/>
                  </catchments>
                  <fixpoints>
                    <dc:call-macro name="flood-map-fixpoints"/>
                  </fixpoints>
                  <hws>
                    <dc:call-macro name="flood-map-hws"/>
                  </hws>
                  <hydrboundaries>
                    <dc:call-macro name="flood-map-hydr-boundaries"/>
                    <dc:call-macro name="flood-map-floodplain"/>
                  </hydrboundaries>
                  <kilometrage>
                      <riveraxis>
                          <dc:attribute name="factory" value="riveraxis"/>
                          <dc:attribute name="ids" value="${river_id}"/>
                      </riveraxis>
                    <dc:call-macro name="flood-map-km"/>
                    <dc:call-macro name="flood-map-qps"/>
                  </kilometrage>
                  <lines>
                    <dc:call-macro name="flood-map-lines"/>
                  </lines>
                  <dc:call-macro name="flood-map-uesk"/>
                  <gaugelocations>
                    <dc:call-macro name="flood-map-gaugelocations"/>
                  </gaugelocations>
                  <rastermap>
                      <background>
                          <dc:attribute name="factory" value="wmsbackground"/>
                          <dc:attribute name="ids" value="${river_id}"/>
                      </background>
                  </rastermap>
              </dc:macro>
          </dc:if>
        </river>
      </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: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:comment>
          SHOW W-DIFFERENCES
        </dc:comment>

        <dc:if test="dc:contains($artifact-outs, 'longitudinal_section') or (dc:contains($artifact-outs, 'w_differences') or (dc:contains($artifact-outs, 'discharge_longitudinal_section')))">
          <differences>
            <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
                    FROM   master_artifacts 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: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:elements>
                </dc:context>
            </dc:elements>
          </differences>
        </dc:if>

        <dc:if test="dc:contains($artifact-outs, 'computed_discharge_curve')">
          <computed_discharge_curves>
            <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
                    FROM   master_artifacts 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: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:elements>
                </dc:context>
            </dc:elements>
          </computed_discharge_curves>
        </dc:if>


        <dc:if test="dc:contains($artifact-outs, 'longitudinal_section') or (dc:contains($artifact-outs, 'discharge_longitudinal_section') or (dc:contains($artifact-outs, 'w_differences')))">
          <waterlevels>
            <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
                   FROM   master_artifacts 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: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:elements>
               </dc:context>
             </dc:elements>
          </waterlevels>
        </dc:if>

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

        <dc:if test="dc:contains($artifact-outs, 'waterlevels')">
          <waterlevels>
            <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
                   FROM   master_artifacts 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: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:elements>
                </dc:context>
             </dc:elements>
          </waterlevels>
        </dc:if>

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

        <dc:if test="dc:contains($artifact-outs, 'floodmap') or dc:contains($artifact-outs, 'map')">
          <floodmap>
            <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
                    FROM   master_artifacts 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: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:elements>
                </dc:context>
            </dc:elements>
          </floodmap>
        </dc:if>

      </dc:context>
      </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