teichmann@5523: <?xml version="1.0" encoding="UTF-8"?>
sascha@1046: <dc:template xmlns:dc="http://www.intevation.org/2011/Datacage">
aheinecke@6053:   <datacage>
rrenkert@5015: 
aheinecke@6053:     <dc:comment>
aheinecke@6053:       User specific part
aheinecke@6053:       ------------------
aheinecke@6053:     </dc:comment>
aheinecke@6053:     <dc:if test="dc:contains($parameters, 'user-id') and not(dc:contains($artifact-outs, 'floodmap-hws'))">
aheinecke@6053:       <dc:call-macro name="load-user"/>
aheinecke@6053:     </dc:if>
aheinecke@6053: 
aheinecke@6053:     <dc:call-macro name="load-system"/>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="load-system">
aheinecke@6053:       <dc:context connection="system">
rrenkert@5015:         <dc:statement>
aheinecke@6053:           SELECT id AS river_id, name AS river_name
aheinecke@6053:           FROM rivers
aheinecke@6053:           WHERE lower(name) LIKE lower(${river})
rrenkert@5015:         </dc:statement>
teichmann@5522:         <dc:for-each>
aheinecke@6053:           <dc:call-macro name="generate-system-content"/>
teichmann@5522:         </dc:for-each>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
felix@3283: 
aheinecke@6053:     <dc:macro name="load-user">
aheinecke@6053:       <old_calculations>
aheinecke@6053:         <dc:call-macro name="generate-user-content"/>
aheinecke@6053:       </old_calculations>
aheinecke@6053:     </dc:macro>
felix@4014: 
aheinecke@6053:     <dc:macro name="generate-system-content">
aheinecke@6053:       <dc:call-macro name="user-range">
aheinecke@6053:         <dc:call-macro name="km-filtered-wsts">
aheinecke@6053:           <dc:choose>
aheinecke@6053:             <dc:when test="dc:contains($parameters, 'recommended')">
aheinecke@6053:               <dc:comment>
aheinecke@6053:                 Recommendations (client shall load immediately).
aheinecke@6053:               </dc:comment>
aheinecke@6053:               <dc:iterate var="out" container="artifact-outs">
aheinecke@6053:                 <dc:choose>
aheinecke@6053:                   <dc:when test="$out = 'w_differences'">
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'discharge_longitudinal_section'">
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'historical_discharge_wq'">
aheinecke@6053:                     <dc:call-macro name="mainvalues"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'cross_section'">
aheinecke@6053:                     <dc:call-macro name="cross_sections"/>
aheinecke@6053:                     <dc:call-macro name="hyks"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'discharge_curve'">
aheinecke@6053:                     <dc:call-macro name="mainvalues"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'computed_discharge_curve'">
aheinecke@6053:                     <dc:call-macro name="mainvalues"/>
aheinecke@6053:                     <dc:call-macro name="basedata_2_fixations_wqkms"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'duration_curve'">
aheinecke@6053:                     <dc:call-macro name="mainvalues"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'reference_curve'">
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                     <dc:call-macro name="mainvalues"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'fix_wq_curve'">
aheinecke@6053:                     <dc:call-macro name="mainvalues"/>
aheinecke@6053:                     <dc:call-macro name="qsectors"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'longitudinal_section'">
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'fix_longitudinal_section_curve'">
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'bed_difference_epoch'">
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'bed_difference_year'">
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'bed_difference_height_year'">
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'floodmap'">
aheinecke@6053:                     <dc:call-macro name="flood-map-recommended"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'floodmap-hws'">
aheinecke@6053:                     <dc:call-macro name="flood-map-recommended"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'minfo-heights'">
aheinecke@6053:                     <dc:call-macro name="minfo-heights"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'minfo-heights-epoch'">
aheinecke@6053:                     <bedheights>
aheinecke@6053:                       <dc:call-macro name="bed-heights-epoch"/>
aheinecke@6053:                     </bedheights>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                 </dc:choose>
aheinecke@6053:               </dc:iterate>
aheinecke@6053:             </dc:when>
aheinecke@6053:             <dc:otherwise>
aheinecke@6053:               <dc:comment>
aheinecke@6053:                 Non - Recommendations.
aheinecke@6053:               </dc:comment>
aheinecke@6053:               <dc:iterate var="out" container="artifact-outs">
aheinecke@6053:                 <dc:choose>
aheinecke@6053:                   <dc:when test="$out = 'cross_section'">
aheinecke@6053:                     <dc:call-macro name="basedata_0"/>
aheinecke@6053:                     <dc:call-macro name="basedata_1_additionals"/>
aheinecke@6053:                     <dc:call-macro name="basedata_2_fixations"/>
aheinecke@6053:                     <dc:call-macro name="basedata_3_officials"/>
aheinecke@6053:                     <dc:call-macro name="basedata_4_heightmarks-points"/>
aheinecke@6053:                     <dc:call-macro name="cross_sections"/>
felix@6075:                     <dc:call-macro name="basedata_5_flood-protections"/>
aheinecke@6053:                     <dc:call-macro name="hyks"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'longitudinal_section'">
aheinecke@6053:                     <dc:call-macro name="longitudinal-section-prototype"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'w_differences'">
aheinecke@6053:                     <dc:call-macro name="longitudinal-section-prototype"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'discharge_longitudinal_section'">
aheinecke@6053:                     <dc:call-macro name="longitudinal-section-prototype"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'discharge_curve'">
aheinecke@6053:                     <dc:call-macro name="mainvalues"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'duration_curve'">
aheinecke@6053:                     <dc:call-macro name="mainvalues"/>
aheinecke@6053:                     <dc:call-macro name="basedata_2_fixations_relative_point"/>
aheinecke@6053:                     <dc:call-macro name="basedata_4_heightmarks-points-relative_points"/>
aheinecke@6053:                     <dc:call-macro name="basedata_5_flood-protections_relative_points"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'reference_curve'">
aheinecke@6053:                     <dc:call-macro name="mainvalues"/>
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                     <dc:call-macro name="basedata_1_additionals-relative_point"/>
aheinecke@6053:                     <dc:call-macro name="basedata_2_fixations_relative_point"/>
aheinecke@6053:                     <dc:call-macro name="basedata_4_heightmarks-points-relative_points"/>
aheinecke@6053:                     <dc:call-macro name="basedata_5_flood-protections_relative_points"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'fix_wq_curve'">
aheinecke@6053:                     <dc:call-macro name="basedata_0_wq"/>
aheinecke@6053:                     <dc:call-macro name="basedata_1_additionals_marks"/>
aheinecke@6053:                     <dc:call-macro name="basedata_2_fixations_wqkms"/>
aheinecke@6053:                     <dc:call-macro name="basedata_3_officials"/>
aheinecke@6053:                     <dc:call-macro name="basedata_4_heightmarks-points"/>
aheinecke@6053:                     <dc:call-macro name="basedata_5_flood-protections_relative_points"/>
aheinecke@6053:                     <dc:call-macro name="discharge_table_gauge"/>
aheinecke@6053:                     <dc:call-macro name="discharge_fix_wq"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'fix_longitudinal_section_curve'">
aheinecke@6053:                     <dc:call-macro name="annotations"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'map'">
aheinecke@6053:                     <dc:call-macro name="flood-map-complete"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'flow_velocity'">
aheinecke@6053:                     <dc:call-macro name="annotations_per_type"/>
aheinecke@6053:                     <dc:call-macro name="flow_velocity_measurements"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'bed_longitudinal_section'">
aheinecke@6053:                     <dc:call-macro name="annotations_per_type"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'sedimentload_ls'">
aheinecke@6053:                     <dc:call-macro name="annotations_per_type"/>
aheinecke@6053:                     <dc:call-macro name="morph_width"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'bedheight_middle'">
aheinecke@6053:                     <dc:call-macro name="sounding-width"/>
aheinecke@6053:                     <dc:call-macro name="basedata_0"/>
aheinecke@6053:                     <dc:call-macro name="basedata_1_additionals"/>
aheinecke@6053:                     <dc:call-macro name="basedata_2_fixations"/>
aheinecke@6053:                     <dc:call-macro name="basedata_3_officials"/>
aheinecke@6053:                     <dc:call-macro name="annotations_per_type"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'bed_difference_year'">
aheinecke@6053:                     <dc:call-macro name="basedata_0"/>
aheinecke@6053:                     <dc:call-macro name="basedata_1_additionals"/>
aheinecke@6053:                     <dc:call-macro name="basedata_2_fixations"/>
aheinecke@6053:                     <dc:call-macro name="basedata_3_officials"/>
aheinecke@6053:                     <dc:call-macro name="annotations_per_type"/>
aheinecke@6053:                     <dc:call-macro name="morph_width"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'bed_difference_epoch'">
aheinecke@6053:                     <dc:call-macro name="basedata_0"/>
aheinecke@6053:                     <dc:call-macro name="basedata_1_additionals"/>
aheinecke@6053:                     <dc:call-macro name="basedata_2_fixations"/>
aheinecke@6053:                     <dc:call-macro name="basedata_3_officials"/>
aheinecke@6053:                     <dc:call-macro name="annotations_per_type"/>
aheinecke@6053:                     <dc:call-macro name="morph_width"/>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'floodmap'">
aheinecke@6053:                     <dc:choose>
aheinecke@6053:                       <dc:when test="dc:contains($parameters, 'dem')">
aheinecke@6053:                         <dc:call-macro name="flood-map-dem"/>
aheinecke@6053:                       </dc:when>
aheinecke@6053:                       <dc:when test="dc:contains($parameters, 'hws')">
aheinecke@6053:                         <hws>
aheinecke@6053:                           <dc:call-macro name="flood-map-hws-lines"/>
aheinecke@6053:                           <dc:call-macro name="flood-map-hws-points"/>
aheinecke@6053:                         </hws>
aheinecke@6053:                       </dc:when>
aheinecke@6053:                       <dc:otherwise>
aheinecke@6053:                         <dc:call-macro name="flood-map-complete"/>
aheinecke@6053:                       </dc:otherwise>
aheinecke@6053:                     </dc:choose>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'floodmap-hws'">
aheinecke@6053:                     <dc:choose>
aheinecke@6053:                       <dc:when test="dc:contains($parameters, 'dem')">
aheinecke@6053:                         <dc:call-macro name="flood-map-dem"/>
aheinecke@6053:                       </dc:when>
aheinecke@6053:                       <dc:when test="dc:contains($parameters, 'hws')">
aheinecke@6053:                         <hws>
aheinecke@6053:                           <dc:call-macro name="flood-map-hws-lines"/>
aheinecke@6053:                           <dc:call-macro name="flood-map-hws-points"/>
aheinecke@6053:                         </hws>
aheinecke@6053:                       </dc:when>
aheinecke@6053:                       <dc:otherwise>
aheinecke@6053:                         <dc:call-macro name="flood-map-complete"/>
aheinecke@6053:                       </dc:otherwise>
aheinecke@6053:                     </dc:choose>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'computed_discharge_curve'">
aheinecke@6053:                     <dc:call-macro name="discharge_computed"/>
aheinecke@6053:                     <dc:call-macro name="basedata_2_fixations_wqkms"/>
aheinecke@6053:                     <dc:call-macro name="basedata_5_flood-protections"/>
aheinecke@6053:                     <dc:call-macro name="basedata_0"/>
aheinecke@6053:                     <dc:call-macro name="basedata_1_additionals"/>
aheinecke@6053:                     <dc:call-macro name="basedata_4_heightmarks-points"/>
aheinecke@6053:                     <computed_discharge_curve>
aheinecke@6053:                       <dc:call-macro name="mainvalues"/>
aheinecke@6053:                     </computed_discharge_curve>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'minfo-heights'">
aheinecke@6053:                     <dc:call-macro name="minfo-heights"/>
aheinecke@6053:                     <dc:macro name="minfo-heights">
aheinecke@6053:                       <bedheights>
aheinecke@6053:                         <dc:call-macro name="bed-heights-single"/>
aheinecke@6053:                         <dc:call-macro name="bed-heights-epoch"/>
aheinecke@6053:                       </bedheights>
aheinecke@6053:                     </dc:macro>
aheinecke@6053:                   </dc:when>
aheinecke@6053:                   <dc:when test="$out = 'minfo-heights-epoch'">
aheinecke@6053:                     <bedheights>
aheinecke@6053:                       <dc:call-macro name="bed-heights-epoch"/>
aheinecke@6053:                     </bedheights>
aheinecke@6053:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'waterlevels'">
aheinecke@6081:                     <dc:if test="current-state-id != 'state.winfo.uesk.wsp'">
aheinecke@6081:                       <dc:call-macro name="basedata_0"/>
aheinecke@6081:                       <dc:call-macro name="basedata_1_additionals"/>
aheinecke@6081:                       <dc:call-macro name="basedata_2_fixations"/>
aheinecke@6081:                       <dc:call-macro name="basedata_4_heightmarks-points"/>
aheinecke@6081:                       <dc:call-macro name="basedata_5_flood-protections"/>
aheinecke@6081:                     </dc:if>
aheinecke@6081:                   </dc:when>
aheinecke@6053:                 </dc:choose>
aheinecke@6053:               </dc:iterate>
aheinecke@6053:             </dc:otherwise>
aheinecke@6053:           </dc:choose>
aheinecke@6053:         </dc:call-macro>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
rrenkert@5015: 
aheinecke@6053:     <dc:macro name="generate-user-content">
felix@6072:       <dc:call-macro name="user-range">
felix@6072:         <dc:call-macro name="km-filtered-userdata">
aheinecke@6081:           <dc:choose>
aheinecke@6081:             <dc:when test="dc:contains($parameters, 'recommended')">
aheinecke@6081:               <dc:comment>
aheinecke@6081:                 Recommendations (client shall load immediately).
aheinecke@6081:               </dc:comment>
aheinecke@6081:               <dc:iterate var="out" container="artifact-outs">
aheinecke@6081:                 <dc:choose>
aheinecke@6081:                   <dc:when test="$out = 'longitudinal_section'">
aheinecke@6081:                     <dc:call-macro name="officiallines_user"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                 </dc:choose>
aheinecke@6081:               </dc:iterate>
aheinecke@6081:             </dc:when>
aheinecke@6081:             <dc:otherwise>
aheinecke@6081:               <dc:comment>
aheinecke@6081:                 Non Recommendations
aheinecke@6081:               </dc:comment>
aheinecke@6081:               <dc:iterate var="out" container="artifact-outs">
aheinecke@6081:                 <dc:choose>
aheinecke@6081:                   <dc:when test="$out = 'longitudinal_section'">
aheinecke@6081:                     <dc:call-macro name="longitudinal"/>
aheinecke@6081:                     <dc:call-macro name="differences"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'discharge_longitudinal_section'">
aheinecke@6081:                     <dc:call-macro name="longitudinal"/>
aheinecke@6081:                     <dc:call-macro name="differences"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'w_differences'">
aheinecke@6081:                     <dc:call-macro name="longitudinal"/>
aheinecke@6081:                     <dc:call-macro name="differences"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'fix_deltawt_curve'">
aheinecke@6081:                     <dc:call-macro name="delta-wt"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'reference_curve'">
aheinecke@6081:                     <dc:call-macro name="reference-curves"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'computed_discharge_curve'">
aheinecke@6081:                     <dc:call-macro name="computed-discharge-curve"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'cross_section'">
aheinecke@6081:                     <dc:call-macro name="waterlevels"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'fix_longitudinal_section_curve'">
aheinecke@6081:                     <dc:call-macro name="longitudinal-section"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'fix_derivate_curve'">
aheinecke@6081:                     <dc:call-macro name="fix-derivate-curve"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'fix_wq_curve'">
aheinecke@6081:                     <dc:call-macro name="fix-wq-curve"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'duration_curve'">
aheinecke@6081:                     <dc:call-macro name="duration-curve"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'waterlevels'">
aheinecke@6081:                     <dc:call-macro name="waterlevels-fix"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'fix_wq_curve'">
aheinecke@6081:                     <dc:call-macro name="waterlevels-fix"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'floodmap'">
aheinecke@6081:                     <dc:call-macro name="flood-map"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'map'">
aheinecke@6081:                     <dc:call-macro name="flood-map"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'bedheight_middle'">
aheinecke@6081:                     <dc:call-macro name="waterlevels-discharge"/>
aheinecke@6081:                     <dc:call-macro name="waterlevels-fix"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'floodmap-hws'">
aheinecke@6081:                     <dc:call-macro name="floodmap-hws-user"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'flow_velocity'">
aheinecke@6081:                     <dc:call-macro name="bedquality-bed"/>
aheinecke@6081:                     <dc:call-macro name="bedquality-load"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'bed_longitudinal_section'">
aheinecke@6081:                     <dc:call-macro name="bedquality-bed"/>
aheinecke@6081:                     <dc:call-macro name="bedquality-load"/>
aheinecke@6081:                     <dc:call-macro name="bedquality-density"/>
aheinecke@6081:                     <dc:call-macro name="bedquality-porosity"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'sedimentload_ls'">
aheinecke@6081:                     <dc:call-macro name="differences"/>
aheinecke@6081:                     <dc:call-macro name="bedheight-differences"/>
aheinecke@6081:                     <dc:call-macro name="flow-velocity"/>
aheinecke@6081:                     <dc:call-macro name="sediment-load"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'bed_difference_year'">
aheinecke@6081:                     <dc:call-macro name="waterlevels-discharge"/>
aheinecke@6081:                     <dc:call-macro name="bedheight-differences"/>
aheinecke@6081:                     <dc:call-macro name="differences"/>
aheinecke@6081:                     <dc:call-macro name="waterlevels-fix"/>
aheinecke@6081:                     <dc:call-macro name="delta-wt-ls"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                   <dc:when test="$out = 'bed_difference_epoch'">
aheinecke@6081:                     <dc:call-macro name="waterlevels-discharge"/>
aheinecke@6081:                     <dc:call-macro name="bedheight-differences"/>
aheinecke@6081:                     <dc:call-macro name="differences"/>
aheinecke@6081:                     <dc:call-macro name="waterlevels-fix"/>
aheinecke@6081:                     <dc:call-macro name="delta-wt-ls"/>
aheinecke@6081:                   </dc:when>
aheinecke@6081:                 </dc:choose>
aheinecke@6081:               </dc:iterate>
aheinecke@6081:             </dc:otherwise>
aheinecke@6081:           </dc:choose>
aheinecke@6081:         </dc:call-macro>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
felix@4455: 
aheinecke@6053:     <!-- Macros to load user data -->
rrenkert@5631: 
aheinecke@6053:     <dc:macro name="select-facets">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT a.gid         AS aid,
aheinecke@6053:                  f.id          AS fid,
aheinecke@6053:                  f.name        AS facet_name,
aheinecke@6053:                  f.num         AS facet_num,
aheinecke@6053:                  f.description AS facet_description
aheinecke@6053:           FROM artifacts a
aheinecke@6053:             JOIN outs o   ON o.artifact_id = a.id
aheinecke@6053:             JOIN facets f ON f.out_id = o.id
aheinecke@6053:           WHERE a.id = ${a_id}
aheinecke@6053:             AND f.name = ${facet_type}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <dc:macro-body/>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
felix@4595: 
aheinecke@6053:     <dc:macro name="differences">
aheinecke@6053:       <dc:variable name="facet_type" value="w_differences"/>
aheinecke@6053:       <dc:call-macro name="select-facets">
aheinecke@6053:         <differences>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <w_differences
aheinecke@6053:               description="{$facet_description}"
aheinecke@6053:               factory="winfo"
aheinecke@6053:               artifact-id="{$aid}"
aheinecke@6053:               ids="{$aid}"
aheinecke@6053:               out="w_differences"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </differences>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@5976: 
aheinecke@6053:     <dc:macro name="reference-curves">
aheinecke@6053:       <dc:variable name="facet_type" value="reference_curve"/>
aheinecke@6053:       <dc:call-macro name="select-facets">
aheinecke@6053:         <reference_curves>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <dc:element name="${facet_name}">
aheinecke@6053:               <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:               <dc:attribute name="factory" value="winfo"/>
aheinecke@6053:               <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:               <dc:attribute name="ids" value="${aid}"/>
aheinecke@6053:               <dc:attribute name="out" value="reference_curve"/>
aheinecke@6053:             </dc:element>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </reference_curves>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="computed-discharge-curve">
aheinecke@6053:       <dc:variable name="facet_type" value="computed_discharge_curve.q"/>
aheinecke@6053:       <dc:call-macro name="select-facets">
aheinecke@6053:         <computed_discharge_curves>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <dc:element name="${facet_name}">
aheinecke@6053:               <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:               <dc:attribute name="factory" value="winfo"/>
aheinecke@6053:               <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:               <dc:attribute name="ids" value="${aid}"/>
aheinecke@6053:               <dc:attribute name="out" value="computed_discharge_curve"/>
aheinecke@6053:             </dc:element>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </computed_discharge_curves>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map">
aheinecke@6053:       <dc:variable name="facet_type" value="floodmap.wsplgen"/>
aheinecke@6053:       <dc:call-macro name="select-facets">
aheinecke@6053:         <floodmap>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <dc:element name="${facet_name}">
aheinecke@6053:               <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:               <dc:attribute name="factory" value="winfo"/>
aheinecke@6053:               <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:               <dc:attribute name="ids" value="${aid}"/>
aheinecke@6053:               <dc:attribute name="out" value="floodmap"/>
aheinecke@6053:             </dc:element>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </floodmap>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="waterlevels">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS out_id
aheinecke@6053:           FROM outs
aheinecke@6053:           WHERE artifact_id = ${a_id} AND name = 'cross_section'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6053:             <dc:for-each>
aheinecke@5976:               <dc:context>
aheinecke@5976:                 <dc:statement>
aheinecke@6053:                   SELECT name AS facet_name, num AS facet_num, description AS facet_description
aheinecke@6053:                     FROM facets
aheinecke@6053:                   WHERE out_id = ${out_id}
aheinecke@6053:                     ORDER BY num ASC, name DESC
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <longitudinal_section_columns description="{$river} {$a_creation}">
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6053:                       <dc:attribute name="factory" value="winfo"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="cross_section"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </longitudinal_section_columns>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="longitudinal">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS out_id
aheinecke@6053:           FROM outs
aheinecke@6053:           WHERE artifact_id = ${a_id}
aheinecke@6053:             AND name = 'longitudinal_section'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT name        AS facet_name,
aheinecke@6053:                          num         AS facet_num,
aheinecke@6053:                          description AS facet_description
aheinecke@6053:                   FROM facets
aheinecke@6053:                   WHERE out_id = ${out_id}
aheinecke@6053:                     ORDER BY num ASC, name DESC
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <longitudinal_section_columns description="{$river} {$a_creation}">
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6053:                       <dc:attribute name="factory" value="winfo"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="longitudinal_section"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </longitudinal_section_columns>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="longitudinal-section">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS out_id
aheinecke@6053:           FROM outs
aheinecke@6053:           WHERE artifact_id = ${a_id}
aheinecke@6053:             AND name = 'fix_longitudinal_section_curve'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT name        AS facet_name,
aheinecke@6053:                          num         AS facet_num,
aheinecke@6053:                          description AS facet_description
aheinecke@6053:                   FROM facets
aheinecke@6053:                   WHERE out_id = ${out_id} AND (
aheinecke@6053:                       name LIKE 'fix_deviation_ls%'       OR
aheinecke@6053:                       name LIKE 'fix_sector_average_ls%'  OR
aheinecke@6053:                       name LIKE 'fix_analysis_events_ls%' OR
aheinecke@6053:                       name LIKE 'fix_reference_events_ls%')
aheinecke@6053:                   ORDER BY num ASC, name DESC
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <waterlevels description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6053:                       <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="fix_longitudinal_section_curve"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </waterlevels>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="delta-wt">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS out_id
aheinecke@6053:           FROM outs
aheinecke@6053:           WHERE artifact_id = ${a_id}
aheinecke@6053:             AND name = 'fix_deltawt_curve'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT name        AS facet_name,
aheinecke@6053:                          num         AS facet_num,
aheinecke@6053:                          description AS facet_description
aheinecke@6053:                   FROM facets
aheinecke@6053:                   WHERE out_id = ${out_id} and (
aheinecke@6053:                     name LIKE 'fix_sector_average_dwt%' OR
aheinecke@6053:                     name LIKE 'fix_deviation_dwt%'      OR
aheinecke@6053:                     name = 'fix_analysis_events_dwt'    OR
aheinecke@6053:                     name = 'fix_reference_events_dwt'   OR
aheinecke@6053:                     name = 'fix_analysis_periods_dwt')
aheinecke@6053:                   ORDER BY num ASC, name DESC
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <waterlevels description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6053:                       <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="fix_deltawt_curve"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </waterlevels>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="delta-wt-ls">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS out_id
aheinecke@6053:           FROM outs
aheinecke@6053:           WHERE artifact_id = ${a_id} AND name = 'fix_deltawt_curve'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT name AS facet_name, num AS facet_num, description AS facet_description
aheinecke@6053:                   FROM facets
aheinecke@6053:                   WHERE out_id = ${out_id} and (
aheinecke@6053:                     name LIKE 'fix_sector_average_dwt%' OR
aheinecke@6053:                     name LIKE 'fix_deviation_dwt%')
aheinecke@6053:                   ORDER BY num ASC, name DESC
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <waterlevels description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6053:                       <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="fix_deltawt_curve"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </waterlevels>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="fix-derivate-curve">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS out_id
aheinecke@6053:           FROM outs
aheinecke@6053:           WHERE artifact_id = ${a_id} AND name = 'fix_derivate_curve'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT name AS facet_name, num AS facet_num, description AS facet_description
aheinecke@6053:                   FROM facets
aheinecke@6053:                   WHERE out_id = ${out_id} and name = 'fix_derivate_curve'
aheinecke@6053:                   ORDER BY num ASC, name DESC
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <waterlevels description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6053:                       <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="fix_derivate_curve"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </waterlevels>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="fix-wq-curve">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS out_id
aheinecke@6053:           FROM outs
aheinecke@6053:           WHERE artifact_id = ${a_id} AND name = 'fix_wq_curve'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT name AS facet_name, num AS facet_num, description AS facet_description
aheinecke@6053:                   FROM facets
aheinecke@6053:                   WHERE out_id = ${out_id} and (
aheinecke@6053:                     name LIKE 'fix_sector_average_wq%'  OR
aheinecke@6053:                     name = 'fix_wq_curve'               OR
aheinecke@6053:                     name LIKE 'fix_analysis_events_wq%' OR
aheinecke@6053:                     name LIKE 'fix_reference_events_wq%' )
aheinecke@6053:                   ORDER BY num ASC, name DESC
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <waterlevels description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6053:                       <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="fix_wq_curve"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </waterlevels>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="duration-curve">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT a.gid         AS aid,
aheinecke@6053:                  f.id          AS fid,
aheinecke@6053:                  f.name        AS facet_name,
aheinecke@6053:                  f.num         AS facet_num,
aheinecke@6053:                  f.description AS facet_description
aheinecke@6053:           FROM outs AS o, facets AS f, artifacts AS a
aheinecke@6053:           WHERE
aheinecke@6053:               (f.name = 'duration_curve.q' OR f.name = 'duration_curve.w') AND
aheinecke@6053:               f.out_id = o.id         AND
aheinecke@6053:               o.artifact_id = ${a_id} AND
aheinecke@6053:               a.id = ${a_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <computed_discharge_curves>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:element name="${facet_name}">
aheinecke@6053:                 <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                 <dc:attribute name="factory" value="winfo"/>
aheinecke@6053:                 <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:                 <dc:attribute name="ids" value="${aid}"/>
aheinecke@6053:                 <dc:attribute name="out" value="duration_curve"/>
aheinecke@6053:               </dc:element>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </computed_discharge_curves>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:comment>TODO doesnt work nicely for fix/wq-diags.</dc:comment>
aheinecke@6053:     <dc:macro name="waterlevels-fix">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS out_id
aheinecke@6053:           FROM outs
aheinecke@6053:           WHERE artifact_id = ${a_id} AND name = 'longitudinal_section'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT name AS facet_name, num AS facet_num, description AS facet_description
aheinecke@6053:                   FROM facets
aheinecke@6053:                   WHERE out_id = ${out_id} and name = 'longitudinal_section.w'
aheinecke@6053:                   ORDER BY num ASC, name DESC
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <waterlevels description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6053:                       <dc:attribute name="factory" value="winfo"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="longitudinal_section"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </waterlevels>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="floodmap-hws-user">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS out_id
aheinecke@6053:           FROM outs
aheinecke@6053:           WHERE artifact_id = ${a_id} AND name = 'floodmap'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:for-each>
aheinecke@6053:           <dc:context>
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT name        AS facet_name,
aheinecke@6053:                      num         AS facet_num,
aheinecke@6053:                      description AS facet_description
aheinecke@6053:               FROM facets
aheinecke@6053:               WHERE out_id = ${out_id} AND name = 'floodmap.usershape'
aheinecke@6053:               ORDER BY num ASC, name DESC
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <own-hws>
aheinecke@6053:               <dc:for-each>
aheinecke@6053:                 <dc:element name="${facet_name}">
aheinecke@6053:                   <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                   <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6053:                   <dc:attribute name="factory" value="winfo"/>
aheinecke@6053:                   <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6053:                   <dc:attribute name="out" value="floodmap"/>
aheinecke@6053:                 </dc:element>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </own-hws>
aheinecke@6053:           </dc:context>
aheinecke@6053:         </dc:for-each>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedquality-bed">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS oid
aheinecke@6053:           FROM outs AS o
aheinecke@6053:           WHERE
aheinecke@6053:             o.artifact_id = ${a_id} AND
aheinecke@6053:             o.name='bed_longitudinal_section'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bed_quality_bed>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <quality-bed description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                 <dc:context>
aheinecke@6053:                   <dc:statement>
aheinecke@6053:                     SELECT a.gid         AS aid,
aheinecke@6053:                            f.id          AS fid,
aheinecke@6053:                            f.name        AS facet_name,
aheinecke@6053:                            f.num         AS facet_num,
aheinecke@6053:                            f.description AS facet_description
aheinecke@6053:                     FROM outs AS o, facets AS f, artifacts AS a
aheinecke@6053:                     WHERE
aheinecke@6053:                       (f.name = 'bed_longitudinal_section.bed_diameter_toplayer'
aheinecke@6053:                        OR f.name = 'bed_longitudinal_section.bed_diameter_sublayer') AND
aheinecke@6053:                        f.out_id = o.id         AND
aheinecke@6053:                        o.artifact_id = ${a_id} AND
aheinecke@6053:                        a.id = ${a_id}
aheinecke@6053:                   </dc:statement>
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="factory" value="minfo"/>
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="bed_longitudinal_section"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </dc:context>
aheinecke@6053:               </quality-bed>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </bed_quality_bed>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedquality-load">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS oid
aheinecke@6053:           FROM outs AS o
aheinecke@6053:           WHERE
aheinecke@6053:             o.artifact_id = ${a_id} AND
aheinecke@6053:             o.name='bed_longitudinal_section'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bed_quality_load>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <quality-load description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                 <dc:context>
aheinecke@6053:                   <dc:statement>
aheinecke@6053:                     SELECT a.gid         AS aid,
aheinecke@6053:                            f.id          AS fid,
aheinecke@6053:                            f.name        AS facet_name,
aheinecke@6053:                            f.num         AS facet_num,
aheinecke@6053:                            f.description AS facet_description
aheinecke@6053:                     FROM outs AS o, facets AS f, artifacts AS a
aheinecke@6053:                     WHERE
aheinecke@6053:                        f.name = 'bed_longitudinal_section.bedload_diameter' AND
aheinecke@6053:                        f.out_id = o.id         AND
aheinecke@6053:                        o.artifact_id = ${a_id} AND
aheinecke@6053:                        a.id = ${a_id}
aheinecke@6053:                   </dc:statement>
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="factory" value="minfo"/>
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="bed_longitudinal_section"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </dc:context>
aheinecke@6053:               </quality-load>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </bed_quality_load>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedquality-density">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS oid
aheinecke@6053:           FROM outs AS o
aheinecke@6053:           WHERE
aheinecke@6053:             o.artifact_id = ${a_id} AND
aheinecke@6053:             o.name='bed_longitudinal_section'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bed_quality_density>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <density description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                 <dc:context>
aheinecke@6053:                   <dc:statement>
aheinecke@6053:                     SELECT a.gid         AS aid,
aheinecke@6053:                            f.id          AS fid,
aheinecke@6053:                            f.name        AS facet_name,
aheinecke@6053:                            f.num         AS facet_num,
aheinecke@6053:                            f.description AS facet_description
aheinecke@6053:                     FROM outs AS o, facets AS f, artifacts AS a
aheinecke@6053:                     WHERE
aheinecke@6053:                        (f.name = 'bed_longitudinal_section.sediment_density_toplayer' OR
aheinecke@6053:                         f.name = 'bed_longitudinal_section.sediment_density_sublayer') AND
aheinecke@6053:                        f.out_id = o.id         AND
aheinecke@6053:                        o.artifact_id = ${a_id} AND
aheinecke@6053:                        a.id = ${a_id}
aheinecke@6053:                   </dc:statement>
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="factory" value="minfo"/>
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="bed_longitudinal_section"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </dc:context>
aheinecke@6053:               </density>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </bed_quality_density>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedquality-porosity">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS oid
aheinecke@6053:           FROM outs AS o
aheinecke@6053:           WHERE
aheinecke@6053:             o.artifact_id = ${a_id} AND
aheinecke@6053:             o.name='bed_longitudinal_section'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bed_quality_porosity>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <porosity description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                 <dc:context>
aheinecke@6053:                   <dc:statement>
aheinecke@6053:                     SELECT a.gid         AS aid,
aheinecke@6053:                            f.id          AS fid,
aheinecke@6053:                            f.name        AS facet_name,
aheinecke@6053:                            f.num         AS facet_num,
aheinecke@6053:                            f.description AS facet_description
aheinecke@6053:                     FROM outs AS o, facets AS f, artifacts AS a
aheinecke@6053:                     WHERE
aheinecke@6053:                        (f.name = 'bed_longitudinal_section.porosity_toplayer' OR
aheinecke@6053:                         f.name = 'bed_longitudinal_section.porosity_sublayer') AND
aheinecke@6053:                        f.out_id = o.id         AND
aheinecke@6053:                        o.artifact_id = ${a_id} AND
aheinecke@6053:                        a.id = ${a_id}
aheinecke@6053:                   </dc:statement>
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="factory" value="minfo"/>
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="bed_longitudinal_section"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </dc:context>
aheinecke@6053:               </porosity>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </bed_quality_porosity>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flow-velocity">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS oid
aheinecke@6053:           FROM outs AS o
aheinecke@6053:           WHERE
aheinecke@6053:             o.artifact_id = ${a_id} and o.name='flow_velocity'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <flow-velocity>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <flow description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                 <dc:context>
aheinecke@6053:                   <dc:statement>
aheinecke@6053:                     SELECT a.gid         AS aid,
aheinecke@6053:                            f.id          AS fid,
aheinecke@6053:                            f.name        AS facet_name,
aheinecke@6053:                            f.num         AS facet_num,
aheinecke@6053:                            f.description AS facet_description
aheinecke@6053:                     FROM outs AS o, facets AS f, artifacts AS a
aheinecke@6053:                     WHERE
aheinecke@6053:                       (f.name = 'flow_velocity.totalchannel' OR
aheinecke@6053:                        f.name = 'flow_velocity.mainchannel' OR
aheinecke@6053:                        f.name = 'flow_velocity.totalchannel.filtered' OR
aheinecke@6053:                        f.name = 'flow_velocity.mainchannel.filtered') AND
aheinecke@6053:                        f.out_id = o.id         AND
aheinecke@6053:                        o.artifact_id = ${a_id} AND
aheinecke@6053:                        a.id = ${a_id}
aheinecke@6053:                   </dc:statement>
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="factory" value="minfo"/>
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="flow_velocity"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </dc:context>
aheinecke@6053:               </flow>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </flow-velocity>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="sediment-load">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS oid
aheinecke@6053:           FROM outs AS o
aheinecke@6053:           WHERE
aheinecke@6053:             o.artifact_id = ${a_id} and o.name='sedimentload_ls'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <sediment-load>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <load description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                 <dc:context>
aheinecke@6053:                   <dc:statement>
aheinecke@6053:                     SELECT a.gid         AS aid,
aheinecke@6053:                            f.id          AS fid,
aheinecke@6053:                            f.name        AS facet_name,
aheinecke@6053:                            f.num         AS facet_num,
aheinecke@6053:                            f.description AS facet_description
aheinecke@6053:                     FROM outs AS o, facets AS f, artifacts AS a
aheinecke@6053:                     WHERE f.name LIKE 'sedimentload%' AND
aheinecke@6053:                           f.out_id = o.id         AND
aheinecke@6053:                           o.artifact_id = ${a_id} AND
aheinecke@6053:                           a.id = ${a_id}
aheinecke@6053:                   </dc:statement>
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="factory" value="minfo"/>
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="sedimentload_ls"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </dc:context>
aheinecke@6053:               </load>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </sediment-load>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedheight-differences">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS oid,
aheinecke@6053:                  name AS o_name
aheinecke@6053:           FROM outs AS o
aheinecke@6053:           WHERE
aheinecke@6053:             o.artifact_id = ${a_id} AND
aheinecke@6053:             (o.name = 'bed_difference_year' OR
aheinecke@6053:              o.name = 'bed_differnece_epoch')
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bedheight-differences>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <difference description="{$river} {$a_creation} {$collection_name}">
aheinecke@6053:                 <dc:context>
aheinecke@6053:                   <dc:statement>
aheinecke@6053:                     SELECT a.gid         AS aid,
aheinecke@6053:                            f.id          AS fid,
aheinecke@6053:                            f.name        AS facet_name,
aheinecke@6053:                            f.num         AS facet_num,
aheinecke@6053:                            f.description AS facet_description
aheinecke@6053:                     FROM outs AS o, facets AS f, artifacts AS a
aheinecke@6053:                     WHERE (f.name LIKE 'bedheight_difference.year%' OR
aheinecke@6053:                            f.name LIKE 'bedheight_difference.epoch%') AND
aheinecke@6053:                           f.out_id = o.id         AND
aheinecke@6053:                           o.artifact_id = ${a_id} AND
aheinecke@6053:                           a.id = ${a_id}
aheinecke@6053:                   </dc:statement>
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="factory" value="minfo"/>
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:                       <dc:choose>
aheinecke@6053:                         <dc:when test="dc:contains($o_name, 'bed_difference_year')">
aheinecke@6053:                           <dc:attribute name="out" value="bed_difference_year"/>
aheinecke@6053:                         </dc:when>
aheinecke@6053:                         <dc:otherwise>
aheinecke@6053:                           <dc:attribute name="out" value="bed_difference_epoch"/>
aheinecke@6053:                         </dc:otherwise>
aheinecke@6053:                       </dc:choose>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </dc:context>
aheinecke@6053:               </difference>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </bedheight-differences>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="waterlevels-discharge">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id AS oid
aheinecke@6053:           FROM outs AS o
aheinecke@6053:           WHERE
aheinecke@6053:             o.artifact_id = ${a_id} AND
aheinecke@6053:             o.name = 'discharge_longitudinal_section'
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels-discharge>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <discharge description="{$oid} {$river} {$a_id} {$a_creation} {$collection_name}">
aheinecke@6053:                 <dc:context>
aheinecke@6053:                   <dc:statement>
aheinecke@6053:                     SELECT a.gid         AS aid,
aheinecke@6053:                            f.id          AS fid,
aheinecke@6053:                            f.name        AS facet_name,
aheinecke@6053:                            f.num         AS facet_num,
aheinecke@6053:                            f.description AS facet_description
aheinecke@6053:                     FROM outs AS o, facets AS f, artifacts AS a
aheinecke@6053:                     WHERE f.name = 'discharge_longitudinal_section.w' AND
aheinecke@6053:                           f.out_id = o.id         AND
aheinecke@6053:                           o.artifact_id = ${a_id} AND
aheinecke@6053:                           a.id = ${a_id}
aheinecke@6053:                   </dc:statement>
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <dc:element name="${facet_name}">
aheinecke@6053:                       <dc:attribute name="factory" value="winfo"/>
aheinecke@6053:                       <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6053:                       <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6053:                       <dc:attribute name="artifact-id" value="${aid}"/>
aheinecke@6053:                       <dc:attribute name="out" value="longitudinal_section"/>
aheinecke@6053:                     </dc:element>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </dc:context>
aheinecke@6053:               </discharge>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </waterlevels-discharge>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053:     <!-- Macros to load system data -->
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="annotations">
aheinecke@6053:       <annotation factory="annotations" ids="{$river_id}"/>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="mainvalues">
aheinecke@6053:       <wmainvalue factory="mainvalue" ids="{$river_id}:w"/>
aheinecke@6053:       <qmainvalue factory="mainvalue" ids="{$river_id}:q"/>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="cross_sections">
aheinecke@6053:       <cross_sections id="flood-protections-{$river_id}">
aheinecke@6053:         <dc:context connection="system">
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT DISTINCT
aheinecke@6053:                    cs.id          AS prot_id,
aheinecke@6053:                    cs.description AS prot_description
aheinecke@6053:             FROM cross_sections cs
aheinecke@6053:               JOIN cross_section_lines csl ON csl.cross_section_id = cs.id
aheinecke@6053:             WHERE cs.river_id = ${river_id}
aheinecke@6053:               AND csl.km BETWEEN ${fromkm} AND ${tokm}
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <cross_section name="{$prot_description}"
aheinecke@6053:                            ids="{$prot_id}"
aheinecke@6053:                            factory="crosssections"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </dc:context>
aheinecke@6053:       </cross_sections>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="hyks">
aheinecke@6053:       <hyks id="hyk-{$river_id}">
aheinecke@6053:         <dc:context connection="system">
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT DISTINCT
aheinecke@6053:                    h.id          AS hyk_id,
aheinecke@6053:                    h.description AS hyk_description
aheinecke@6053:             FROM hyks h
aheinecke@6053:               JOIN hyk_entries he ON he.hyk_id = h.id
aheinecke@6053:             WHERE river_id = ${river_id}
aheinecke@6053:               AND he.km BETWEEN ${fromkm} AND ${tokm}
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <hyk name="{$hyk_description}" 
aheinecke@6053:                  ids="{$hyk_id}"
aheinecke@6053:                  factory="hyk"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </dc:context>
aheinecke@6053:       </hyks>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="fixings-macro">
aheinecke@6053:       <dc:filter expr="$kind=2">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <fixations>
aheinecke@6053:             <dc:group expr="dc:replace($wst_description, 'Fixierungen/', '')">
aheinecke@6053:               <fixation name="{dc:group-key()}">
aheinecke@6053:                 <dc:for-each>
aheinecke@6053:                   <dc:macro-body/>
aheinecke@6053:                 </dc:for-each>
aheinecke@6053:               </fixation>
aheinecke@6053:             </dc:group>
aheinecke@6053:           </fixations>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_2_fixations_wqkms">
aheinecke@6053:       <dc:call-macro name="fixings-macro">
aheinecke@6053:         <column name="{$wst_column_name}"
aheinecke@6053:                 ids="fixations-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                 factory="wqinterpol"
aheinecke@6053:                 info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_2_fixations">
aheinecke@6053:       <dc:call-macro name="fixings-macro">
aheinecke@6053:         <column name="{$wst_column_name}"
aheinecke@6053:                 ids="fixations-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                 factory="staticwqkms"
aheinecke@6053:                 info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_3_officials">
aheinecke@6053:       <dc:filter expr="$kind=3">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <officiallines>
aheinecke@6053:             <dc:group expr="$wst_description">
aheinecke@6053:               <official name="{dc:group-key()}">
aheinecke@6053:                 <dc:for-each>
aheinecke@6053:                   <column name="{$wst_column_name}"
aheinecke@6053:                           ids="additionals-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                           factory="staticwqkms"
aheinecke@6053:                           info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:                 </dc:for-each>
aheinecke@6053:               </official>
aheinecke@6053:             </dc:group>
aheinecke@6053:           </officiallines>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_4_heightmarks-points">
aheinecke@6053:       <dc:filter expr="$kind=4">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <heightmarks>
aheinecke@6081:             <dc:group expr="dc:replace($wst_description, 'HW-Marken/', '')">
aheinecke@6084:               <heightmark name="{dc:group-key()}">
aheinecke@6053:                 <dc:for-each>
aheinecke@6053:                   <column name="{$wst_column_name}"
aheinecke@6053:                           ids="heightmarks_points-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                           factory="staticwkms"
aheinecke@6053:                           info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:                 </dc:for-each>
aheinecke@6053:               </heightmark>
aheinecke@6053:             </dc:group>
aheinecke@6053:           </heightmarks>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_4_heightmarks-points-relative_points">
aheinecke@6053:       <dc:filter expr="$kind=4">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <heightmarks>
aheinecke@6081:             <dc:group expr="dc:replace($wst_description, 'HW-Marken/', '')">
aheinecke@6084:               <relativepoint name="{dc:group-key()}">
aheinecke@6053:                 <dc:for-each>
aheinecke@6053:                   <column name="{$wst_column_name}"
aheinecke@6053:                           ids="heightmarks_points-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                           factory="staticwkms"
aheinecke@6053:                           info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:                 </dc:for-each>
aheinecke@6053:               </relativepoint>
aheinecke@6053:             </dc:group>
aheinecke@6053:           </heightmarks>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="longitudinal-section-prototype">
aheinecke@6053:       <dc:call-macro name="basedata_0"/>
aheinecke@6053:       <dc:call-macro name="basedata_1_additionals"/>
aheinecke@6053:       <dc:call-macro name="basedata_2_fixations"/>
aheinecke@6053:       <dc:call-macro name="basedata_4_heightmarks-points"/>
aheinecke@6053:       <dc:call-macro name="basedata_3_officials"/>
aheinecke@6053:       <dc:call-macro name="basedata_5_flood-protections"/>
aheinecke@6053:       <dc:call-macro name="annotations_per_type"/>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_5_flood-protections">
aheinecke@6053:       <dc:filter expr="$kind=5">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <flood_protections>
aheinecke@6053:             <dc:group expr="dc:replace($wst_description, 'HW-Schutzanlagen/', '')">
aheinecke@6053:               <flood_protection name="{dc:group-key()}">
aheinecke@6053:                 <dc:for-each>
aheinecke@6053:                   <column name="{$wst_column_name}"
aheinecke@6053:                           ids="flood_protection-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                           factory="staticwkms"
aheinecke@6053:                           info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:                 </dc:for-each>
aheinecke@6053:               </flood_protection>
aheinecke@6053:             </dc:group>
aheinecke@6053:           </flood_protections>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="annotations_per_type">
aheinecke@6053:       <annotations>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <all_annotations factory="annotations" ids="{$river_id}"/>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT id   AS anno_id,
aheinecke@6053:                    name AS anno_description
aheinecke@6053:             FROM annotation_types
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <annotation name="{$anno_description}"
aheinecke@6053:                         factory="annotations"
aheinecke@6053:                         ids="{$river_id}:{$anno_description}"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </dc:context>
aheinecke@6053:       </annotations>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_2_fixations_relative_point">
aheinecke@6053:       <dc:filter expr="$kind=2">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <fixations>
aheinecke@6053:             <dc:group expr="dc:replace($wst_description, 'Fixierungen/', '')">
aheinecke@6053:               <relativepoint name="{dc:group-key()}">
aheinecke@6053:                 <dc:for-each>
aheinecke@6053:                   <column name="{$wst_column_name}"
aheinecke@6053:                           ids="fixations-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                           factory="staticwkms"
aheinecke@6053:                           info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:                 </dc:for-each>
aheinecke@6053:               </relativepoint>
aheinecke@6053:             </dc:group>
aheinecke@6053:           </fixations>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_5_flood-protections_relative_points">
aheinecke@6053:       <dc:filter expr="$kind=5">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <flood_protections>
aheinecke@6053:             <dc:group expr="$wst_description">
aheinecke@6053:               <relativepoint name="{dc:group-key()}">
aheinecke@6053:                 <dc:for-each>
aheinecke@6053:                   <column name="{$wst_column_name}"
aheinecke@6053:                           ids="flood_protection-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                           factory="staticwkms"
aheinecke@6053:                           info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:                 </dc:for-each>
aheinecke@6053:               </relativepoint>
aheinecke@6053:             </dc:group>
aheinecke@6053:           </flood_protections>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_1_additionals-relative_point">
aheinecke@6053:       <dc:filter expr="$kind=1">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <additionals>
aheinecke@6053:             <dc:group expr="$wst_description">
aheinecke@6053:               <relativepoint name="{dc:group-key()}">
aheinecke@6053:                 <dc:for-each>
aheinecke@6053:                   <column name="{$wst_column_name}"
aheinecke@6053:                           ids="additionals-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                           factory="staticwkms"
aheinecke@6053:                           info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:                 </dc:for-each>
aheinecke@6053:               </relativepoint>
aheinecke@6053:             </dc:group>
aheinecke@6053:           </additionals>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="discharge_table_gauge">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id   AS gauge_id,
aheinecke@6053:                  name AS gauge_name
aheinecke@6053:           FROM gauges WHERE river_id = ${river_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <discharge_table_nn>
aheinecke@6053:             <discharge_table_gauge>
aheinecke@6053:               <dc:for-each>
aheinecke@6053:                 <gauge name="{$gauge_name}"
aheinecke@6053:                   factory="gaugedischarge"
aheinecke@6053:                   from="{$g_start}"
aheinecke@6053:                   to="{$g_stop}"
aheinecke@6053:                   ids="{$gauge_name}"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </discharge_table_gauge>
aheinecke@6053:           </discharge_table_nn>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:comment>TODO: Why is this just a copy of the discharge_table_gauge?</dc:comment>
aheinecke@6053:     <dc:macro name="discharge_computed">
aheinecke@6053:       <dc:call-macro name="discharge_table_gauge"/>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:comment>TODO: Why is this just a copy of the discharge_table_gauge?</dc:comment>
aheinecke@6053:     <dc:macro name="discharge_fix_wq">
aheinecke@6053:       <dc:call-macro name="discharge_table_gauge"/>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="qsectors">
aheinecke@6053:       <qsector factory="qsectors" ids="{$river_id}"/>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-recommended">
aheinecke@6053:       <kilometrage>
aheinecke@6053:         <riveraxis factory="riveraxis" ids="{$river_id}"/>
aheinecke@6053:       </kilometrage>
aheinecke@6053:       <rastermap>
aheinecke@6053:         <background factory="wmsbackground" ids="{$river_id}"/>
aheinecke@6053:       </rastermap>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="minfo-heights">
aheinecke@6053:       <bedheights>
aheinecke@6053:         <dc:call-macro name="bed-heights-single"/>
aheinecke@6053:         <dc:call-macro name="bed-heights-epoch"/>
aheinecke@6053:       </bedheights>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bed-heights-single">
aheinecke@6053:       <single>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT id          AS bedh_id,
aheinecke@6053:                    year        AS bedh_year,
aheinecke@6053:                    description AS bedh_descr
aheinecke@6053:             FROM bed_height_single WHERE river_id = ${river_id}
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <height factory="bedheight"
aheinecke@6053:                     ids="bedheight-single-{$bedh_id}-{$bedh_year}"
aheinecke@6053:                     description="{$bedh_descr}"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </dc:context>
aheinecke@6053:       </single>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bed-heights-epoch">
aheinecke@6053:       <epoch>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT id               AS bedh_id,
aheinecke@6053:                    time_interval_id AS bedh_interval_id,
aheinecke@6053:                    description      AS bedh_descr
aheinecke@6053:             FROM bed_height_epoch WHERE river_id = ${river_id}
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <height factory="bedheight"
aheinecke@6053:                     ids="bedheight-epoch-{$bedh_id}-{$bedh_interval_id}"
aheinecke@6053:                     description="{$bedh_descr}"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </dc:context>
aheinecke@6053:       </epoch>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flow_velocity_measurements">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id          AS fvmid,
aheinecke@6053:                  description AS fvmd
aheinecke@6053:           FROM flow_velocity_measurements WHERE river_id = ${river_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <flowvelocitymeasurement>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:comment>TODO: Why has this an id and factory?</dc:comment>
aheinecke@6053:               <flow_velocity_measurement name="{$fvmd}"
aheinecke@6053:                                          ids="{$fvmid}"
aheinecke@6053:                                          factory="flowvelocity">
aheinecke@6053:                 <dc:context>
aheinecke@6053:                   <dc:statement>
aheinecke@6053:                     SELECT id, description, station, datetime, v, w, q
aheinecke@6053:                     FROM flow_velocity_measure_values
aheinecke@6053:                     WHERE measurements_id = ${fvmid}
aheinecke@6053:                       AND station BETWEEN ${fromkm} AND ${tokm}
aheinecke@6053:                   </dc:statement>
aheinecke@6053:                   <dc:for-each>
aheinecke@6053:                     <measurement_value name="{$description} - {$station} - {$datetime}"
aheinecke@6053:                                        ids="{$id}"
aheinecke@6053:                                        factory="flowvelocity"/>
aheinecke@6053:                   </dc:for-each>
aheinecke@6053:                 </dc:context>
aheinecke@6053:               </flow_velocity_measurement>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </flowvelocitymeasurement>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="morph_width">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT id   AS width_id
aheinecke@6053:           FROM morphologic_width
aheinecke@6053:           WHERE river_id = ${river_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <morph_width>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT min(station) AS from_station,
aheinecke@6053:                          max(station) AS to_station
aheinecke@6053:                   FROM morphologic_width_values
aheinecke@6053:                   WHERE morphologic_width_id = ${width_id}
aheinecke@5976:                 </dc:statement>
aheinecke@5976:                 <dc:for-each>
aheinecke@6053:                   <morphologic-width name="{$from_station} - {$to_station}"
aheinecke@6053:                                      ids="{$width_id}"
aheinecke@6053:                                      factory="morph-width"/>
teichmann@5523:                 </dc:for-each>
teichmann@5523:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </morph_width>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@5405: 
aheinecke@6053:     <dc:macro name="sounding-width">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:             SELECT id          AS bedh_id,
aheinecke@6053:                    year        AS bedh_year,
aheinecke@6053:                    description AS bedh_descr
aheinecke@6053:             FROM bed_height_single WHERE river_id = ${river_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <soundings_width>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <height factory="bedheight"
aheinecke@6053:                       ids="bedheight-singlevalues-{$bedh_id}-{$bedh_year}"
aheinecke@6053:                       description="{$bedh_descr}"/>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </soundings_width>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_0_macro">
felix@6073:       <dc:filter expr="$kind = 0">
felix@6073:         <dc:if test="dc:has-result()">
felix@6073:           <basedata>
felix@6073:             <dc:group expr="$wst_description">
felix@6073:               <basedata name="{dc:group-key()}">
felix@6073:                 <dc:for-each>
felix@6073:                   <dc:macro-body/>
felix@6073:                 </dc:for-each>
felix@6073:               </basedata>
felix@6073:             </dc:group>
felix@6073:           </basedata>
felix@6073:         </dc:if>
felix@6073:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_0">
aheinecke@6053:       <dc:call-macro name="basedata_0_macro">
aheinecke@6053:         <column name="{$wst_column_name}"
aheinecke@6053:                 ids="base_data-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                 factory="staticwqkms"
aheinecke@6053:                 info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_0_wq">
aheinecke@6053:       <dc:call-macro name="basedata_0_macro">
aheinecke@6053:         <column name="{$wst_column_name}"
aheinecke@6053:                 ids="base_data-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                 factory="wqinterpol"
aheinecke@6053:                 info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_1_additionals_macro">
felix@6073:       <dc:filter expr="$kind=1">
felix@6073:         <dc:if test="dc:has-result()">
felix@6073:           <additionals>
felix@6073:             <dc:group expr="dc:replace($wst_description, 'Zus.Längsschnitte/', '')">
felix@6073:               <additional name="{dc:group-key()}">
aheinecke@6081:                 <dc:for-each>
aheinecke@6081:                   <dc:macro-body/>
aheinecke@6081:                 </dc:for-each>
felix@6073:               </additional>
felix@6073:             </dc:group>
felix@6073:           </additionals>
felix@6073:         </dc:if>
felix@6073:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_1_additionals">
aheinecke@6053:       <dc:call-macro name="basedata_1_additionals_macro">
aheinecke@6053:         <column name="{$wst_column_name}"
aheinecke@6053:                 ids="additionals-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                 factory="staticwqkms"
aheinecke@6053:                 info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="basedata_1_additionals_marks">
aheinecke@6053:       <dc:call-macro name="basedata_1_additionals_macro">
aheinecke@6053:         <column name="{$wst_column_name}"
aheinecke@6053:                 ids="additionalsmarks-wstv-{$wst_column_position}-{$wst_id}"
aheinecke@6053:                 factory="staticwkms"
aheinecke@6053:                 info="{$info} [km {$deffrom} - {$defto}]"/>
aheinecke@6053:       </dc:call-macro>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <!-- Floodmap part -->
aheinecke@6053:     <dc:macro name="flood-map-complete">
aheinecke@6053:       <dc:call-macro name="flood-map-buildings"/>
aheinecke@6053:       <dc:call-macro name="catchments"/>
aheinecke@6053:       <dc:call-macro name="floodmarks"/>
aheinecke@6053:       <hws>
aheinecke@6053:         <dc:call-macro name="hwslines"/>
aheinecke@6053:         <dc:call-macro name="hwspoints"/>
aheinecke@6053:       </hws>
aheinecke@6053:       <dc:call-macro name="flood-map-routing"/>
aheinecke@6053:       <hydrboundaries>
aheinecke@6053:         <dc:call-macro name="flood-map-floodplain"/>
aheinecke@6053:         <dc:call-macro name="flood-map-hydr-boundaries"/>
aheinecke@6053:       </hydrboundaries>
aheinecke@6053:       <dc:call-macro name="flood-map-uesk"/>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-routing">
aheinecke@6053:       <route_data>
aheinecke@6053:         <dc:call-macro name="flood-map-qps"/>
aheinecke@6053:         <dc:call-macro name="flood-map-fixpoints"/>
aheinecke@6053:         <dc:call-macro name="flood-map-km"/>
aheinecke@6053:         <dc:call-macro name="flood-map-riveraxis"/>
aheinecke@6053:       </route_data>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-hydr-boundaries">
aheinecke@6053:       <bfg_model>
aheinecke@6053:         <dc:call-macro name="flood-map-hydr-boundaries-poly"/>
aheinecke@6053:         <dc:call-macro name="flood-map-hydr-boundaries-lines"/>
aheinecke@6053:       </bfg_model>
aheinecke@6053:       <dc:call-macro name="flood-map-hydr-boundaries-state"/>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-recommended">
aheinecke@6053:       <dc:comment>
aheinecke@6053:          FIXME: Following two macros look identical to me.
aheinecke@6053:       </dc:comment>
aheinecke@6053:       <kilometrage>
aheinecke@6053:         <riveraxis factory="riveraxis" ids="{$river_id}"/>
aheinecke@6053:       </kilometrage>
aheinecke@6053:       <rastermap>
aheinecke@6053:         <background factory="wmsbackground" ids="{$river_id}"/>
aheinecke@6053:       </rastermap>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-dem">
aheinecke@6053:       <dems>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT d.id    AS dem_id,
aheinecke@6053:                    r.a     AS dem_lower,
aheinecke@6053:                    r.b     AS dem_upper,
aheinecke@6053:                    d.name  AS name,
aheinecke@6053:                    t.start_time AS start_time,
aheinecke@6053:                    t.stop_time AS stop_time,
aheinecke@6053:                    'Projektion: ' || d.projection || '$' ||
aheinecke@6053:                    'Rasterweite: '   || d.resolution || 'm$' ||
aheinecke@6053:                    'Format: '  || d.format || '$' ||
aheinecke@6053:                    'Zeitraum: '
aheinecke@6053:                    AS info
aheinecke@6053:             FROM dem d
aheinecke@6053:               JOIN ranges r ON d.range_id = r.id
aheinecke@6053:               LEFT JOIN time_intervals t ON d.time_interval_id = t.id
aheinecke@6053:             WHERE d.river_id = ${river_id}
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <dem factory="demfactory" 
aheinecke@6053:               ids="{$dem_id}"
aheinecke@6053:               name="{$name}"
aheinecke@6053:               info="{dc:replace($info, '$', '&lt;BR&gt;')}{dc:date-format('yyyy', $start_time)} - {dc:date-format('yyyy', $stop_time)}"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </dc:context>
aheinecke@6053:       </dems>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="filter_hws_ddg">
aheinecke@6053:       <dc:macro name="durchlass_damm_graben">
aheinecke@6053:         <dc:macro name="ddg_factory">
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <hws factory="hwsfactory" name="{$hws_name}"/>
aheinecke@6053:           </dc:for-each>
aheinecke@5976:         </dc:macro>
aheinecke@5976: 
aheinecke@6053:         <dc:filter expr="$hws_kind=1">
aheinecke@6053:           <dc:if test="dc:has-result()">
aheinecke@6053:             <Durchlass><dc:call-macro name="ddg_factory"/></Durchlass>
aheinecke@6053:           </dc:if>
aheinecke@6053:         </dc:filter>
aheinecke@5976: 
aheinecke@6053:         <dc:filter expr="$hws_kind=2">
aheinecke@6053:           <dc:if test="dc:has-result()">
aheinecke@6053:             <Damm><dc:call-macro name="ddg_factory"/></Damm>
aheinecke@6053:           </dc:if>
aheinecke@6053:         </dc:filter>
teichmann@5523: 
aheinecke@6053:         <dc:filter expr="$hws_kind=3">
aheinecke@6053:           <dc:if test="dc:has-result()">
aheinecke@6053:             <Graben><dc:call-macro name="ddg_factory"/></Graben>
aheinecke@6053:           </dc:if>
aheinecke@6053:         </dc:filter>
aheinecke@6053:       </dc:macro>
teichmann@5523: 
aheinecke@6053:       <dc:filter expr="$hws_official=1">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <official>
aheinecke@6053:             <dc:call-macro name="durchlass_damm_graben"/>
aheinecke@6053:           </official>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
teichmann@5524: 
aheinecke@6053:       <dc:filter expr="$hws_official=0">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <inofficial>
aheinecke@6053:             <dc:call-macro name="durchlass_damm_graben"/>
aheinecke@6053:           </inofficial>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
teichmann@5524: 
aheinecke@6054:     <dc:macro name="flood-map-hws-lines">
aheinecke@6054:       <dc:context>
aheinecke@6054:         <dc:statement>
aheinecke@6054:           SELECT DISTINCT
aheinecke@6054:           name     AS hws_name,
aheinecke@6054:           official AS hws_official,
aheinecke@6054:           kind_id  AS hws_kind
aheinecke@6054:           FROM hws_lines
aheinecke@6054:           WHERE river_id = ${river_id}
aheinecke@6054:         </dc:statement>
aheinecke@6054:         <dc:if test="dc:has-result()">
aheinecke@6054:           <lines>
aheinecke@6054:             <dc:call-macro name="filter_hws_ddg"/>
aheinecke@6054:           </lines>
aheinecke@6054:         </dc:if>
aheinecke@6054:       </dc:context>
aheinecke@6054:     </dc:macro>
aheinecke@6054: 
aheinecke@6054:     <dc:macro name="flood-map-hws-points">
aheinecke@6054:       <dc:context>
aheinecke@6054:         <dc:statement>
aheinecke@6054:           SELECT DISTINCT
aheinecke@6054:           name     AS hws_name,
aheinecke@6054:           official AS hws_official,
aheinecke@6054:           kind_id  AS hws_kind
aheinecke@6054:           FROM hws_points
aheinecke@6054:           WHERE river_id = ${river_id}
aheinecke@6054:         </dc:statement>
aheinecke@6054:         <dc:if test="dc:has-result()">
aheinecke@6054:           <points>
aheinecke@6054:             <dc:call-macro name="filter_hws_ddg"/>
aheinecke@6054:           </points>
aheinecke@6054:         </dc:if>
aheinecke@6054:       </dc:context>
aheinecke@6054:     </dc:macro>
aheinecke@6054: 
aheinecke@6053:     <dc:macro name="flood-map-hydr-boundaries-state">
aheinecke@6053:       <federal>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT DISTINCT
aheinecke@6053:               name
aheinecke@6053:             FROM hydr_boundaries
aheinecke@6053:             WHERE river_id = ${river_id}
aheinecke@6053:               AND kind = 2
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <line factory="wmshydrboundariesfactory" 
aheinecke@6053:                   ids="{$river_id};{$name};2"
aheinecke@6053:                   name="{$name}"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </dc:context>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT DISTINCT
aheinecke@6053:               name
aheinecke@6053:             FROM hydr_boundaries_poly
aheinecke@6053:             WHERE river_id = ${river_id}
aheinecke@6053:               AND kind = 2
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <line factory="wmshydrboundariespolyfactory"
aheinecke@6053:                   ids="{$river_id};{$name};2"
aheinecke@6053:                   name="{$name}"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </dc:context>
aheinecke@6053:       </federal>
aheinecke@6053:     </dc:macro>
teichmann@5524: 
aheinecke@6053:     <dc:macro name="flood-map-hydr-boundaries-lines">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT DISTINCT
aheinecke@6053:             name
aheinecke@6053:           FROM hydr_boundaries
aheinecke@6053:           WHERE river_id = ${river_id}
aheinecke@6053:             AND kind = 1
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:comment> What about all other line kinds?</dc:comment>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <lines>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <line factory="wmshydrboundariesfactory"
aheinecke@6053:                     ids="{$river_id};{$name};1"
aheinecke@6053:                     name="{$name}"/>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </lines>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
teichmann@5524: 
aheinecke@6053:     <dc:macro name="flood-map-hydr-boundaries-poly">
aheinecke@6053:       <areas>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT DISTINCT
aheinecke@6053:               b.sectie AS sectie_id,
aheinecke@6053:               sk.name AS sectie
aheinecke@6053:             FROM hydr_boundaries_poly b
aheinecke@6053:               JOIN sectie_kinds sk ON b.sectie = sk.id
aheinecke@6053:             WHERE b.river_id = ${river_id}
aheinecke@6053:               AND b.kind = 1
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:if test="dc:has-result()">
aheinecke@6053:             <sobek_areas>
aheinecke@6053:               <dc:for-each>
aheinecke@6053:                 <boundary name="{$sectie}"
aheinecke@6053:                           factory="wmshydrboundariespolyfactory"
aheinecke@6053:                           ids="{$river_id};{$sectie};1;{$sectie_id};-1"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </sobek_areas>
aheinecke@6053:           </dc:if>
aheinecke@6053:         </dc:context>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT DISTINCT
aheinecke@6053:               b.sobek AS sobek_id,
aheinecke@6053:               sk.name AS sobek
aheinecke@6053:             FROM hydr_boundaries_poly b
aheinecke@6053:               JOIN sobek_kinds sk ON b.sobek = sk.id
aheinecke@6053:             WHERE b.river_id = ${river_id}
aheinecke@6053:               AND b.kind = 1
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:if test="dc:has-result()">
aheinecke@6053:             <sobek_flooded>
aheinecke@6053:               <dc:for-each>
aheinecke@6053:                 <boundary name="{$sobek}"
aheinecke@6053:                           factory="wmshydrboundariespolyfactory"
aheinecke@6053:                           ids="{$river_id};{$sobek};1;-1;{$sobek_id}"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </sobek_flooded>
aheinecke@6053:           </dc:if>
aheinecke@6053:         </dc:context>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT DISTINCT
aheinecke@6053:               b.name AS name
aheinecke@6053:             FROM hydr_boundaries_poly b
aheinecke@6053:             WHERE b.river_id = ${river_id}
aheinecke@6053:               AND b.kind = 1
aheinecke@6053:               AND b.sobek IS NULL
aheinecke@6053:               AND b.sectie is NULL
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <boundary name="{$name}"
aheinecke@6053:                       factory="wmshydrboundariespolyfactory"
aheinecke@6053:                       ids="{$river_id};{$name}"/>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:         </dc:context>
aheinecke@6053:       </areas>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-uesk">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT DISTINCT 1 FROM floodmaps WHERE river_id = ${river_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:         <uesk>
aheinecke@6053:           <calculations>
teichmann@5523:             <dc:context>
teichmann@5523:               <dc:statement>
aheinecke@6053:                 SELECT DISTINCT 1 FROM floodmaps WHERE river_id = ${river_id}
aheinecke@6053:                 AND (kind = 112 OR kind = 111)
teichmann@5523:               </dc:statement>
teichmann@5523:               <dc:if test="dc:has-result()">
aheinecke@6053:                 <current>
aheinecke@6053:                   <dc:context>
aheinecke@6053:                     <dc:statement>
aheinecke@6053:                       SELECT DISTINCT name AS name
aheinecke@6053:                       FROM floodmaps
aheinecke@6053:                       WHERE river_id = ${river_id} AND kind = 111
aheinecke@6053:                     </dc:statement>
aheinecke@6053:                     <dc:if test="dc:has-result()">
aheinecke@6053:                       <bfg>
aheinecke@6053:                         <dc:for-each>
aheinecke@6053:                           <floodmaps factory="wmsfloodmapsfactory"
aheinecke@6053:                             ids="{$river_id};{$name}"
aheinecke@6053:                             name="{$name}"/>
aheinecke@6053:                         </dc:for-each>
aheinecke@6053:                       </bfg>
aheinecke@6053:                     </dc:if>
aheinecke@6053:                   </dc:context>
aheinecke@6053:                   <dc:context>
aheinecke@6053:                     <dc:statement>
aheinecke@6053:                       SELECT DISTINCT name AS name
aheinecke@6053:                       FROM floodmaps
aheinecke@6053:                       WHERE river_id = ${river_id} AND kind = 112
aheinecke@6053:                     </dc:statement>
aheinecke@6053:                     <dc:if test="dc:has-result()">
aheinecke@6053:                       <federal>
aheinecke@6053:                         <dc:for-each>
aheinecke@6053:                           <floodmaps factory="wmsfloodmapsfactory"
aheinecke@6053:                             ids="{$river_id};{$name}"
aheinecke@6053:                             name="{$name}"/>
aheinecke@6053:                         </dc:for-each>
aheinecke@6053:                       </federal>
aheinecke@6053:                     </dc:if>
aheinecke@6053:                   </dc:context>
aheinecke@6053:                 </current>
teichmann@5523:               </dc:if>
teichmann@5523:             </dc:context>
aheinecke@5760:             <dc:context>
aheinecke@5760:               <dc:statement>
aheinecke@6053:                 SELECT DISTINCT 1 from floodmaps where river_id = ${river_id}
aheinecke@6053:                 AND (kind = 122 OR kind = 121)
aheinecke@5435:               </dc:statement>
aheinecke@5796:               <dc:if test="dc:has-result()">
aheinecke@6053:                 <potential>
aheinecke@5534:                   <dc:context>
aheinecke@5534:                     <dc:statement>
aheinecke@6053:                       SELECT DISTINCT name AS name
aheinecke@6053:                       FROM floodmaps
aheinecke@6053:                       WHERE river_id = ${river_id} AND kind = 121
aheinecke@5534:                     </dc:statement>
aheinecke@5534:                     <dc:if test="dc:has-result()">
aheinecke@6053:                       <bfg>
aheinecke@6053:                         <dc:for-each>
aheinecke@6053:                           <floodmaps factory="wmsfloodmapsfactory"
aheinecke@6053:                             ids="{$river_id};{$name}"
aheinecke@6053:                             name="{$name}"/>
aheinecke@6053:                         </dc:for-each>
aheinecke@6053:                       </bfg>
aheinecke@5534:                     </dc:if>
aheinecke@5534:                   </dc:context>
aheinecke@5534:                   <dc:context>
aheinecke@5534:                     <dc:statement>
aheinecke@6053:                       SELECT DISTINCT
aheinecke@6053:                         name AS name
aheinecke@6053:                       FROM floodmaps
aheinecke@6053:                       WHERE river_id = ${river_id} AND kind = 122
aheinecke@5534:                     </dc:statement>
aheinecke@5534:                     <dc:if test="dc:has-result()">
aheinecke@6053:                       <federal>
aheinecke@6053:                         <dc:for-each>
aheinecke@6053:                           <floodmaps factory="wmsfloodmapsfactory"
aheinecke@6053:                             ids="{$river_id};{$name}"
aheinecke@6053:                             name="{$name}"/>
aheinecke@6053:                         </dc:for-each>
aheinecke@6053:                       </federal>
aheinecke@5534:                     </dc:if>
aheinecke@5534:                   </dc:context>
aheinecke@6053:                 </potential>
aheinecke@5547:               </dc:if>
aheinecke@5547:             </dc:context>
aheinecke@6053:           </calculations>
aheinecke@6053:           <dc:context>
teichmann@5523:             <dc:statement>
aheinecke@6053:               SELECT DISTINCT
aheinecke@6053:                 source AS source
aheinecke@6053:               FROM floodmaps
aheinecke@6053:               WHERE river_id = ${river_id} AND kind = 200
teichmann@5523:             </dc:statement>
aheinecke@6053:             <dc:if test="dc:has-result()">
aheinecke@6053:               <measurements>
teichmann@5523:                 <dc:for-each>
aheinecke@6053:                   <year name="{$source}">
aheinecke@6053:                     <dc:context>
aheinecke@6053:                       <dc:statement>
aheinecke@6053:                         SELECT DISTINCT
aheinecke@6053:                           name AS name
aheinecke@6053:                         FROM floodmaps
aheinecke@6053:                         WHERE river_id = ${river_id} AND kind = 200 AND source =
aheinecke@6053:                         ${source}
aheinecke@6053:                       </dc:statement>
aheinecke@6053:                       <dc:for-each>
aheinecke@6053:                         <floodmaps factory="wmsfloodmapsfactory"
aheinecke@6053:                           ids="{$river_id};{$name}"
aheinecke@6053:                           name="{$name}"/>
aheinecke@6053:                       </dc:for-each>
aheinecke@6053:                     </dc:context>
aheinecke@6053:                   </year>
teichmann@5523:                 </dc:for-each>
aheinecke@6053:               </measurements>
aheinecke@6053:             </dc:if>
aheinecke@6053:           </dc:context>
aheinecke@6053:         </uesk>
aheinecke@6053:       </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
teichmann@5523: 
aheinecke@6053:     <dc:macro name="flood-map-floodplain">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT DISTINCT
aheinecke@6053:             fp.kind_id AS kind_id,
aheinecke@6053:             flk.name AS kind_name
aheinecke@6053:           FROM floodplain fp
aheinecke@6053:             JOIN floodplain_kinds flk on fp.kind_id = flk.id
aheinecke@6053:           WHERE river_id = ${river_id}
aheinecke@6053:             AND kind_id=1
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <floodplain>
aheinecke@6053:             <dc:filter expr="$kind_id=1">
aheinecke@6053:               <dc:for-each>
aheinecke@6053:                 <floody factory="wmsfloodplainfactory"
aheinecke@6053:                         description="{$kind_name}"
aheinecke@6053:                         ids="{$river_id};{$kind_name};{$kind_id}"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </dc:filter>
aheinecke@6053:             <dc:filter expr="kind_id!=1">
aheinecke@6053:               <other>
teichmann@5523:                 <dc:for-each>
aheinecke@6053:                   <floody factory="wmsfloodplainfactory"
aheinecke@6053:                           description="{$layer_name}"
aheinecke@6053:                           ids="{$river_id};{$layer_name};{$kind_id}"/>
teichmann@5523:                 </dc:for-each>
aheinecke@6053:               </other>
aheinecke@6053:             </dc:filter>
aheinecke@6053:           </floodplain>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
rrenkert@5015: 
aheinecke@6053:     <dc:macro name="hwspoints_by_kind">
aheinecke@6053:       <dc:comment>
aheinecke@6053:         Call from a context where fed_name hws_kind hws_name and river_id is
aheinecke@6053:         availble
aheinecke@6053:       </dc:comment>
rrenkert@5015: 
aheinecke@6053:       <dc:macro name="hwspoints_by_kind_factory">
aheinecke@6053:         <dc:for-each>
aheinecke@6053:           <hws factory="wmshwspointsfactory"
aheinecke@6053:                ids="{$river_id};{$hws_name}"
aheinecke@6053:                name="{$hws_name}"/>
aheinecke@6053:         </dc:for-each>
aheinecke@6053:       </dc:macro>
teichmann@5523: 
aheinecke@6053:       <dc:filter expr="$hws_kind=1">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <Durchlass>
aheinecke@6053:             <dc:call-macro name="hwspoints_by_kind_factory"/>
aheinecke@6053:           </Durchlass>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
teichmann@5523: 
aheinecke@6053:       <dc:filter expr="$hws_kind=2">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <Damm>
aheinecke@6053:             <dc:call-macro name="hwspoints_by_kind_factory"/>
aheinecke@6053:           </Damm>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
ingo@2096: 
aheinecke@6053:       <dc:filter expr="$hws_kind=3">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <Graben>
aheinecke@6053:             <dc:call-macro name="hwspoints_by_kind_factory"/>
aheinecke@6053:           </Graben>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
teichmann@5523: 
aheinecke@6053:     <dc:macro name="hwspoints">
aheinecke@6053:       <hws_points>
aheinecke@6053:         <official>
aheinecke@6053:           <dc:context>
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT DISTINCT
aheinecke@6053:                 fs.name AS fed_name,
aheinecke@6053:                 fs.id AS fed_id
aheinecke@6053:               FROM hws_points hws
aheinecke@6053:                 JOIN fed_states fs ON hws.fed_state_id = fs.id
aheinecke@6053:               WHERE river_id = ${river_id}
aheinecke@6053:                 AND hws.official=1
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <dc:for-each>
teichmann@5523:               <dc:context>
teichmann@5523:                 <dc:statement>
aheinecke@6053:                   SELECT DISTINCT
aheinecke@6053:                     name AS hws_name,
aheinecke@6053:                     kind_id AS hws_kind
aheinecke@6053:                   FROM hws_points
aheinecke@6053:                   WHERE river_id = ${river_id}
aheinecke@6053:                     AND official=1
aheinecke@6053:                     AND fed_state_id = ${fed_id} ORDER BY name
teichmann@5523:                 </dc:statement>
aheinecke@6053:                 <fedstate description="{$fed_name}">
aheinecke@6053:                   <dc:call-macro name="hwspoints_by_kind"/>
aheinecke@6053:                 </fedstate>
teichmann@5523:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </dc:context>
aheinecke@6053:           <dc:context>
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT distinct
aheinecke@6053:                 name AS hws_name,
aheinecke@6053:                 kind_id AS hws_kind
aheinecke@6053:               FROM hws_points
aheinecke@6053:               WHERE river_id = ${river_id}
aheinecke@6053:                 AND official=1
aheinecke@6053:                 AND fed_state_id IS NULL
aheinecke@6053:                 ORDER BY name
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <hws_fed_unknown>
aheinecke@6053:               <dc:call-macro name="hwspoints_by_kind"/>
aheinecke@6053:             </hws_fed_unknown>
aheinecke@6053:           </dc:context>
aheinecke@6053:         </official>
aheinecke@6053:         <inofficial>
aheinecke@6053:           <dc:context>
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT DISTINCT
aheinecke@6053:                 fs.name AS fed_name,
aheinecke@6053:                 fs.id AS fed_id
aheinecke@6053:               FROM hws_points hws
aheinecke@6053:                 JOIN fed_states fs ON hws.fed_state_id = fs.id
aheinecke@6053:               WHERE river_id = ${river_id}
aheinecke@6053:                 AND hws.official=0
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT DISTINCT
aheinecke@6053:                     name AS hws_name,
aheinecke@6053:                     kind_id AS hws_kind
aheinecke@6053:                   FROM hws_points
aheinecke@6053:                   WHERE river_id = ${river_id}
aheinecke@6053:                     AND official=0
aheinecke@6053:                     AND fed_state_id = ${fed_id} ORDER BY name
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <fedstate description="{$fed_name}">
aheinecke@6053:                   <dc:call-macro name="hwspoints_by_kind"/>
aheinecke@6053:                 </fedstate>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </dc:context>
aheinecke@6053:           <dc:context>
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT distinct
aheinecke@6053:                 name AS hws_name,
aheinecke@6053:                 kind_id AS hws_kind
aheinecke@6053:               FROM hws_points
aheinecke@6053:               WHERE river_id = ${river_id}
aheinecke@6053:                 AND official=0
aheinecke@6053:                 AND fed_state_id IS NULL ORDER BY name
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <hws_fed_unknown>
aheinecke@6053:               <dc:call-macro name="hwspoints_by_kind"/>
aheinecke@6053:             </hws_fed_unknown>
aheinecke@6053:           </dc:context>
aheinecke@6053:         </inofficial>
aheinecke@6053:       </hws_points>
aheinecke@6053:     </dc:macro>
teichmann@5523: 
aheinecke@6053:     <dc:macro name="hwslines_by_kind">
aheinecke@6053:       <dc:comment>
aheinecke@6053:         Call from a context where fed_name hws_kind hws_name and river_id is
aheinecke@6053:         availble
aheinecke@6053:       </dc:comment>
rrenkert@5549: 
aheinecke@6053:       <dc:macro name="hwslines_by_kind_factory">
aheinecke@6053:         <dc:for-each>
aheinecke@6053:           <hws factory="wmshwslinesfactory"
aheinecke@6053:                ids="{$river_id};{$hws_name}"
aheinecke@6053:                name="{$hws_name}"/>
aheinecke@6053:         </dc:for-each>
aheinecke@6053:       </dc:macro>
rrenkert@5549: 
aheinecke@6053:       <dc:filter expr="$hws_kind=1">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <Durchlass>
aheinecke@6053:             <dc:call-macro name="hwslines_by_kind_factory"/>
aheinecke@6053:           </Durchlass>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053: 
aheinecke@6053:       <dc:filter expr="$hws_kind=2">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <Damm>
aheinecke@6053:             <dc:call-macro name="hwslines_by_kind_factory"/>
aheinecke@6053:           </Damm>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053: 
aheinecke@6053:       <dc:filter expr="$hws_kind=3">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <Graben>
aheinecke@6053:             <dc:call-macro name="hwslines_by_kind_factory"/>
aheinecke@6053:           </Graben>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="hwslines">
aheinecke@6053:       <hws_lines>
aheinecke@6053:         <official>
aheinecke@6053:           <dc:context>
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT DISTINCT
aheinecke@6053:                 fs.name AS fed_name,
aheinecke@6053:                 fs.id AS fed_id
aheinecke@6053:               FROM hws_lines hws
aheinecke@6053:                 JOIN fed_states fs ON hws.fed_state_id = fs.id
aheinecke@6053:               WHERE river_id = ${river_id}
aheinecke@6053:                 AND hws.official=1
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT DISTINCT
aheinecke@6053:                     name AS hws_name,
aheinecke@6053:                     kind_id AS hws_kind
aheinecke@6053:                   FROM hws_lines
aheinecke@6053:                   WHERE river_id = ${river_id}
aheinecke@6053:                     AND official=1
aheinecke@6053:                     AND fed_state_id = ${fed_id} ORDER BY name
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <fedstate description="{$fed_name}">
aheinecke@6053:                   <dc:call-macro name="hwslines_by_kind"/>
aheinecke@6053:                 </fedstate>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </dc:context>
aheinecke@6053:           <dc:context>
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT distinct
aheinecke@6053:                 name AS hws_name,
aheinecke@6053:                 kind_id AS hws_kind
aheinecke@6053:               FROM hws_lines
aheinecke@6053:               WHERE river_id = ${river_id}
aheinecke@6053:                 AND official=1
aheinecke@6053:                 AND fed_state_id IS NULL
aheinecke@6053:                 ORDER BY name
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <hws_fed_unknown>
aheinecke@6053:               <dc:call-macro name="hwslines_by_kind"/>
aheinecke@6053:             </hws_fed_unknown>
aheinecke@6053:           </dc:context>
aheinecke@6053:         </official>
aheinecke@6053:         <inofficial>
aheinecke@6053:           <dc:context>
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT DISTINCT
aheinecke@6053:                 fs.name AS fed_name,
aheinecke@6053:                 fs.id AS fed_id
aheinecke@6053:               FROM hws_lines hws
aheinecke@6053:                 JOIN fed_states fs ON hws.fed_state_id = fs.id
aheinecke@6053:               WHERE river_id = ${river_id}
aheinecke@6053:                 AND hws.official=0
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:context>
aheinecke@6053:                 <dc:statement>
aheinecke@6053:                   SELECT DISTINCT
aheinecke@6053:                     name AS hws_name,
aheinecke@6053:                     kind_id AS hws_kind
aheinecke@6053:                   FROM hws_lines
aheinecke@6053:                   WHERE river_id = ${river_id}
aheinecke@6053:                     AND official=0
aheinecke@6053:                     AND fed_state_id = ${fed_id} ORDER BY name
aheinecke@6053:                 </dc:statement>
aheinecke@6053:                 <fedstate description="{$fed_name}">
aheinecke@6053:                   <dc:call-macro name="hwslines_by_kind"/>
aheinecke@6053:                 </fedstate>
aheinecke@6053:               </dc:context>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </dc:context>
aheinecke@6053:           <dc:context>
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT distinct
aheinecke@6053:                 name AS hws_name,
aheinecke@6053:                 kind_id AS hws_kind
aheinecke@6053:               FROM hws_lines
aheinecke@6053:               WHERE river_id = ${river_id}
aheinecke@6053:                 AND official=0
aheinecke@6053:                 AND fed_state_id IS NULL ORDER BY name
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <hws_fed_unknown>
aheinecke@6053:               <dc:call-macro name="hwslines_by_kind"/>
aheinecke@6053:             </hws_fed_unknown>
aheinecke@6053:           </dc:context>
aheinecke@6053:         </inofficial>
aheinecke@6053:       </hws_lines>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="floodmarks">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT DISTINCT
aheinecke@6053:             COALESCE(CAST (year AS VARCHAR(64)), 'Unbekanntes Jahr') AS year
aheinecke@6053:           FROM flood_marks
aheinecke@6053:           WHERE river_id = ${river_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <floodmarks>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <floodmark name="{$year}"
aheinecke@6053:                 factory="wmsfloodmarkfactory"
aheinecke@6053:                 ids="{$river_id};{$year};{$year}"/>
aheinecke@6053:             </dc:for-each>
aheinecke@6053:           </floodmarks>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="catchments">
aheinecke@6053:       <catchments>
aheinecke@6053:         <catchment_wms factory="externalwmsfactory"
aheinecke@6053:                        ids="http://geoportal.bafg.de/wmsproxy/INSPIRE/DrainageBasin;HY.PHYSICALWATERS.CATCHMENTS;Einzugsgebiete (WMS)" />
aheinecke@6053:         <dc:call-macro name="flood-map-gaugelocations"/>
aheinecke@6053:       </catchments>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-gaugelocations">
aheinecke@6053:       <gaugelocations>
aheinecke@6053:         <gauge_points factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelpunkte;Pegelpunkte (WSV)"/>
aheinecke@6053:         <gauge_names factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelnamen;Pegelnamen (WSV)"/>
aheinecke@6053:         <gauge_level factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelwasserstand;Aktueller Wasserstand (WSV)"/>
aheinecke@6053:         <gauge_tendency factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;TendenzWasserstand;Tendenz des Wasserstands (WSV)"/>
aheinecke@6053:       </gaugelocations>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-riveraxis">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT DISTINCT
aheinecke@6053:             ak.name    AS kind_name,
aheinecke@6053:             ax.kind_id AS kind_id,
aheinecke@6053:             ax.name    AS layer_name
aheinecke@6053:           FROM river_axes ax
aheinecke@6053:             JOIN axis_kinds ak on ax.kind_id = ak.id
aheinecke@6053:           WHERE river_id = ${river_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <axis>
aheinecke@6053:             <dc:filter expr="$kind_id=1">
aheinecke@6053:               <dc:for-each>
aheinecke@6053:                 <actual description="{$kind_name}"
aheinecke@6053:                         ids="{$river_id};{$kind_name};{$kind_id}"
aheinecke@6053:                         factory="riveraxis"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </dc:filter>
aheinecke@6053:             <dc:filter expr="$kind_id!=1">
aheinecke@6053:               <other>
rrenkert@5591:                 <dc:for-each>
aheinecke@6053:                   <misc-axis description="{$layer_name}"
aheinecke@6053:                              ids="{$river_id};{$layer_name};{$kind_id}"
aheinecke@6053:                              factory="riveraxis"/>
rrenkert@5591:                 </dc:for-each>
aheinecke@6053:               </other>
aheinecke@6053:             </dc:filter>
aheinecke@6053:           </axis>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
rrenkert@5631: 
aheinecke@6053:     <dc:macro name="flood-map-km">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT DISTINCT 1 FROM river_axes_km WHERE river_id = ${river_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:          <dc:for-each>
aheinecke@6053:             <kilometrage factory="wmskmfactory" ids="{$river_id}"/>
aheinecke@6053:         </dc:for-each>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
rrenkert@5631: 
aheinecke@6053:     <dc:macro name="flood-map-fixpoints">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT name AS name
aheinecke@6053:           FROM fixpoints
aheinecke@6053:           WHERE river_id = ${river_id}
aheinecke@6053:             GROUP BY name
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:for-each>
aheinecke@6053:           <fixpoints factory="wmsfixpointsfactory"
aheinecke@6053:             ids="{$river_id};{$name}"/>
aheinecke@6053:         </dc:for-each>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-qps">
aheinecke@6053:       <dc:context>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT DISTINCT
aheinecke@6053:             cs.kind_id AS kind_id,
aheinecke@6053:             cs.name    AS layer_name,
aheinecke@6053:             ck.name    AS kind_name
aheinecke@6053:           FROM cross_section_tracks cs
aheinecke@6053:             JOIN cross_section_track_kinds ck ON cs.kind_id = ck.id
aheinecke@6053:           WHERE river_id = ${river_id}
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <qps>
aheinecke@6053:             <dc:filter expr="$kind_id=1">
aheinecke@6053:               <dc:for-each>
aheinecke@6053:                 <actual description="{$kind_name}"
aheinecke@6053:                         factory="wmsqpsfactory"
aheinecke@6053:                         ids="{$river_id};{$kind_name};{$kind_id}"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </dc:filter>
aheinecke@6053:             <dc:filter expr="kind_id=0">
aheinecke@6053:               <other>
rrenkert@5669:                 <dc:for-each>
aheinecke@6053:                   <misc-qps description="{$layer_name}"
aheinecke@6053:                             factory="wmsqpsfactory"
aheinecke@6053:                             ids="{$river_id};{$layer_name};{$kind_id}"/>
rrenkert@5669:                 </dc:for-each>
aheinecke@6053:               </other>
aheinecke@6053:             </dc:filter>
aheinecke@6053:           </qps>
aheinecke@6053:         </dc:if>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
rrenkert@5549: 
aheinecke@6053:     <dc:macro name="flood-map-buildings">
aheinecke@6053:       <buildings>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT DISTINCT
aheinecke@6053:               b.name AS building_name,
aheinecke@6053:               bk.name AS building_kind,
aheinecke@6053:               b.kind_id AS building_kind_id
aheinecke@6053:             FROM buildings b
aheinecke@6053:               JOIN building_kinds bk ON b.kind_id = bk.id
aheinecke@6053:             WHERE river_id = ${river_id}
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:if test="dc:has-result()">
aheinecke@6053:             <dc:filter expr="$building_kind_id!=0">
aheinecke@6053:               <dc:for-each>
aheinecke@6053:                 <buildings description="{$building_kind}"
aheinecke@6053:                            factory="wmsbuildingsfactory"
aheinecke@6053:                            ids="{$river_id};{$building_kind};{$building_kind_id}"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </dc:filter>
aheinecke@6053:             <dc:filter expr="$building_kind_id=0">
aheinecke@6053:               <other>
aheinecke@6053:                 <dc:for-each>
aheinecke@6053:                   <buildings description="{$building_name}"
aheinecke@6053:                              factory="wmsbuildingsfactory"
aheinecke@6053:                              ids="{$river_id};{$building_name}"/>
aheinecke@6053:                 </dc:for-each>
aheinecke@6053:               </other>
aheinecke@6053:             </dc:filter>
aheinecke@6053:           </dc:if>
aheinecke@6053:         </dc:context>
aheinecke@6053:         <dc:context>
aheinecke@6053:           <dc:statement>
aheinecke@6053:             SELECT DISTINCT
aheinecke@6053:               j.kind_id AS jetty_kind_id,
aheinecke@6053:               jk.name AS jetty_kind
aheinecke@6053:             FROM jetties j
aheinecke@6053:               JOIN jetty_kinds jk ON j.kind_id = jk.id
aheinecke@6053:             WHERE river_id = ${river_id}
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:if test="dc:has-result()">
aheinecke@6053:             <jetties>
aheinecke@6053:               <dc:for-each>
aheinecke@6053:                 <jetty description="{$jetty_kind}"
aheinecke@6053:                        factory="wmsjettiesfactory"
aheinecke@6053:                        ids="{$river_id};{$jetty_kind};{$jetty_kind_id}"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </jetties>
aheinecke@6053:           </dc:if>
aheinecke@6053:         </dc:context>
aheinecke@6053:       </buildings>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6054:     <dc:macro name="officiallines_user">
aheinecke@6054:       <dc:comment comment=".wst -------------------------------"/>
aheinecke@6054:       <officiallines>
aheinecke@6054:         <dc:for-each>
aheinecke@6054:           <dc:context>
aheinecke@6054:             <dc:statement>
aheinecke@6054:               SELECT m.id       AS a_id,
aheinecke@6054:                      m.state    AS a_state,
aheinecke@6054:                      m.gid      AS a_gid,
aheinecke@6054:                      m.creation AS a_creation,
aheinecke@6054:                      ardg.v     AS gaugy,
aheinecke@6054:                      arv.v      AS wqsingle
aheinecke@6054:               FROM   master_artifacts m,
aheinecke@6054:               artifact_data ardg,
aheinecke@6054:               artifact_data arv
aheinecke@6054:               WHERE  m.collection_id = ${collection_id}
aheinecke@6054:               AND m.gid = CAST(${artifact-id} AS uuid)
aheinecke@6054:               AND ardg.artifact_id = m.id
aheinecke@6054:               AND ardg.k = 'ld_gaugename'
aheinecke@6054:               AND arv.artifact_id = m.id
aheinecke@6054:               AND arv.k = 'wq_single'
aheinecke@6054:               AND EXISTS (
aheinecke@6054:               SELECT id
aheinecke@6054:               FROM artifact_data ad
aheinecke@6054:               WHERE ad.artifact_id = m.id
aheinecke@6054:               AND k = 'river'
aheinecke@6054:               AND v = ${river})
aheinecke@6054:             </dc:statement>
aheinecke@6054:             <dc:for-each>
aheinecke@6054:               <dc:context connection="system">
aheinecke@6054:                 <dc:statement>
aheinecke@6054:                   SELECT ol.wst_id         AS wstid,
aheinecke@6054:                          ol.wst_column_pos AS wstcolpos,
aheinecke@6054:                          ol.name           AS olname,
aheinecke@6054:                          ol.value          AS oval
aheinecke@6054:                   FROM official_q_values ol
aheinecke@6054:                   WHERE ol.value = CAST(${wqsingle} AS NUMERIC(10,2))
aheinecke@6054:                   AND ol.gauge_name = ${gaugy}
aheinecke@6054:                 </dc:statement>
aheinecke@6054:                 <dc:for-each>
aheinecke@6054:                   <dc:element name="${olname}">
aheinecke@6054:                     <dc:attribute name="name" value="${olname}"/>
aheinecke@6054:                     <dc:attribute name="ids" value="additionals-wstv-${wstcolpos}-${wstid}"/>
aheinecke@6054:                     <dc:attribute name="factory" value="staticwkms"/>
aheinecke@6054:                     <dc:attribute name="out" value="${out}"/>
aheinecke@6054:                   </dc:element>
aheinecke@6054:                 </dc:for-each>
aheinecke@6054:               </dc:context>
aheinecke@6054:             </dc:for-each>
aheinecke@6054:           </dc:context>
aheinecke@6054:         </dc:for-each>
aheinecke@6054:       </officiallines>
aheinecke@6054:     </dc:macro>
aheinecke@6054: 
aheinecke@6053:     <!-- Common stuff -->
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="km-filtered-wsts">
aheinecke@6053:       <dc:context connection="system">
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT w.kind         AS kind,
aheinecke@6053:                  w.id           AS wst_id,
aheinecke@6053:                  wc.id          AS wst_column_id,
aheinecke@6053:                  wc.position    AS wst_column_position,
aheinecke@6053:                  wc.description AS info,
aheinecke@6053:                  w.description  AS wst_description,
aheinecke@6053:                  wc.name        AS wst_column_name,
aheinecke@6053:                  wr.a           AS deffrom,
aheinecke@6053:                  wr.b           AS defto
aheinecke@6053:           FROM wst_columns wc
aheinecke@6053:             JOIN wsts w        ON wc.wst_id = w.id
aheinecke@6053:             JOIN wst_ranges wr ON wc.id = wr.wst_column_id
aheinecke@6053:           WHERE w.river_id = ${river_id} AND
aheinecke@6053:             NOT((${tokm} &lt; wr.a) or (${fromkm} &gt; wr.b))
aheinecke@6053:         </dc:statement>
aheinecke@6053:         <dc:macro-body/>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="km-filtered-userdata">
felix@6072:         <dc:context connection="user">
felix@6072:         <dc:comment>Select collections and masterartifacts.</dc:comment>
aheinecke@6053:         <dc:statement>
aheinecke@6053:           SELECT c.name                     AS collection_name,
aheinecke@6053:                  ma.id                      AS a_id,
aheinecke@6053:                  ma.state                   AS a_state,
aheinecke@6053:                  ma.gid                     AS a_gid,
aheinecke@6053:                  ma.creation                AS a_creation,
felix@6069:                  COALESCE(ma.ld_mode, '')      AS ld_m,
felix@6069:                  COALESCE(ma.ld_locations, '') AS ld_l,
felix@6069:                  COALESCE(ma.ld_from, '')      AS ld_f,
felix@6069:                  COALESCE(ma.ld_to, '')        AS ld_t
aheinecke@6053:           FROM users u
aheinecke@6053:             JOIN collections c             ON c.user_id = u.id
aheinecke@6053:             JOIN master_artifacts_range ma ON ma.collection_id = c.id
felix@6070:           WHERE  u.gid = CAST(${user-id} AS UUID)
aheinecke@6053:             AND ma.gid &lt;&gt; CAST(${artifact-id} AS uuid)
aheinecke@6053:             AND EXISTS (
aheinecke@6053:               SELECT id
aheinecke@6053:               FROM artifact_data ad
aheinecke@6053:               WHERE ad.artifact_id = ma.id
aheinecke@6053:                 AND k = 'river'
aheinecke@6053:                 AND v = ${river})
aheinecke@6053:         </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6053:             <dc:variable name="from" type="number" expr="dc:fromValue($ld_m, $ld_l, $ld_f)"/>
aheinecke@6053:             <dc:variable name="to" type="number" expr="dc:toValue($ld_m, $ld_l, $ld_t)"/>
felix@6071:             <dc:if test="not (($tokm &lt; $from) or $fromkm &gt; $tokm)">
aheinecke@6053:               <dc:macro-body/>
aheinecke@6053:             </dc:if>
aheinecke@6053:           </dc:for-each>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="user-range">
aheinecke@6053:       <dc:choose>
aheinecke@6053:         <dc:when test="dc:contains($parameters, 'user-id')">
aheinecke@6053:           <dc:context connection="user">
aheinecke@6053:             <dc:statement>
aheinecke@6053:               SELECT COALESCE(ld_mode, '')      AS ldm,
aheinecke@6053:                      COALESCE(ld_locations, '') AS ldl,
aheinecke@6053:                      COALESCE(ld_from, '')      AS ldf,
aheinecke@6053:                      COALESCE(ld_to, '')        AS ldt
aheinecke@6053:               FROM master_artifacts_range
aheinecke@6053:               WHERE gid = CAST(${artifact-id} AS uuid)
aheinecke@6053:             </dc:statement>
aheinecke@6053:             <dc:for-each>
aheinecke@6053:               <dc:variable name="fromkm" type="number" expr="dc:fromValue($ldm, $ldl, $ldf)"/>
aheinecke@6053:               <dc:variable name="tokm" type="number" expr="dc:toValue($ldm, $ldl, $ldt)"/>
aheinecke@6053:               <dc:macro-body/>
aheinecke@6053:             </dc:for-each>
teichmann@5523:           </dc:context>
aheinecke@6053:         </dc:when>
aheinecke@6053:         <dc:otherwise>
aheinecke@6053:           <dc:variable name="fromkm" type="number" expr="dc:fromValue('', '', '')"/>
aheinecke@6053:           <dc:variable name="tokm" type="number" expr="dc:toValue('', '', '')"/>
aheinecke@6053:           <dc:macro-body/>
aheinecke@6053:         </dc:otherwise>
aheinecke@6053:       </dc:choose>
aheinecke@6053:     </dc:macro>
ingo@1657: 
aheinecke@6053:   </datacage>
sascha@1046: </dc:template>