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@6183:       This is a hack because we currently have no way to supress empty
aheinecke@6183:       folders (either in the client or in the datacage).
aheinecke@6053:     </dc:comment>
aheinecke@6183:     <dc:if test="dc:contains($parameters, 'user-id') and
aheinecke@6183:       not(dc:contains($artifact-outs, 'floodmap-hws')) and
aheinecke@6183:       not($current-state-id = 'state.winfo.uesk.dgm')">
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@6183:       <dc:call-macro name="artifact-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>
rrenkert@6363:                   <dc:when test="$out = 'sedimentload_ls'">
rrenkert@6363:                     <dc:call-macro name="annotations"/>
rrenkert@6363:                   </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'">
rrenkert@6439:                     <dc:call-macro name="longitudinal-section-prototype"/>
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@6277:                   <dc:when test="$out = 'bed_difference_height_year'">
aheinecke@6277:                     <dc:call-macro name="basedata_0"/>
aheinecke@6277:                     <dc:call-macro name="basedata_1_additionals"/>
aheinecke@6277:                     <dc:call-macro name="basedata_2_fixations"/>
aheinecke@6277:                     <dc:call-macro name="basedata_3_officials"/>
aheinecke@6277:                     <dc:call-macro name="basedata_6_delta_w"/>
aheinecke@6277:                     <dc:call-macro name="annotations_per_type"/>
aheinecke@6277:                     <dc:call-macro name="morph_width"/>
aheinecke@6277:                   </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"/>
rrenkert@6226:                     <dc:call-macro name="basedata_6_delta_w"/>
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: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'">
teichmann@6099:                     <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">
aheinecke@6183:       <dc:call-macro name="artifact-range">
aheinecke@6095:         <dc:call-macro name="all-user-artifacts">
aheinecke@6095:           <dc:call-macro name="km-filtered-user-artifacts">
aheinecke@6095:             <dc:choose>
aheinecke@6095:               <dc:when test="dc:contains($parameters, 'recommended')">
aheinecke@6095:                 <dc:comment>
aheinecke@6095:                   Recommendations (user)
aheinecke@6095:                 </dc:comment>
aheinecke@6095:                 <dc:iterate var="out" container="artifact-outs">
aheinecke@6095:                   <dc:choose>
aheinecke@6095:                     <dc:when test="$out = 'longitudinal_section'">
aheinecke@6095:                       <dc:call-macro name="officiallines_user"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                   </dc:choose>
aheinecke@6095:                 </dc:iterate>
aheinecke@6095:               </dc:when>
aheinecke@6095:               <dc:otherwise>
aheinecke@6095:                 <dc:comment>
aheinecke@6095:                   Non Recommendations (user)
aheinecke@6095:                 </dc:comment>
aheinecke@6095:                 <dc:iterate var="out" container="artifact-outs">
aheinecke@6095:                   <dc:choose>
aheinecke@6095:                     <dc:when test="$out = 'longitudinal_section'">
aheinecke@6095:                       <dc:call-macro name="longitudinal"/>
aheinecke@6095:                       <dc:call-macro name="differences"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'discharge_longitudinal_section'">
aheinecke@6095:                       <dc:call-macro name="longitudinal"/>
aheinecke@6095:                       <dc:call-macro name="differences"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'w_differences'">
aheinecke@6095:                       <dc:call-macro name="longitudinal"/>
aheinecke@6095:                       <dc:call-macro name="differences"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'fix_deltawt_curve'">
aheinecke@6095:                       <dc:call-macro name="delta-wt"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'reference_curve'">
aheinecke@6095:                       <dc:call-macro name="reference-curves"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'computed_discharge_curve'">
aheinecke@6095:                       <dc:call-macro name="computed-discharge-curve"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'cross_section'">
aheinecke@6095:                       <dc:call-macro name="waterlevels"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'fix_longitudinal_section_curve'">
aheinecke@6095:                       <dc:call-macro name="longitudinal-section"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'fix_derivate_curve'">
aheinecke@6095:                       <dc:call-macro name="fix-derivate-curve"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'fix_wq_curve'">
aheinecke@6095:                       <dc:call-macro name="fix-wq-curve"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'duration_curve'">
aheinecke@6095:                       <dc:call-macro name="duration-curve"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'waterlevels'">
aheinecke@6095:                       <dc:call-macro name="waterlevels-fix"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'fix_wq_curve'">
aheinecke@6095:                       <dc:call-macro name="waterlevels-fix"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'floodmap'">
aheinecke@6095:                       <dc:call-macro name="flood-map"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'map'">
aheinecke@6095:                       <dc:call-macro name="flood-map"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'bedheight_middle'">
aheinecke@6095:                       <dc:call-macro name="waterlevels-discharge"/>
aheinecke@6095:                       <dc:call-macro name="waterlevels-fix"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'floodmap-hws'">
aheinecke@6095:                       <dc:call-macro name="floodmap-hws-user"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'flow_velocity'">
aheinecke@6095:                       <dc:call-macro name="bedquality-bed"/>
aheinecke@6095:                       <dc:call-macro name="bedquality-load"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'bed_longitudinal_section'">
aheinecke@6095:                       <dc:call-macro name="bedquality-bed"/>
aheinecke@6095:                       <dc:call-macro name="bedquality-load"/>
aheinecke@6095:                       <dc:call-macro name="bedquality-density"/>
aheinecke@6095:                       <dc:call-macro name="bedquality-porosity"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'sedimentload_ls'">
aheinecke@6095:                       <dc:call-macro name="differences"/>
aheinecke@6095:                       <dc:call-macro name="bedheight-differences"/>
aheinecke@6095:                       <dc:call-macro name="flow-velocity"/>
aheinecke@6095:                       <dc:call-macro name="sediment-load"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'bed_difference_year'">
aheinecke@6095:                       <dc:call-macro name="waterlevels-discharge"/>
aheinecke@6095:                       <dc:call-macro name="bedheight-differences"/>
aheinecke@6095:                       <dc:call-macro name="differences"/>
aheinecke@6095:                       <dc:call-macro name="waterlevels-fix"/>
aheinecke@6095:                       <dc:call-macro name="delta-wt-ls"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                     <dc:when test="$out = 'bed_difference_epoch'">
aheinecke@6095:                       <dc:call-macro name="waterlevels-discharge"/>
aheinecke@6095:                       <dc:call-macro name="bedheight-differences"/>
aheinecke@6095:                       <dc:call-macro name="differences"/>
aheinecke@6095:                       <dc:call-macro name="waterlevels-fix"/>
aheinecke@6095:                       <dc:call-macro name="delta-wt-ls"/>
aheinecke@6095:                     </dc:when>
aheinecke@6095:                   </dc:choose>
aheinecke@6095:                 </dc:iterate>
aheinecke@6095:               </dc:otherwise>
aheinecke@6095:             </dc:choose>
aheinecke@6095:           </dc:call-macro>
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@6110:     <dc:macro name="differences">
aheinecke@6110:       <dc:filter expr="$facet_name = 'w_differences'">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6110:           <differences>
aheinecke@6110:             <dc:for-each>
aheinecke@6110:               <w_differences
aheinecke@6110:                 description="{$facet_description}"
aheinecke@6124:                 factory="winfo" target_out="{$out}"
aheinecke@6110:                 artifact-id="{$aid}"
aheinecke@6110:                 ids="{$aid}"
aheinecke@6110:                 out="w_differences"/>
aheinecke@6110:             </dc:for-each>
aheinecke@6110:           </differences>
aheinecke@6053:         </dc:if>
aheinecke@6110:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@5976: 
aheinecke@6053:     <dc:macro name="reference-curves">
aheinecke@6111:       <dc:filter expr="$facet_name = 'reference_curve'">
aheinecke@6111:         <dc:if test="dc:has-result()">
aheinecke@6111:           <reference_curves>
aheinecke@6111:             <dc:for-each>
aheinecke@6111:               <dc:element name="${facet_name}">
aheinecke@6111:                 <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                 <dc:attribute name="factory" value="winfo"/>
aheinecke@6124:                 <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                 <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                 <dc:attribute name="ids" value="${a_id}"/>
aheinecke@6111:                 <dc:attribute name="out" value="reference_curve"/>
aheinecke@6111:               </dc:element>
aheinecke@6111:             </dc:for-each>
aheinecke@6111:           </reference_curves>
aheinecke@6111:         </dc:if>
aheinecke@6111:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="computed-discharge-curve">
aheinecke@6111:       <dc:filter expr="$facet_name = 'computed_discharge_curve.q'">
aheinecke@6111:         <dc:if test="dc:has-result()">
aheinecke@6111:           <computed_discharge_curves>
aheinecke@6111:             <dc:for-each>
aheinecke@6111:               <dc:element name="${facet_name}">
aheinecke@6111:                 <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                 <dc:attribute name="factory" value="winfo"/>
aheinecke@6124:                 <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                 <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                 <dc:attribute name="ids" value="${a_id}"/>
aheinecke@6111:                 <dc:attribute name="out" value="computed_discharge_curve"/>
aheinecke@6111:               </dc:element>
aheinecke@6111:             </dc:for-each>
aheinecke@6111:           </computed_discharge_curves>
aheinecke@6111:         </dc:if>
aheinecke@6111:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map">
aheinecke@6111:       <dc:filter expr="$facet_name = 'floodmap.wsplgen'">
aheinecke@6111:         <dc:if test="dc:has-result()">
aheinecke@6111:           <floodmap>
aheinecke@6111:             <dc:for-each>
aheinecke@6284:               <dc:variable name="combined_desc" expr="concat($facet_description, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)"/>
aheinecke@6111:               <dc:element name="${facet_name}">
aheinecke@6237:                 <dc:attribute name="description" value="${combined_desc}"/>
aheinecke@6111:                 <dc:attribute name="factory" value="winfo"/>
aheinecke@6124:                 <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                 <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                 <dc:attribute name="ids" value="${a_id}"/>
aheinecke@6111:                 <dc:attribute name="out" value="floodmap"/>
aheinecke@6111:               </dc:element>
aheinecke@6111:             </dc:for-each>
aheinecke@6111:           </floodmap>
aheinecke@6111:         </dc:if>
aheinecke@6111:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="waterlevels">
aheinecke@6095:       <dc:filter expr="$out_name = 'cross_section'">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation))">
aheinecke@6111:               <dc:comment>Aheinecke: Why is this grouping different from the rest?</dc:comment>
aheinecke@6111:               <longitudinal_section_columns description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6111:                     <dc:attribute name="factory" value="winfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6111:                     <dc:attribute name="out" value="cross_section"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6111:               </longitudinal_section_columns>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="longitudinal">
aheinecke@6095:       <dc:filter expr="$out_name = 'longitudinal_section'">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation))">
aheinecke@6111:               <dc:comment>Aheinecke: Why is this grouping different from the rest?</dc:comment>
aheinecke@6111:               <longitudinal_section_columns description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6111:                     <dc:attribute name="factory" value="winfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6111:                     <dc:attribute name="out" value="longitudinal_section"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6111:               </longitudinal_section_columns>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="longitudinal-section">
aheinecke@6111:       <dc:filter expr="$out_name = 'fix_longitudinal_section_curve' and
aheinecke@6111:         (starts-with($facet_name, 'fix_deviation_ls') or
aheinecke@6111:         starts-with($facet_name, 'fix_sector_average_ls') or
aheinecke@6111:         starts-with($facet_name, 'fix_analysis_events_ls') or
aheinecke@6111:         starts-with($facet_name, 'fix_reference_events_ls'))">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <waterlevels description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6111:                     <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6111:                     <dc:attribute name="out" value="fix_longitudinal_section_curve"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6111:               </waterlevels>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="delta-wt">
aheinecke@6111:       <dc:filter expr="$out_name = 'fix_deltawt_curve' and
aheinecke@6111:         ($facet_name = 'fix_analysis_events_dwt' or
aheinecke@6111:         $facet_name = 'fix_analysis_periods_dwt' or
aheinecke@6111:         $facet_name = 'fix_reference_events_dwt' or
aheinecke@6111:         starts-with($facet_name, 'fix_deviation_dwt') or
aheinecke@6111:         starts-with($facet_name, 'fix_sector_average_dwt'))">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <waterlevels description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6111:                     <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6111:                     <dc:attribute name="out" value="fix_deltawt_curve"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6111:               </waterlevels>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="delta-wt-ls">
aheinecke@6111:       <dc:filter expr="$out_name = 'fix_deltawt_curve' and
aheinecke@6111:         (starts-with($facet_name, 'fix_sector_average_dwt') or
aheinecke@6111:         starts-with($facet_name, 'fix_deviation_dwt'))">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <waterlevels description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6111:                     <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6111:                     <dc:attribute name="out" value="fix_deltawt_curve"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6111:               </waterlevels>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="fix-derivate-curve">
aheinecke@6111:       <dc:filter expr="$out_name = 'fix_derivate_curve' and $facet_name = 'fix_derivate_curve'">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <waterlevels description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6111:                     <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6111:                     <dc:attribute name="out" value="fix_derivate_curve"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6111:               </waterlevels>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="fix-wq-curve">
aheinecke@6111:       <dc:filter expr="$out_name = 'fix_wq_curve' and
aheinecke@6111:         (starts-with($facet_name, 'fix_analysis_events_wq') or
aheinecke@6111:         starts-with($facet_name, 'fix_reference_events_wq') or
aheinecke@6111:         starts-with($facet_name, 'fix_sector_average_wq') or
aheinecke@6111:         $facet_name = 'fix_wq_curve')">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <waterlevels description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6111:                     <dc:attribute name="factory" value="fixanalysis"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6111:                     <dc:attribute name="out" value="fix_wq_curve"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6111:               </waterlevels>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </waterlevels>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="duration-curve">
aheinecke@6111:       <dc:filter expr="$facet_name = 'duration_curve.q' or $facet_name = 'duration_curve.w'">
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@6124:                 <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                 <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                 <dc:attribute name="ids" value="${a_id}"/>
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@6111:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6111:     <dc:comment>TODO doesnt work nicely for fix/wq-diags. Aheinecke (27.5.2013): Why?</dc:comment>
aheinecke@6053:     <dc:macro name="waterlevels-fix">
aheinecke@6324:       <dc:filter expr="($out_name = 'longitudinal_section' and $facet_name = 'longitudinal_section.w') and
aheinecke@6324:         (not ($current-state-id = 'state.winfo.uesk.wsp' and $ld_m = 'location'))">
aheinecke@6111:         <dc:if test="dc:has-result()">
aheinecke@6111:           <waterlevels>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <waterlevels description="{dc:group-key()}">
aheinecke@6095:                 <dc:for-each>
aheinecke@6324:                   <dc:choose>
aheinecke@6324:                     <dc:when test="$ld_m = 'location'">
aheinecke@6324:                       <dc:variable name="combined_desc" expr="concat($facet_description, ' an KM ', $deffrom)"/>
aheinecke@6324:                     </dc:when>
aheinecke@6324:                     <dc:otherwise>
aheinecke@6324:                       <dc:variable name="combined_desc" expr="concat($facet_description, ' von KM ',
aheinecke@6324:                         $deffrom, ' bis KM ', $defto)"/>
aheinecke@6324:                     </dc:otherwise>
aheinecke@6324:                   </dc:choose>
aheinecke@6095:                   <dc:element name="${facet_name}">
aheinecke@6279:                     <dc:attribute name="description" value="${combined_desc}"/>
aheinecke@6095:                     <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6095:                     <dc:attribute name="factory" value="winfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6095:                     <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6095:                     <dc:attribute name="out" value="longitudinal_section"/>
aheinecke@6095:                   </dc:element>
aheinecke@6095:                 </dc:for-each>
aheinecke@6095:               </waterlevels>
aheinecke@6111:             </dc:group>
aheinecke@6111:           </waterlevels>
aheinecke@6111:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="floodmap-hws-user">
aheinecke@6111:       <dc:comment>No grouping in this?</dc:comment>
aheinecke@6111:       <dc:filter expr="$out_name = 'floodmap' and $facet_name = 'floodmap.usershape'">
aheinecke@6111:         <own-hws>
aheinecke@6111:           <dc:for-each>
aheinecke@6111:             <dc:element name="${facet_name}">
aheinecke@6111:               <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:               <dc:attribute name="ids" value="${facet_num}"/>
aheinecke@6111:               <dc:attribute name="factory" value="winfo"/>
aheinecke@6124:               <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:               <dc:attribute name="artifact-id" value="${a_gid}"/>
aheinecke@6111:               <dc:attribute name="out" value="floodmap"/>
aheinecke@6111:             </dc:element>
aheinecke@6111:           </dc:for-each>
aheinecke@6111:         </own-hws>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedquality-bed">
aheinecke@6111:       <dc:filter expr="$out_name = 'bed_longitudinal_section' and
aheinecke@6111:         ($facet_name = 'bed_longitudinal_section.bed_diameter_toplayer' or
aheinecke@6111:         $facet_name = 'bed_longitudinal_section.bed_diameter_sublayer')">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bed_quality_bed>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <quality-bed description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="factory" value="minfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                     <dc:attribute name="out" value="bed_longitudinal_section"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6053:               </quality-bed>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </bed_quality_bed>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedquality-load">
aheinecke@6111:       <dc:filter expr="$out_name = 'bed_longitudinal_section' and
aheinecke@6111:         $facet_name = 'bed_longitudinal_section.bedload_diameter'">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bed_quality_load>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <quality-load description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="factory" value="minfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                     <dc:attribute name="out" value="bed_longitudinal_section"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6053:               </quality-load>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </bed_quality_load>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedquality-density">
aheinecke@6111:       <dc:filter expr="$out_name = 'bed_longitudinal_section' and
aheinecke@6111:         ($facet_name = 'bed_longitudinal_section.sediment_density_toplayer' or
aheinecke@6111:          $facet_name = 'bed_longitudinal_section.sediment_density_sublayer')">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bed_quality_density>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <density description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="factory" value="minfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                     <dc:attribute name="out" value="bed_longitudinal_section"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6053:               </density>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </bed_quality_density>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedquality-porosity">
aheinecke@6111:       <dc:filter expr="$out_name = 'bed_longitudinal_section' and
aheinecke@6111:         ($facet_name = 'bed_longitudinal_section.porosity_toplayer' or
aheinecke@6111:         $facet_name = 'bed_longitudinal_section.porosity_sublayer')">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bed_quality_porosity>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <porosity description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="factory" value="minfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                     <dc:attribute name="out" value="bed_longitudinal_section"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6053:               </porosity>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </bed_quality_porosity>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flow-velocity">
aheinecke@6111:       <dc:filter expr="$out_name = 'flow_velocity' and
aheinecke@6111:         ($facet_name = 'flow_velocity.totalchannel' or
aheinecke@6111:          $facet_name = 'flow_velocity.mainchannel' or
aheinecke@6111:          $facet_name = 'flow_velocity.totalchannel.filtered' or
aheinecke@6111:          $facet_name = 'flow_velocity.mainchannel.filtered')">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <flow-velocity>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <flow description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="factory" value="minfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                     <dc:attribute name="out" value="flow_velocity"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6053:               </flow>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </flow-velocity>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="sediment-load">
aheinecke@6111:       <dc:filter expr="$out_name = 'sedimentload_ls' and starts-with($facet_name, 'sedimentload')">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <sediment-load>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <load description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="factory" value="minfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                     <dc:attribute name="out" value="sedimentload_ls"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6053:               </load>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </sediment-load>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="bedheight-differences">
aheinecke@6111:       <dc:filter expr="($out_name = 'bed_difference_year' or $out_name = 'bed_difference_epoch') and
aheinecke@6111:         (starts-with($facet_name, 'bedheight_difference.year') or starts-with($facet_name, 'bedheight_difference.epoch'))">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <bedheight-differences>
aheinecke@6284:             <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <difference description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="factory" value="minfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                     <dc:attribute name="out" value="${out}"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6053:               </difference>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </bedheight-differences>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="waterlevels-discharge">
aheinecke@6111:       <dc:filter expr="$out_name = 'discharge_longitudinal_section' and $facet_name = 'discharge_longitudinal_section.w">
aheinecke@6053:         <dc:if test="dc:has-result()">
aheinecke@6053:           <waterlevels-discharge>
aheinecke@6284:             <dc:group expr="concat($oid, ' ', $river, ' ', $a_id, ' ', dc:date-format('dd.MM.yyyy - H:m:s', $a_creation), ' ', $collection_name)">
aheinecke@6111:               <discharge description="{dc:group-key()}">
aheinecke@6111:                 <dc:for-each>
aheinecke@6111:                   <dc:element name="${facet_name}">
aheinecke@6111:                     <dc:attribute name="factory" value="winfo"/>
aheinecke@6124:                     <dc:attribute name="target_out" value="${out}"/>
aheinecke@6111:                     <dc:attribute name="description" value="${facet_description}"/>
aheinecke@6111:                     <dc:attribute name="ids" value="${facet_num}-${facet_name}"/>
aheinecke@6111:                     <dc:attribute name="artifact-id" value="${a_id}"/>
aheinecke@6111:                     <dc:attribute name="out" value="longitudinal_section"/>
aheinecke@6111:                   </dc:element>
aheinecke@6111:                 </dc:for-each>
aheinecke@6053:               </discharge>
aheinecke@6111:             </dc:group>
aheinecke@6053:           </waterlevels-discharge>
aheinecke@6053:         </dc:if>
aheinecke@6095:       </dc:filter>
aheinecke@6053:     </dc:macro>
aheinecke@6053:     <!-- Macros to load system data -->
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="annotations">
aheinecke@6124:       <annotation factory="annotations" ids="{$river_id}" target_out="{$out}" />
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="mainvalues">
aheinecke@6124:       <wmainvalue factory="mainvalue" ids="{$river_id}:w" target_out="{$out}" />
aheinecke@6124:       <qmainvalue factory="mainvalue" ids="{$river_id}:q" target_out="{$out}" />
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@6124:                            factory="crosssections" target_out="{$out}" />
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@6124:             <hyk name="{$hyk_description}"
aheinecke@6053:                  ids="{$hyk_id}"
aheinecke@6124:                  factory="hyk" target_out="{$out}" />
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@6124:                 factory="wqinterpol" target_out="{$out}"
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@6124:                 factory="staticwqkms" target_out="{$out}"
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@6124:                           factory="staticwqkms" target_out="{$out}"
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@6124:                           factory="staticwkms" target_out="{$out}"
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@6124:                           factory="staticwkms" target_out="{$out}"
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@6124:                           factory="staticwkms" target_out="{$out}"
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@6124:           <all_annotations factory="annotations" ids="{$river_id}" target_out="{$out}" />
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@6124:                         factory="annotations" target_out="{$out}"
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@6124:                           factory="staticwkms" target_out="{$out}"
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@6124:                           factory="staticwkms" target_out="{$out}"
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@6124:                           factory="staticwkms" target_out="{$out}"
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: 
rrenkert@6226:     <dc:macro name="basedata_6_delta_w">
rrenkert@6226:       <dc:filter expr="$kind=6">
rrenkert@6226:         <dc:if test="dc:has-result()">
rrenkert@6226:           <delta_w>
rrenkert@6226:             <dc:group expr="$wst_description">
rrenkert@6226:               <relativepoint name="{dc:group-key()}">
rrenkert@6226:                 <dc:for-each>
rrenkert@6226:                   <column name="{$wst_column_name}"
rrenkert@6226:                           ids="delta_w-wstv-{$wst_column_position}-{$wst_id}"
rrenkert@6226:                           factory="staticwkms" target_out="{$out}"
rrenkert@6226:                           info="{$info} [km {$deffrom} - {$defto}]"/>
rrenkert@6226:                 </dc:for-each>
rrenkert@6226:               </relativepoint>
rrenkert@6226:             </dc:group>
rrenkert@6226:           </delta_w>
rrenkert@6226:         </dc:if>
rrenkert@6226:       </dc:filter>
rrenkert@6226:     </dc:macro>
rrenkert@6226: 
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@6124:                   factory="gaugedischarge" target_out="{$out}"
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@6124:       <qsector factory="qsectors" ids="{$river_id}" target_out="{$out}" />
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6053:     <dc:macro name="flood-map-recommended">
aheinecke@6053:       <kilometrage>
aheinecke@6124:         <riveraxis factory="riveraxis" ids="{$river_id}" target_out="{$out}" />
aheinecke@6053:       </kilometrage>
aheinecke@6053:       <rastermap>
aheinecke@6124:         <background factory="wmsbackground" ids="{$river_id}" target_out="{$out}" />
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
rrenkert@6214:             FROM bed_height_single
rrenkert@6214:             WHERE river_id = ${river_id}
rrenkert@6214:               AND lower(description) NOT LIKE '%epoch%'
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6124:             <height factory="bedheight" target_out="{$out}"
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>
rrenkert@6214:             SELECT id          AS bedh_id,
rrenkert@6214:                    year        AS bedh_year,
rrenkert@6214:                    description AS bedh_descr
rrenkert@6214:             FROM bed_height_single
rrenkert@6214:             WHERE river_id = ${river_id}
rrenkert@6214:               AND lower(description) LIKE '%epoch%'
aheinecke@6053:           </dc:statement>
aheinecke@6053:           <dc:for-each>
aheinecke@6124:             <height factory="bedheight" target_out="{$out}"
rrenkert@6214:                     ids="bedheight-single-{$bedh_id}-{$bedh_year}"
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@6124:                                          factory="flowvelocity" target_out="{$out}" >
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@6124:                                        factory="flowvelocity" target_out="{$out}" />
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@6124:                                      factory="morph-width" target_out="{$out}" />
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@6124:               <height factory="bedheight" target_out="{$out}"
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@6124:                 factory="staticwqkms" target_out="{$out}"
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@6124:                 factory="wqinterpol" target_out="{$out}"
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@6124:                 factory="staticwqkms" target_out="{$out}"
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@6124:                 factory="staticwkms" target_out="{$out}"
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@6124:         <riveraxis factory="riveraxis" ids="{$river_id}" target_out="{$out}" />
aheinecke@6053:       </kilometrage>
aheinecke@6053:       <rastermap>
aheinecke@6124:         <background factory="wmsbackground" ids="{$river_id}" target_out="{$out}" />
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@6183:                    'Projektion: ' || d.projection || '&lt;BR&gt;' ||
aheinecke@6183:                    'Rasterweite: '   || d.resolution || 'm&lt;BR&gt;' ||
aheinecke@6183:                    'Format: '  || d.format || '&lt;BR&gt;' ||
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@6183:               WHERE d.river_id = ${river_id}
aheinecke@6183:               AND NOT((${tokm} &lt; r.a) or (${fromkm} &gt; r.b))
aheinecke@6183:             </dc:statement>
aheinecke@6183:             <dc:for-each>
aheinecke@6124:             <dem factory="demfactory" target_out="{$out}"
aheinecke@6053:               ids="{$dem_id}"
aheinecke@6053:               name="{$name}"
aheinecke@6183:               info="{$info}{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@6124:             <hws factory="hwsfactory" name="{$hws_name}" target_out="{$out}" />
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@6124:             <line factory="wmshydrboundariesfactory" target_out="{$out}"
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@6124:             <line factory="wmshydrboundariespolyfactory" target_out="{$out}"
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@6124:               <line factory="wmshydrboundariesfactory" target_out="{$out}"
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@6124:                           factory="wmshydrboundariespolyfactory" target_out="{$out}"
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@6124:                           factory="wmshydrboundariespolyfactory" target_out="{$out}"
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@6124:                       factory="wmshydrboundariespolyfactory" target_out="{$out}"
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@6124:                           <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}"
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@6124:                           <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}"
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@6124:                           <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}"
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@6124:                           <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}"
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@6124:                         <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}"
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@6124:                 <floody factory="wmsfloodplainfactory" target_out="{$out}"
aheinecke@6053:                         description="{$kind_name}"
aheinecke@6053:                         ids="{$river_id};{$kind_name};{$kind_id}"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </dc:filter>
teichmann@6098:             <dc:filter expr="$kind_id != 1">
teichmann@6098:               <dc:if test="dc:has-result()">
teichmann@6098:                 <other>
teichmann@6098:                   <dc:for-each>
aheinecke@6124:                     <floody factory="wmsfloodplainfactory" target_out="{$out}"
teichmann@6098:                             description="{$layer_name}"
teichmann@6098:                             ids="{$river_id};{$layer_name};{$kind_id}"/>
teichmann@6098:                   </dc:for-each>
teichmann@6098:                 </other>
teichmann@6098:               </dc:if>
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@6124:           <hws factory="wmshwspointsfactory" target_out="{$out}"
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@6124:           <hws factory="wmshwslinesfactory" target_out="{$out}"
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@6124:                 factory="wmsfloodmarkfactory" target_out="{$out}"
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@6124:         <catchment_wms factory="externalwmsfactory" target_out="{$out}"
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@6124:         <gauge_points factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelpunkte;Pegelpunkte (WSV)" target_out="{$out}" />
aheinecke@6124:         <gauge_names factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelnamen;Pegelnamen (WSV)" target_out="{$out}" />
aheinecke@6124:         <gauge_level factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelwasserstand;Aktueller Wasserstand (WSV)" target_out="{$out}" />
aheinecke@6124:         <gauge_tendency factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;TendenzWasserstand;Tendenz des Wasserstands (WSV)" target_out="{$out}" />
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@6124:                         factory="riveraxis" target_out="{$out}" />
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@6124:                              factory="riveraxis" target_out="{$out}" />
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@6124:             <kilometrage factory="wmskmfactory" ids="{$river_id}" target_out="{$out}" />
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@6124:           <fixpoints factory="wmsfixpointsfactory" target_out="{$out}"
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@6124:                         factory="wmsqpsfactory" target_out="{$out}"
aheinecke@6053:                         ids="{$river_id};{$kind_name};{$kind_id}"/>
aheinecke@6053:               </dc:for-each>
aheinecke@6053:             </dc:filter>
teichmann@6098:             <dc:filter expr="$kind_id = 0">
teichmann@6098:               <dc:if test="dc:has-result()">
teichmann@6098:                 <other>
teichmann@6098:                   <dc:for-each>
teichmann@6098:                     <misc-qps description="{$layer_name}"
aheinecke@6124:                               factory="wmsqpsfactory" target_out="{$out}"
teichmann@6098:                               ids="{$river_id};{$layer_name};{$kind_id}"/>
teichmann@6098:                   </dc:for-each>
teichmann@6098:                 </other>
teichmann@6098:               </dc:if>
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@6124:                            factory="wmsbuildingsfactory" target_out="{$out}"
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@6124:                              factory="wmsbuildingsfactory" target_out="{$out}"
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@6124:                        factory="wmsjettiesfactory" target_out="{$out}"
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">
teichmann@6401:       <dc:if test="dc:contains($parameters, 'official-lines')">
teichmann@6401:         <dc:container-context container="official-lines">
teichmann@6401:           <dc:properties>
teichmann@6401:             <dc:property name="name" alias="olname"/>
teichmann@6401:             <dc:property name="wst" alias="wstid"/>
teichmann@6401:             <dc:property name="columnPos" alias="wstcolpos"/>
teichmann@6401:           </dc:properties>
teichmann@6401:           <dc:if test="dc:has-result()">
teichmann@6401:             <officiallines>
teichmann@6401:               <dc:for-each>
teichmann@6401:                 <dc:element name="${olname}">
teichmann@6401:                   <dc:attribute name="name" value="${olname}"/>
teichmann@6401:                   <dc:attribute name="ids" value="additionals-wstv-${wstcolpos}-${wstid}"/>
teichmann@6401:                   <dc:attribute name="factory" value="staticwkms"/>
teichmann@6401:                   <dc:attribute name="target_out" value="${out}"/>
teichmann@6401:                   <dc:attribute name="out" value="${out}"/>
teichmann@6401:                 </dc:element>
teichmann@6401:               </dc:for-each>
teichmann@6401:             </officiallines>
teichmann@6401:           </dc:if>
teichmann@6401:         </dc:container-context>
teichmann@6401:       </dc:if>
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@6111:                  COALESCE(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@6095:     <dc:macro name="all-user-artifacts">
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,
aheinecke@6095:                  COALESCE(ma.ld_to, '')        AS ld_t,
aheinecke@6095:                  o.name                        AS out_name,
aheinecke@6111:                  o.id                          AS out_id,
aheinecke@6111:                  f.name                        AS facet_name,
aheinecke@6111:                  f.num                         AS facet_num,
aheinecke@6111:                  f.description                 AS facet_description,
aheinecke@6111:                  f.id                          AS fid
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
aheinecke@6095:             JOIN outs o                    ON o.artifact_id = ma.id
aheinecke@6111:             JOIN facets f                  ON f.out_id = o.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@6095:         <dc:virtual-column name="deffrom" type="number" expr="dc:fromValue($ld_m, $ld_l, $ld_f)">
aheinecke@6095:           <dc:virtual-column name="defto" type="number" expr="dc:toValue($ld_m, $ld_l, $ld_t)">
aheinecke@6095:             <dc:macro-body/>
aheinecke@6095:           </dc:virtual-column>
aheinecke@6095:         </dc:virtual-column>
aheinecke@6053:       </dc:context>
aheinecke@6053:     </dc:macro>
aheinecke@6053: 
aheinecke@6095:     <dc:macro name="km-filtered-user-artifacts">
aheinecke@6095:       <dc:filter expr="not($deffrom &gt; $tokm or $defto &lt; $fromkm)">
aheinecke@6095:         <dc:macro-body/>
aheinecke@6095:       </dc:filter>
aheinecke@6095:     </dc:macro>
aheinecke@6095: 
aheinecke@6183:     <dc:macro name="artifact-range">
aheinecke@6183:       <dc:variable name="fromkm" type="number" expr="dc:fromValue(dc:get('ld_mode'), dc:get('ld_locations'), dc:get('ld_from'))"/>
aheinecke@6183:       <dc:variable name="tokm" type="number" expr="dc:toValue(dc:get('ld_mode'), dc:get('ld_locations'), dc:get('ld_to'))"/>
aheinecke@6183:       <dc:macro-body/>
aheinecke@6053:     </dc:macro>
ingo@1657: 
aheinecke@6053:   </datacage>
sascha@1046: </dc:template>