Mercurial > dive4elements > river
changeset 9193:f6b7837b89aa
Zusammenführen
author | gernotbelger |
---|---|
date | Fri, 29 Jun 2018 12:46:17 +0200 |
parents | ed4b14389667 (current diff) f692f5a0536a (diff) |
children | c373909fb7ca |
files | artifacts/doc/conf/jasper/templates/uinfo.inundationduration.jrxml artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculationResults.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationExporter.java |
diffstat | 24 files changed, 564 insertions(+), 930 deletions(-) [+] |
line wrap: on
line diff
--- a/artifacts/doc/conf/artifacts/uinfo.xml Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/doc/conf/artifacts/uinfo.xml Fri Jun 29 12:46:17 2018 +0200 @@ -222,10 +222,21 @@ <facet name="floodmap.floodmaps" /> <facet name="floodmap.gauge_location" /> <facet name="floodmap.externalwms" /> + <facet name="floodmap.externalwms_1" /> + <facet name="floodmap.externalwms_2" /> + <facet name="floodmap.externalwms_3" /> + <facet name="floodmap.externalwms_4" /> <facet name="floodmap.jetties" /> </facets> </outputmode> + <!-- FIXME: i01n name in FLYSConstants --> + <outputmode name="uinfo_inundation_duration_export" description="output.uinfo_inundation_duration_export" mime-type="text/plain" type="export"> + <facets> + <facet name="wms_url" description="XXXXXXXXXX _ no entry in generators necessary either" /> + </facets> + </outputmode> + <outputmode name="uinfo_inundation_duration_report" description="output.uinfo_inundation_duration_report" mime-type="text/xml" type="report"> <facets> <facet name="report" description="facet.uinfo_inundation_duration_report" />
--- a/artifacts/doc/conf/generators/generators.xml Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/doc/conf/generators/generators.xml Fri Jun 29 12:46:17 2018 +0200 @@ -3,76 +3,80 @@ &longitudinal-diagrams; &discharge-diagrams; - <output-generator names="cross_section" class="org.dive4elements.river.exports.CrossSectionGenerator"/> - <output-generator names="cross_section_chartinfo" class="org.dive4elements.river.exports.CrossSectionInfoGenerator"/> - <output-generator names="duration_curve" class="org.dive4elements.river.exports.DurationCurveGenerator"/> - <output-generator names="duration_curve_chartinfo" class="org.dive4elements.river.exports.DurationCurveInfoGenerator"/> - <output-generator names="waterlevel_export" class="org.dive4elements.river.exports.WaterlevelExporter"/> + <output-generator names="cross_section" class="org.dive4elements.river.exports.CrossSectionGenerator" /> + <output-generator names="cross_section_chartinfo" class="org.dive4elements.river.exports.CrossSectionInfoGenerator" /> + <output-generator names="duration_curve" class="org.dive4elements.river.exports.DurationCurveGenerator" /> + <output-generator names="duration_curve_chartinfo" class="org.dive4elements.river.exports.DurationCurveInfoGenerator" /> + <output-generator names="waterlevel_export" class="org.dive4elements.river.exports.WaterlevelExporter" /> - <output-generator names="historical_discharge_chartinfo" class="org.dive4elements.river.exports.HistoricalDischargeCurveInfoGenerator"/> - <output-generator names="historical_discharge" class="org.dive4elements.river.exports.HistoricalDischargeCurveGenerator"/> + <output-generator names="historical_discharge_chartinfo" class="org.dive4elements.river.exports.HistoricalDischargeCurveInfoGenerator" /> + <output-generator names="historical_discharge" class="org.dive4elements.river.exports.HistoricalDischargeCurveGenerator" /> - <!-- This is deactivated. + <!-- This is deactivated. <output-generator names="extreme_wq_curve" class="org.dive4elements.river.exports.extreme.ExtremeWQCurveGenerator"/> <output-generator names="extreme_curve_export" class="org.dive4elements.river.exports.WaterlevelExporter"/> <output-generator names="extreme_wq_curve_chartinfo" class="org.dive4elements.river.exports.extreme.ExtremeWQCurveInfoGenerator"/> - --> + --> - <output-generator names="durationcurve_export" class="org.dive4elements.river.exports.DurationCurveExporter"/> - <output-generator names="computed_dischargecurve_export" class="org.dive4elements.river.exports.ComputedDischargeCurveExporter"/> - <output-generator names="discharge_longitudinal_section_export" class="org.dive4elements.river.exports.DischargeLongitudinalSectionExporter"/> - <output-generator names="w_differences_export" class="org.dive4elements.river.exports.WDifferencesExporter"/> - <output-generator names="floodmap" class="org.dive4elements.river.exports.MapGenerator"/> - <output-generator names="map" class="org.dive4elements.river.exports.MapGenerator"/> - <output-generator names="reference_curve" class="org.dive4elements.river.exports.ReferenceCurveGenerator"/> - <output-generator names="reference_curve_normalized" class="org.dive4elements.river.exports.NormalizedReferenceCurveGenerator"/> - <output-generator names="reference_curve_normalized_chartinfo" class="org.dive4elements.river.exports.NormalizedReferenceCurveInfoGenerator"/> - <output-generator names="reference_curve_chartinfo" class="org.dive4elements.river.exports.ReferenceCurveInfoGenerator"/> - <output-generator names="reference_curve_export" class="org.dive4elements.river.exports.ReferenceCurveExporter"/> - <output-generator names="historical_discharge_export" class="org.dive4elements.river.exports.HistoricalDischargeCurveExporter"/> - <output-generator names="flow_velocity_export" class="org.dive4elements.river.exports.FlowVelocityExporter"/> - <output-generator names="bedheight_middle_export" class="org.dive4elements.river.exports.MiddleBedHeightExporter"/> - <output-generator names="bed_quality_export" class="org.dive4elements.river.exports.minfo.BedQualityExporter"/> - <output-generator names="bedheight_difference_export" class="org.dive4elements.river.exports.minfo.BedDifferenceExporter"/> - <output-generator names="sq_relation_export" class="org.dive4elements.river.exports.sq.SQRelationExporter"/> - <output-generator names="fix_parameters_export" class="org.dive4elements.river.exports.fixings.ParametersExporter"/> - <output-generator names="fix_deltawt_export" class="org.dive4elements.river.exports.fixings.DeltaWtExporter"/> - <output-generator names="fix_deltawt_curve" class="org.dive4elements.river.exports.fixings.FixDeltaWtGenerator"/> - <output-generator names="fix_deltawt_curve_chartinfo" class="org.dive4elements.river.exports.fixings.FixDeltaWtInfoGenerator"/> - <output-generator names="fix_waterlevel_export" class="org.dive4elements.river.exports.WaterlevelExporter"/> - <output-generator names="sedimentload_ls_export" class="org.dive4elements.river.exports.minfo.SedimentLoadExporter"/> - <!-- Error report generators. --> - <output-generator names="discharge_longitudinal_section_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="waterlevel_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="computed_dischargecurve_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="durationcurve_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="wsplgen_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="historical_discharge_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="reference_curve_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="fix_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="extreme_curve_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="sedimentload_ls_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="bed_quality_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <!-- AT exporter. --> - <output-generator names="computed_dischargecurve_at_export" class="org.dive4elements.river.exports.ATExporter"/> - <output-generator names="gauge_discharge_curve_at_export" class="org.dive4elements.river.exports.ATExporter"/> - <output-generator names="fix_wq_curve_at_export" class="org.dive4elements.river.exports.fixings.FixATExport"/> - <output-generator names="wsplgen" class="org.dive4elements.river.exports.ShapeExporter"/> + <output-generator names="durationcurve_export" class="org.dive4elements.river.exports.DurationCurveExporter" /> + <output-generator names="computed_dischargecurve_export" class="org.dive4elements.river.exports.ComputedDischargeCurveExporter" /> + <output-generator names="discharge_longitudinal_section_export" class="org.dive4elements.river.exports.DischargeLongitudinalSectionExporter" /> + <output-generator names="w_differences_export" class="org.dive4elements.river.exports.WDifferencesExporter" /> + <output-generator names="floodmap" class="org.dive4elements.river.exports.MapGenerator" /> + <output-generator names="map" class="org.dive4elements.river.exports.MapGenerator" /> + <output-generator names="reference_curve" class="org.dive4elements.river.exports.ReferenceCurveGenerator" /> + <output-generator names="reference_curve_normalized" class="org.dive4elements.river.exports.NormalizedReferenceCurveGenerator" /> + <output-generator names="reference_curve_normalized_chartinfo" class="org.dive4elements.river.exports.NormalizedReferenceCurveInfoGenerator" /> + <output-generator names="reference_curve_chartinfo" class="org.dive4elements.river.exports.ReferenceCurveInfoGenerator" /> + <output-generator names="reference_curve_export" class="org.dive4elements.river.exports.ReferenceCurveExporter" /> + <output-generator names="historical_discharge_export" class="org.dive4elements.river.exports.HistoricalDischargeCurveExporter" /> + <output-generator names="flow_velocity_export" class="org.dive4elements.river.exports.FlowVelocityExporter" /> + <output-generator names="bedheight_middle_export" class="org.dive4elements.river.exports.MiddleBedHeightExporter" /> + <output-generator names="bed_quality_export" class="org.dive4elements.river.exports.minfo.BedQualityExporter" /> + <output-generator names="bedheight_difference_export" class="org.dive4elements.river.exports.minfo.BedDifferenceExporter" /> + <output-generator names="sq_relation_export" class="org.dive4elements.river.exports.sq.SQRelationExporter" /> + <output-generator names="fix_parameters_export" class="org.dive4elements.river.exports.fixings.ParametersExporter" /> + <output-generator names="fix_deltawt_export" class="org.dive4elements.river.exports.fixings.DeltaWtExporter" /> + <output-generator names="fix_deltawt_curve" class="org.dive4elements.river.exports.fixings.FixDeltaWtGenerator" /> + <output-generator names="fix_deltawt_curve_chartinfo" class="org.dive4elements.river.exports.fixings.FixDeltaWtInfoGenerator" /> + <output-generator names="fix_waterlevel_export" class="org.dive4elements.river.exports.WaterlevelExporter" /> + <output-generator names="sedimentload_ls_export" class="org.dive4elements.river.exports.minfo.SedimentLoadExporter" /> + <!-- Error report generators. --> + <output-generator names="discharge_longitudinal_section_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="waterlevel_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="computed_dischargecurve_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="durationcurve_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="wsplgen_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="historical_discharge_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="reference_curve_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="fix_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="extreme_curve_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="sedimentload_ls_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="bed_quality_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <!-- AT exporter. --> + <output-generator names="computed_dischargecurve_at_export" class="org.dive4elements.river.exports.ATExporter" /> + <output-generator names="gauge_discharge_curve_at_export" class="org.dive4elements.river.exports.ATExporter" /> + <output-generator names="fix_wq_curve_at_export" class="org.dive4elements.river.exports.fixings.FixATExport" /> + <output-generator names="wsplgen" class="org.dive4elements.river.exports.ShapeExporter" /> - <!-- SINFO --> - <output-generator names="sinfo_flowdepth_export" class="org.dive4elements.river.artifacts.sinfo.flowdepth.FlowDepthExporter"/> - <output-generator names="sinfo_flowdepth_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="sinfo_flowdepthminmax_export" class="org.dive4elements.river.artifacts.sinfo.flowdepthminmax.FlowDepthMinMaxExporter"/> - <output-generator names="sinfo_flowdepthminmax_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="sinfo_flowdepthdevelopment_export" class="org.dive4elements.river.artifacts.sinfo.flowdepthdev.FlowDepthDevelopmentExporter"/> - <output-generator names="sinfo_flowdepthdevelopment_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="sinfo_tkh_export" class="org.dive4elements.river.artifacts.sinfo.tkhstate.TkhExporter"/> - <output-generator names="sinfo_tkh_report" class="org.dive4elements.river.exports.ReportGenerator"/> - <output-generator names="sinfo_floodduration_export" class="org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationExporter" /> - <output-generator names="sinfo_collision_export" class="org.dive4elements.river.artifacts.sinfo.collision.CollisionExporter" /> - - <!-- UINFO --> - <output-generator names="uinfo_salix_line_export" class="org.dive4elements.river.artifacts.uinfo.salix.SalixLineExporter"/> - <output-generator names="uinfo_inundation_duration_export" class="org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationExporter"/> - <output-generator names="uinfo_vegetation_zones_export" class="org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZonesExporter"/> + <!-- SINFO --> + <output-generator names="sinfo_flowdepth_export" class="org.dive4elements.river.artifacts.sinfo.flowdepth.FlowDepthExporter" /> + <output-generator names="sinfo_flowdepth_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="sinfo_flowdepthminmax_export" class="org.dive4elements.river.artifacts.sinfo.flowdepthminmax.FlowDepthMinMaxExporter" /> + <output-generator names="sinfo_flowdepthminmax_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="sinfo_flowdepthdevelopment_export" class="org.dive4elements.river.artifacts.sinfo.flowdepthdev.FlowDepthDevelopmentExporter" /> + <output-generator names="sinfo_flowdepthdevelopment_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="sinfo_tkh_export" class="org.dive4elements.river.artifacts.sinfo.tkhstate.TkhExporter" /> + <output-generator names="sinfo_tkh_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="sinfo_floodduration_export" class="org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationExporter" /> + <output-generator names="sinfo_floodduration_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="sinfo_collision_export" class="org.dive4elements.river.artifacts.sinfo.collision.CollisionExporter" /> + <output-generator names="sinfo_collision_report" class="org.dive4elements.river.exports.ReportGenerator" /> + + <!-- UINFO --> + <output-generator names="uinfo_inundation_duration_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="uinfo_salix_line_export" class="org.dive4elements.river.artifacts.uinfo.salix.SalixLineExporter" /> + <output-generator names="uinfo_salix_line_report" class="org.dive4elements.river.exports.ReportGenerator" /> + <output-generator names="uinfo_vegetation_zones_export" class="org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZonesExporter" /> + <output-generator names="uinfo_vegetation_zones_report" class="org.dive4elements.river.exports.ReportGenerator" /> </output-generators> \ No newline at end of file
--- a/artifacts/doc/conf/jasper/templates/sinfo.collision.detail.jrxml Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/doc/conf/jasper/templates/sinfo.collision.detail.jrxml Fri Jun 29 12:46:17 2018 +0200 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Created with Jaspersoft Studio version 6.5.1.final using JasperReports Library version 4.5.0 --> -<!-- 2018-06-22T14:12:56 --> +<!-- 2018-06-28T15:32:43 --> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="flysreport" language="groovy" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="60" rightMargin="20" topMargin="20" bottomMargin="20"> <property name="ireport.zoom" value="1.0"/> <property name="ireport.x" value="0"/> @@ -99,15 +99,7 @@ <band splitType="Stretch"/> </background> <title> - <band height="30" splitType="Stretch"> - <textField> - <reportElement style="htmlStyle" x="0" y="0" width="515" height="30"/> - <textElement> - <font size="18"/> - </textElement> - <textFieldExpression><![CDATA[$F{meta:header} + " " + $F{meta:river}]]></textFieldExpression> - </textField> - </band> + <band splitType="Stretch"/> </title> <columnHeader> <band height="25" splitType="Stretch">
--- a/artifacts/doc/conf/jasper/templates/uinfo.inundationduration.jrxml Thu Jun 28 19:13:14 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Created with Jaspersoft Studio version 6.5.1.final using JasperReports Library version 4.5.0 --> -<!-- 2018-06-06T13:16:01 --> -<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="flysreport" language="groovy" pageWidth="595" pageHeight="842" columnWidth="545" leftMargin="30" rightMargin="20" topMargin="20" bottomMargin="20"> - <property name="ireport.zoom" value="1.0"/> - <property name="ireport.x" value="0"/> - <property name="ireport.y" value="0"/> - <style name="htmlStyle" isDefault="true" mode="Transparent" markup="html" fontName="Roboto"/> - <field name="meta:header" class="java.lang.String"/> - <field name="meta:calcMode" class="java.lang.String"/> - <field name="meta:version_label" class="java.lang.String"/> - <field name="meta:version" class="java.lang.String"/> - <field name="meta:user_label" class="java.lang.String"/> - <field name="meta:user" class="java.lang.String"/> - <field name="meta:date_label" class="java.lang.String"/> - <field name="meta:date" class="java.lang.String"/> - <field name="meta:river_label" class="java.lang.String"/> - <field name="meta:river" class="java.lang.String"/> - <field name="meta:range_label" class="java.lang.String"/> - <field name="meta:range" class="java.lang.String"/> - <field name="meta:calculation_label" class="java.lang.String"/> - <field name="meta:calculation_name" class="java.lang.String"/> - <field name="meta:station_header" class="java.lang.String"/> - <field name="meta:flowdepthdevelopment_header" class="java.lang.String"/> - <field name="meta:flowdepthdevelopmentperyear_header" class="java.lang.String"/> - <field name="meta:waterleveldifference_header" class="java.lang.String"/> - <field name="meta:waterleveldifference_header2" class="java.lang.String"/> - <field name="meta:waterleveldifference_header_label" class="java.lang.String"/> - <field name="meta:bedheightdifference_header" class="java.lang.String"/> - <field name="meta:bedheightdifference_header2" class="java.lang.String"/> - <field name="meta:bedheightdifference_header_label" class="java.lang.String"/> - <field name="meta:flowdepthcurrent_header" class="java.lang.String"/> - <field name="meta:flowdepthcurrent_header2" class="java.lang.String"/> - <field name="meta:flowdepthhistorical_header" class="java.lang.String"/> - <field name="meta:flowdepthhistorical_header2" class="java.lang.String"/> - <field name="meta:flowdepthcurrent_header_label" class="java.lang.String"/> - <field name="meta:flowdepthhistorical_header_label" class="java.lang.String"/> - <field name="meta:flowdepth_header" class="java.lang.String"/> - <field name="meta:flowdepthdevelopment" class="java.lang.String"/> - <field name="meta:flowdepthmin_header" class="java.lang.String"/> - <field name="meta:flowdepthmax_header" class="java.lang.String"/> - <field name="meta:flowdepthdevelopment_header_label" class="java.lang.String"/> - <field name="meta:flowdepth_tkh_header" class="java.lang.String"/> - <field name="meta:tkh_header" class="java.lang.String"/> - <field name="meta:tkhkind_header" class="java.lang.String"/> - <field name="meta:waterlevel_header" class="java.lang.String"/> - <field name="meta:discharge_header" class="java.lang.String"/> - <field name="meta:waterlevel_name_header" class="java.lang.String"/> - <field name="meta:gauge_header" class="java.lang.String"/> - <field name="meta:bedheight_header" class="java.lang.String"/> - <field name="meta:sounding_name_header" class="java.lang.String"/> - <field name="meta:location_header" class="java.lang.String"/> - <field name="meta:river_unit" class="java.lang.String"/> - <field name="data:0" class="java.lang.String"/> - <field name="data:1" class="java.lang.String"/> - <field name="data:2" class="java.lang.String"/> - <field name="data:3" class="java.lang.String"/> - <field name="data:4" class="java.lang.String"/> - <field name="data:5" class="java.lang.String"/> - <field name="data:6" class="java.lang.String"/> - <field name="data:7" class="java.lang.String"/> - <field name="data:8" class="java.lang.String"/> - <background> - <band splitType="Stretch"/> - </background> - <title> - <band height="169" splitType="Stretch"> - <textField> - <reportElement style="htmlStyle" x="0" y="0" width="515" height="30"/> - <textElement> - <font size="18"/> - </textElement> - <textFieldExpression><![CDATA[$F{meta:header} + " " + $F{meta:river}]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="0" y="39" width="165" height="20"/> - <textFieldExpression><![CDATA[$F{meta:calcMode}]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="0" y="69" width="123" height="20"/> - <textFieldExpression><![CDATA[$F{meta:version_label} + ":"]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="123" y="69" width="392" height="20"/> - <textFieldExpression><![CDATA[$F{meta:version}]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="0" y="89" width="123" height="20"/> - <textFieldExpression><![CDATA[$F{meta:user_label} + ":"]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="123" y="89" width="392" height="20"/> - <textFieldExpression><![CDATA[$F{meta:user}]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="0" y="109" width="123" height="20"/> - <textFieldExpression><![CDATA[$F{meta:date_label} + ":"]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="123" y="109" width="392" height="20"/> - <textFieldExpression><![CDATA[$F{meta:date}]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="0" y="129" width="123" height="20"/> - <textFieldExpression><![CDATA[$F{meta:river_label} + ":"]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="123" y="129" width="392" height="20"/> - <textFieldExpression><![CDATA[$F{meta:river}]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="0" y="149" width="123" height="20"/> - <textFieldExpression><![CDATA[$F{meta:range_label} + ":"]]></textFieldExpression> - </textField> - <textField> - <reportElement style="htmlStyle" x="123" y="149" width="392" height="20"/> - <textFieldExpression><![CDATA[$F{meta:range}]]></textFieldExpression> - </textField> - </band> - </title> - <columnHeader> - <band height="25" splitType="Stretch"> - <textField isStretchWithOverflow="true"> - <reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="0" y="0" width="80" height="24"/> - <box padding="5"/> - <textElement textAlignment="Right" verticalAlignment="Bottom"/> - <textFieldExpression><![CDATA[$F{meta:station_header}]]></textFieldExpression> - </textField> - <textField isStretchWithOverflow="true"> - <reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="80" y="0" width="90" height="24"/> - <box padding="5"/> - <textElement textAlignment="Right" verticalAlignment="Bottom"/> - <textFieldExpression><![CDATA[$F{meta:tkh_header} + "<br/>[cm]"]]></textFieldExpression> - </textField> - <textField isStretchWithOverflow="true"> - <reportElement key="" style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="170" y="0" width="380" height="24"/> - <box padding="5"/> - <textElement verticalAlignment="Bottom"/> - <textFieldExpression><![CDATA[$F{meta:tkhkind_header}]]></textFieldExpression> - </textField> - <line> - <reportElement style="htmlStyle" positionType="FixRelativeToBottom" x="0" y="24" width="550" height="1"/> - </line> - </band> - </columnHeader> - <detail> - <band height="15" splitType="Prevent"> - <textField isStretchWithOverflow="true" isBlankWhenNull="true"> - <reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="0" y="0" width="80" height="15"/> - <box topPadding="2" leftPadding="5" bottomPadding="0" rightPadding="5"> - <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - <bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - </box> - <textElement textAlignment="Right" verticalAlignment="Top"/> - <textFieldExpression><![CDATA[$F{data:0}]]></textFieldExpression> - </textField> - <textField isStretchWithOverflow="true" isBlankWhenNull="true"> - <reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="80" y="0" width="90" height="15"/> - <box topPadding="2" leftPadding="5" bottomPadding="0" rightPadding="5"> - <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - <bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - </box> - <textElement textAlignment="Right"/> - <textFieldExpression><![CDATA[$F{data:1}]]></textFieldExpression> - </textField> - <textField isStretchWithOverflow="true" isBlankWhenNull="true"> - <reportElement key="" style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="170" y="0" width="380" height="15"/> - <box topPadding="2" leftPadding="5" bottomPadding="0" rightPadding="5"> - <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - <bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> - </box> - <textElement textAlignment="Left"/> - <textFieldExpression><![CDATA[$F{data:2}]]></textFieldExpression> - </textField> - </band> - </detail> - <pageFooter> - <band height="15" splitType="Stretch"> - <textField isStretchWithOverflow="true"> - <reportElement style="htmlStyle" x="437" y="0" width="55" height="15"/> - <box topPadding="2" rightPadding="3"/> - <textElement textAlignment="Right"/> - <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> - </textField> - <textField isStretchWithOverflow="true" evaluationTime="Report"> - <reportElement style="htmlStyle" x="493" y="0" width="57" height="15"/> - <box topPadding="2" rightPadding="3"/> - <textFieldExpression><![CDATA["/ " + $V{PAGE_NUMBER}]]></textFieldExpression> - </textField> - </band> - </pageFooter> - <summary> - <band height="30" splitType="Stretch"/> - </summary> -</jasperReport>
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/FacetTypes.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/FacetTypes.java Fri Jun 29 12:46:17 2018 +0200 @@ -11,143 +11,92 @@ /** 'Types' of facets. */ public interface FacetTypes { - /** Static helper class to determine if a Facet name is of a generalized - * 'type'. */ + /** + * Static helper class to determine if a Facet name is of a generalized + * 'type'. + */ public static class IS { - public static boolean WQ_KM(String type) { - return type.equals(DISCHARGE_LONGITUDINAL_W) - || type.equals(LONGITUDINAL_W); - } - public static boolean W_KM(String type) { - return type.equals(STATIC_WKMS) - || type.equals(HEIGHTMARKS_POINTS) - || WQ_KM(type); - } - public static boolean AREA(String type) { - return type.equals(AREA) - || type.equals(CROSS_SECTION_AREA) - || type.equals(LONGITUDINAL_SECTION_AREA); + public static boolean WQ_KM(final String type) { + return type.equals(DISCHARGE_LONGITUDINAL_W) || type.equals(LONGITUDINAL_W); } - public static boolean W(String type) { - return type.equals(LONGITUDINAL_W) - || type.equals(DISCHARGE_LONGITUDINAL_W) - || type.equals(DURATION_W) - || type.equals(STATIC_WKMS) - || type.equals(STATIC_WQKMS_W); + + public static boolean W_KM(final String type) { + return type.equals(STATIC_WKMS) || type.equals(HEIGHTMARKS_POINTS) || WQ_KM(type); } - public static boolean Q(String type) { - return type.equals(LONGITUDINAL_Q) - || type.equals(DISCHARGE_LONGITUDINAL_Q) - || type.equals(DURATION_Q) - || type.equals(STATIC_WQKMS_Q); + + public static boolean AREA(final String type) { + return type.equals(AREA) || type.equals(CROSS_SECTION_AREA) || type.equals(LONGITUDINAL_SECTION_AREA); } - public static boolean V(String type) { - return type.equals(FLOW_VELOCITY_MAINCHANNEL) - || type.equals(FLOW_VELOCITY_TOTALCHANNEL); + + public static boolean W(final String type) { + return type.equals(LONGITUDINAL_W) || type.equals(DISCHARGE_LONGITUDINAL_W) || type.equals(DURATION_W) || type.equals(STATIC_WKMS) + || type.equals(STATIC_WQKMS_W); } - public static boolean T(String type) { + + public static boolean Q(final String type) { + return type.equals(LONGITUDINAL_Q) || type.equals(DISCHARGE_LONGITUDINAL_Q) || type.equals(DURATION_Q) || type.equals(STATIC_WQKMS_Q); + } + + public static boolean V(final String type) { + return type.equals(FLOW_VELOCITY_MAINCHANNEL) || type.equals(FLOW_VELOCITY_TOTALCHANNEL); + } + + public static boolean T(final String type) { return type.equals(FLOW_VELOCITY_TAU); } - public static boolean H(String type) { + + public static boolean H(final String type) { return type.equals(MIDDLE_BED_HEIGHT_SINGLE); } - public static boolean MANUALPOINTS(String type) { + + public static boolean MANUALPOINTS(final String type) { return type.endsWith("manualpoints"); } - public static boolean MANUALLINE(String type) { + + public static boolean MANUALLINE(final String type) { return type.endsWith("manualline"); } - public static boolean FILTERED(String type) { + + public static boolean FILTERED(final String type) { return type.endsWith("filtered"); } - public static boolean SQ_CURVE(String type) { - if (type.equals(SQ_A_CURVE) - || type.equals(SQ_B_CURVE) - || type.equals(SQ_C_CURVE) - || type.equals(SQ_D_CURVE) - || type.equals(SQ_E_CURVE) - || type.equals(SQ_F_CURVE) - || type.equals(SQ_G_CURVE) - || type.equals(SQ_A_OUTLIER_CURVE) - || type.equals(SQ_B_OUTLIER_CURVE) - || type.equals(SQ_C_OUTLIER_CURVE) - || type.equals(SQ_D_OUTLIER_CURVE) - || type.equals(SQ_E_OUTLIER_CURVE) - || type.equals(SQ_F_OUTLIER_CURVE) - || type.equals(SQ_G_OUTLIER_CURVE) - || type.equals(SQ_A_CURVE_OV) - || type.equals(SQ_B_CURVE_OV) - || type.equals(SQ_C_CURVE_OV) - || type.equals(SQ_D_CURVE_OV) - || type.equals(SQ_E_CURVE_OV) - || type.equals(SQ_F_CURVE_OV) - || type.equals(SQ_G_CURVE_OV) - || type.equals(SQ_A_OUTLIER_CURVE_OV) - || type.equals(SQ_B_OUTLIER_CURVE_OV) - || type.equals(SQ_C_OUTLIER_CURVE_OV) - || type.equals(SQ_D_OUTLIER_CURVE_OV) - || type.equals(SQ_E_OUTLIER_CURVE_OV) - || type.equals(SQ_F_OUTLIER_CURVE_OV) - || type.equals(SQ_G_OUTLIER_CURVE_OV) - ) - { + + public static boolean SQ_CURVE(final String type) { + if (type.equals(SQ_A_CURVE) || type.equals(SQ_B_CURVE) || type.equals(SQ_C_CURVE) || type.equals(SQ_D_CURVE) || type.equals(SQ_E_CURVE) + || type.equals(SQ_F_CURVE) || type.equals(SQ_G_CURVE) || type.equals(SQ_A_OUTLIER_CURVE) || type.equals(SQ_B_OUTLIER_CURVE) + || type.equals(SQ_C_OUTLIER_CURVE) || type.equals(SQ_D_OUTLIER_CURVE) || type.equals(SQ_E_OUTLIER_CURVE) || type.equals(SQ_F_OUTLIER_CURVE) + || type.equals(SQ_G_OUTLIER_CURVE) || type.equals(SQ_A_CURVE_OV) || type.equals(SQ_B_CURVE_OV) || type.equals(SQ_C_CURVE_OV) + || type.equals(SQ_D_CURVE_OV) || type.equals(SQ_E_CURVE_OV) || type.equals(SQ_F_CURVE_OV) || type.equals(SQ_G_CURVE_OV) + || type.equals(SQ_A_OUTLIER_CURVE_OV) || type.equals(SQ_B_OUTLIER_CURVE_OV) || type.equals(SQ_C_OUTLIER_CURVE_OV) + || type.equals(SQ_D_OUTLIER_CURVE_OV) || type.equals(SQ_E_OUTLIER_CURVE_OV) || type.equals(SQ_F_OUTLIER_CURVE_OV) + || type.equals(SQ_G_OUTLIER_CURVE_OV)) { return true; } return false; } - public static boolean SQ_MEASUREMENT(String type) { - if (type.equals(SQ_A_MEASUREMENT) - || type.equals(SQ_B_MEASUREMENT) - || type.equals(SQ_C_MEASUREMENT) - || type.equals(SQ_D_MEASUREMENT) - || type.equals(SQ_E_MEASUREMENT) - || type.equals(SQ_F_MEASUREMENT) - || type.equals(SQ_G_MEASUREMENT) - || type.equals(SQ_A_OUTLIER_MEASUREMENT) - || type.equals(SQ_B_OUTLIER_MEASUREMENT) - || type.equals(SQ_C_OUTLIER_MEASUREMENT) - || type.equals(SQ_D_OUTLIER_MEASUREMENT) - || type.equals(SQ_E_OUTLIER_MEASUREMENT) - || type.equals(SQ_F_OUTLIER_MEASUREMENT) - || type.equals(SQ_G_OUTLIER_MEASUREMENT) - || type.equals(SQ_A_MEASUREMENT_OV) - || type.equals(SQ_B_MEASUREMENT_OV) - || type.equals(SQ_C_MEASUREMENT_OV) - || type.equals(SQ_D_MEASUREMENT_OV) - || type.equals(SQ_E_MEASUREMENT_OV) - || type.equals(SQ_F_MEASUREMENT_OV) - || type.equals(SQ_G_MEASUREMENT_OV) - || type.equals(SQ_A_OUTLIER_MEASUREMENT_OV) - || type.equals(SQ_B_OUTLIER_MEASUREMENT_OV) - || type.equals(SQ_C_OUTLIER_MEASUREMENT_OV) - || type.equals(SQ_D_OUTLIER_MEASUREMENT_OV) - || type.equals(SQ_E_OUTLIER_MEASUREMENT_OV) - || type.equals(SQ_F_OUTLIER_MEASUREMENT_OV) - || type.equals(SQ_G_OUTLIER_MEASUREMENT_OV) - ) - { + + public static boolean SQ_MEASUREMENT(final String type) { + if (type.equals(SQ_A_MEASUREMENT) || type.equals(SQ_B_MEASUREMENT) || type.equals(SQ_C_MEASUREMENT) || type.equals(SQ_D_MEASUREMENT) + || type.equals(SQ_E_MEASUREMENT) || type.equals(SQ_F_MEASUREMENT) || type.equals(SQ_G_MEASUREMENT) || type.equals(SQ_A_OUTLIER_MEASUREMENT) + || type.equals(SQ_B_OUTLIER_MEASUREMENT) || type.equals(SQ_C_OUTLIER_MEASUREMENT) || type.equals(SQ_D_OUTLIER_MEASUREMENT) + || type.equals(SQ_E_OUTLIER_MEASUREMENT) || type.equals(SQ_F_OUTLIER_MEASUREMENT) || type.equals(SQ_G_OUTLIER_MEASUREMENT) + || type.equals(SQ_A_MEASUREMENT_OV) || type.equals(SQ_B_MEASUREMENT_OV) || type.equals(SQ_C_MEASUREMENT_OV) + || type.equals(SQ_D_MEASUREMENT_OV) || type.equals(SQ_E_MEASUREMENT_OV) || type.equals(SQ_F_MEASUREMENT_OV) + || type.equals(SQ_G_MEASUREMENT_OV) || type.equals(SQ_A_OUTLIER_MEASUREMENT_OV) || type.equals(SQ_B_OUTLIER_MEASUREMENT_OV) + || type.equals(SQ_C_OUTLIER_MEASUREMENT_OV) || type.equals(SQ_D_OUTLIER_MEASUREMENT_OV) || type.equals(SQ_E_OUTLIER_MEASUREMENT_OV) + || type.equals(SQ_F_OUTLIER_MEASUREMENT_OV) || type.equals(SQ_G_OUTLIER_MEASUREMENT_OV)) { return true; } return false; } - public static boolean SQ_OUTLIER(String type) { - if (type.equals(SQ_A_OUTLIER) - || type.equals(SQ_B_OUTLIER) - || type.equals(SQ_C_OUTLIER) - || type.equals(SQ_D_OUTLIER) - || type.equals(SQ_E_OUTLIER) - || type.equals(SQ_F_OUTLIER) - || type.equals(SQ_G_OUTLIER) - || type.equals(SQ_A_OUTLIER_OV) - || type.equals(SQ_B_OUTLIER_OV) - || type.equals(SQ_C_OUTLIER_OV) - || type.equals(SQ_D_OUTLIER_OV) - || type.equals(SQ_E_OUTLIER_OV) - || type.equals(SQ_F_OUTLIER_OV) - || type.equals(SQ_G_OUTLIER_OV)) - { + + public static boolean SQ_OUTLIER(final String type) { + if (type.equals(SQ_A_OUTLIER) || type.equals(SQ_B_OUTLIER) || type.equals(SQ_C_OUTLIER) || type.equals(SQ_D_OUTLIER) || type.equals(SQ_E_OUTLIER) + || type.equals(SQ_F_OUTLIER) || type.equals(SQ_G_OUTLIER) || type.equals(SQ_A_OUTLIER_OV) || type.equals(SQ_B_OUTLIER_OV) + || type.equals(SQ_C_OUTLIER_OV) || type.equals(SQ_D_OUTLIER_OV) || type.equals(SQ_E_OUTLIER_OV) || type.equals(SQ_F_OUTLIER_OV) + || type.equals(SQ_G_OUTLIER_OV)) { return true; } @@ -155,51 +104,26 @@ } } - /** Available diagram/chart-types. This enum is evaluated at certain + /** + * Available diagram/chart-types. This enum is evaluated at certain * places to iterate over chart-types to e.g. dynamically generate - * Facet-names (ManualPoints for example). */ + * Facet-names (ManualPoints for example). + */ public enum ChartType { - FD("fix_derivate_curve"), - LS("longitudinal_section"), - CS("cross_section"), - DLS("discharge_longitudinal_section"), - CDC("computed_discharge_curve"), - DUC("duration_curve"), - DIC("discharge_curve"), - RC("reference_curve"), - RCN("reference_curve_normalized"), - WD("wdifferences"), - BHDY("bedheight_difference_height_year"), - BDY("bed_difference_year"), - FWQC("fix_wq_curve"), - FDWC("fix_deltawt_curve"), - FLSC("fix_longitudinal_section_curve"), - FDC("fix_derivate_curve"), - EWQ("extreme_wq_curve"), - BHM("bedheight_middle"), - BLS("bed_longitudinal_section"), - SLS("sedimentload_ls"), - FV("flow_velocity"), - SQA("sq_relation_a"), - SQB("sq_relation_b"), - W_D("w_differences"), - SQC("sq_relation_c"), - SQD("sq_relation_d"), - SQE("sq_relation_e"), - SQF("sq_relation_f"), - HD("historical_discharge"), - HDWQ("historical_discharge_wq"), - SFD("sinfo_flow_depth"), - SFDMM("sinfo_flow_depth_minmax"), - SFDD("sinfo_flow_depth_development"), - SFDDPY("sinfo_flow_depth_development_peryear"), - SC("sinfo_collision"), - SFDUR("sinfo_flood_duration"), - STKH("sinfo_tkk"); + FD("fix_derivate_curve"), LS("longitudinal_section"), CS("cross_section"), DLS("discharge_longitudinal_section"), CDC("computed_discharge_curve"), DUC( + "duration_curve"), DIC("discharge_curve"), RC("reference_curve"), RCN("reference_curve_normalized"), WD("wdifferences"), BHDY( + "bedheight_difference_height_year"), BDY("bed_difference_year"), FWQC("fix_wq_curve"), FDWC("fix_deltawt_curve"), FLSC( + "fix_longitudinal_section_curve"), FDC("fix_derivate_curve"), EWQ("extreme_wq_curve"), BHM("bedheight_middle"), BLS( + "bed_longitudinal_section"), SLS("sedimentload_ls"), FV( + "flow_velocity"), SQA("sq_relation_a"), SQB("sq_relation_b"), W_D("w_differences"), SQC("sq_relation_c"), SQD( + "sq_relation_d"), SQE("sq_relation_e"), SQF("sq_relation_f"), HD("historical_discharge"), HDWQ( + "historical_discharge_wq"), SFD("sinfo_flow_depth"), SFDMM("sinfo_flow_depth_minmax"), SFDD( + "sinfo_flow_depth_development"), SFDDPY("sinfo_flow_depth_development_peryear"), SC( + "sinfo_collision"), SFDUR("sinfo_flood_duration"), STKH("sinfo_tkk"); - private String chartTypeString; + private final String chartTypeString; - ChartType(String description) { + ChartType(final String description) { this.chartTypeString = description; } @@ -209,44 +133,43 @@ } } - String AREA = "area"; - String CROSS_SECTION_AREA = "cross_section.area"; - String LONGITUDINAL_SECTION_AREA = "longitudinal_section.area"; + String AREA = "area"; + String CROSS_SECTION_AREA = "cross_section.area"; + String LONGITUDINAL_SECTION_AREA = "longitudinal_section.area"; - String FLOODMAP_WSPLGEN = "floodmap.wsplgen"; - String FLOODMAP_BARRIERS = "floodmap.barriers"; - String FLOODMAP_USERSHAPE = "floodmap.usershape"; - String FLOODMAP_RIVERAXIS = "floodmap.riveraxis"; + String FLOODMAP_WSPLGEN = "floodmap.wsplgen"; + String FLOODMAP_BARRIERS = "floodmap.barriers"; + String FLOODMAP_USERSHAPE = "floodmap.usershape"; + String FLOODMAP_RIVERAXIS = "floodmap.riveraxis"; @Deprecated - String FLOODMAP_WMSBACKGROUND = "floodmap.wmsbackground"; - String FLOODMAP_KMS = "floodmap.kms"; - String FLOODMAP_QPS = "floodmap.qps"; - String FLOODMAP_HWS_LINES = "floodmap.hws_lines"; - String FLOODMAP_HWS_POINTS = "floodmap.hws_points"; - String FLOODMAP_HYDR_BOUNDARY = "floodmap.hydr_boundaries"; + String FLOODMAP_WMSBACKGROUND = "floodmap.wmsbackground"; + String FLOODMAP_KMS = "floodmap.kms"; + String FLOODMAP_QPS = "floodmap.qps"; + String FLOODMAP_HWS_LINES = "floodmap.hws_lines"; + String FLOODMAP_HWS_POINTS = "floodmap.hws_points"; + String FLOODMAP_HYDR_BOUNDARY = "floodmap.hydr_boundaries"; String FLOODMAP_HYDR_BOUNDARY_POLY = "floodmap.hydr_boundaries_poly"; - String FLOODMAP_CATCHMENT = "floodmap.catchment"; - String FLOODMAP_FLOODPLAIN = "floodmap.floodplain"; - String FLOODMAP_LINES = "floodmap.lines"; - String FLOODMAP_BUILDINGS = "floodmap.buildings"; - String FLOODMAP_FIXPOINTS = "floodmap.fixpoints"; - String FLOODMAP_FLOODMARKS = "floodmap.floodmarks"; - String FLOODMAP_FLOODMAPS = "floodmap.floodmaps"; - String FLOODMAP_GAUGE_LOCATION = "floodmap.gauge_location"; - String FLOODMAP_EXTERNAL_WMS = "floodmap.externalwms"; - String FLOODMAP_JETTIES = "floodmap.jetties"; + String FLOODMAP_CATCHMENT = "floodmap.catchment"; + String FLOODMAP_FLOODPLAIN = "floodmap.floodplain"; + String FLOODMAP_LINES = "floodmap.lines"; + String FLOODMAP_BUILDINGS = "floodmap.buildings"; + String FLOODMAP_FIXPOINTS = "floodmap.fixpoints"; + String FLOODMAP_FLOODMARKS = "floodmap.floodmarks"; + String FLOODMAP_FLOODMAPS = "floodmap.floodmaps"; + String FLOODMAP_GAUGE_LOCATION = "floodmap.gauge_location"; + String FLOODMAP_EXTERNAL_WMS = "floodmap.externalwms"; + String FLOODMAP_EXTERNAL_WMS_INUNDATIONDUR = "floodmap.externalwms_"; + String FLOODMAP_JETTIES = "floodmap.jetties"; String DISCHARGE_LONGITUDINAL_W = "discharge_longitudinal_section.w"; String DISCHARGE_LONGITUDINAL_Q = "discharge_longitudinal_section.q"; - String DISCHARGE_LONGITUDINAL_Q_INFOLD = - "discharge_longitudinal_section.q.infolding"; - String DISCHARGE_LONGITUDINAL_Q_INFOLD_CUT = - "discharge_longitudinal_section.q.cutting"; + String DISCHARGE_LONGITUDINAL_Q_INFOLD = "discharge_longitudinal_section.q.infolding"; + String DISCHARGE_LONGITUDINAL_Q_INFOLD_CUT = "discharge_longitudinal_section.q.cutting"; String DISCHARGE_LONGITUDINAL_C = "discharge_longitudinal_section.c"; String LONGITUDINAL_W = "longitudinal_section.w"; String LONGITUDINAL_Q = "longitudinal_section.q"; - String LONGITUDINAL_ANNOTATION = "longitudinal_section.annotations"; + String LONGITUDINAL_ANNOTATION = "longitudinal_section.annotations"; String LONGITUDINAL_MANUALPOINTS = "longitudinal_section.manualpoints"; String W_DIFFERENCES = "w_differences"; @@ -272,17 +195,17 @@ String MANUALPOINTS = "manualpoints"; String MANUALLINE = "manualline"; - String QSECTOR = "qsectors"; + String QSECTOR = "qsectors"; - String STATIC_DELTA_W = "other.delta_w"; - String STATIC_DELTA_W_CMA= "other.delta_w_cma"; - String STATIC_WQ = "other.wq"; + String STATIC_DELTA_W = "other.delta_w"; + String STATIC_DELTA_W_CMA = "other.delta_w_cma"; + String STATIC_WQ = "other.wq"; String STATIC_WQ_ANNOTATIONS = "other.wq.annotations"; - String STATIC_WKMS = "other.wkms"; + String STATIC_WKMS = "other.wkms"; String STATIC_WKMS_MARKS = "other.wkms.marks"; - String STATIC_WQKMS = "other.wqkms"; - String STATIC_WQKMS_W = "other.wqkms.w"; - String STATIC_WQKMS_Q = "other.wqkms.q"; + String STATIC_WQKMS = "other.wqkms"; + String STATIC_WQKMS_W = "other.wqkms.w"; + String STATIC_WQKMS_Q = "other.wqkms.q"; String STATIC_WKMS_INTERPOL = "other.wkms.interpol"; String STATIC_W_INTERPOL = "other.w.interpol"; @@ -290,74 +213,57 @@ String CSV = "csv"; String WST = "wst"; - String AT = "at"; + String AT = "at"; String PDF = "pdf"; String REPORT = "report"; - String HISTORICAL_DISCHARGE_Q = "historical_discharge.historicalq"; - String HISTORICAL_DISCHARGE_Q_DIFF = - "historical_discharge.historicalq.diff"; - String HISTORICAL_DISCHARGE_W = "historical_discharge.historicalw"; - String HISTORICAL_DISCHARGE_W_DIFF = - "historical_discharge.historicalw.diff"; - String HISTORICAL_DISCHARGE_WQ_Q = "historical_discharge.wq.q"; - String HISTORICAL_DISCHARGE_WQ_W = "historical_discharge.wq.w"; + String HISTORICAL_DISCHARGE_Q = "historical_discharge.historicalq"; + String HISTORICAL_DISCHARGE_Q_DIFF = "historical_discharge.historicalq.diff"; + String HISTORICAL_DISCHARGE_W = "historical_discharge.historicalw"; + String HISTORICAL_DISCHARGE_W_DIFF = "historical_discharge.historicalw.diff"; + String HISTORICAL_DISCHARGE_WQ_Q = "historical_discharge.wq.q"; + String HISTORICAL_DISCHARGE_WQ_W = "historical_discharge.wq.w"; - String REFERENCE_CURVE = "reference_curve"; + String REFERENCE_CURVE = "reference_curve"; String REFERENCE_CURVE_NORMALIZED = "reference_curve_normalized"; - String FLOW_VELOCITY_MAINCHANNEL = "flow_velocity.mainchannel"; - String FLOW_VELOCITY_TOTALCHANNEL = "flow_velocity.totalchannel"; + String FLOW_VELOCITY_MAINCHANNEL = "flow_velocity.mainchannel"; + String FLOW_VELOCITY_TOTALCHANNEL = "flow_velocity.totalchannel"; /** Also called SHEAR_STRESS. */ - String FLOW_VELOCITY_TAU = "flow_velocity.tau"; - String FLOW_VELOCITY_MAINCHANNEL_FILTERED = - "flow_velocity.mainchannel.filtered"; - String FLOW_VELOCITY_TOTALCHANNEL_FILTERED = - "flow_velocity.totalchannel.filtered"; - String FLOW_VELOCITY_TAU_FILTERED = "flow_velocity.tau.filtered"; - String FLOW_VELOCITY_ANNOTATION = "flow_velocity.annotation"; - String FLOW_VELOCITY_MEASUREMENT = "flow_velocity.measurement"; - String FLOW_VELOCITY_DISCHARGE = "flow_velocity.discharge"; - String FLOW_VELOCITY_WATERLEVEL = "flow_velocity.waterlevel"; + String FLOW_VELOCITY_TAU = "flow_velocity.tau"; + String FLOW_VELOCITY_MAINCHANNEL_FILTERED = "flow_velocity.mainchannel.filtered"; + String FLOW_VELOCITY_TOTALCHANNEL_FILTERED = "flow_velocity.totalchannel.filtered"; + String FLOW_VELOCITY_TAU_FILTERED = "flow_velocity.tau.filtered"; + String FLOW_VELOCITY_ANNOTATION = "flow_velocity.annotation"; + String FLOW_VELOCITY_MEASUREMENT = "flow_velocity.measurement"; + String FLOW_VELOCITY_DISCHARGE = "flow_velocity.discharge"; + String FLOW_VELOCITY_WATERLEVEL = "flow_velocity.waterlevel"; - String MIDDLE_BED_HEIGHT_SINGLE = "bedheight_middle.single"; + String MIDDLE_BED_HEIGHT_SINGLE = "bedheight_middle.single"; String MIDDLE_BED_HEIGHT_ANNOTATION = "bedheight_middle.annotation"; String BED_QUALITY_DATA_FACET = "bed_longitudinal_section"; - String BED_QUALITY_POROSITY_TOPLAYER = - BED_QUALITY_DATA_FACET + ".porosity.toplayer"; - String BED_QUALITY_POROSITY_SUBLAYER = - BED_QUALITY_DATA_FACET + ".porosity.sublayer"; - String BED_QUALITY_BED_DIAMETER_TOPLAYER = - BED_QUALITY_DATA_FACET + ".diameter.toplayer"; - String BED_QUALITY_BED_DIAMETER_SUBLAYER = - BED_QUALITY_DATA_FACET + ".diameter.sublayer"; - String BED_QUALITY_SEDIMENT_DENSITY_TOPLAYER = - BED_QUALITY_DATA_FACET + ".density.toplayer"; - String BED_QUALITY_SEDIMENT_DENSITY_SUBLAYER = - BED_QUALITY_DATA_FACET + ".density.sublayer"; - String BED_QUALITY_BEDLOAD_DIAMETER = - BED_QUALITY_DATA_FACET + ".diameter.bedload"; - String BED_DIAMETER_DATA_TOP = - BED_QUALITY_DATA_FACET + ".diameter.toplayer.data"; - String BED_DIAMETER_DATA_SUB = - BED_QUALITY_DATA_FACET + ".diameter.sublayer.data"; - String BEDLOAD_DIAMETER_DATA = - BED_QUALITY_DATA_FACET + ".diameter.bedload.data"; + String BED_QUALITY_POROSITY_TOPLAYER = BED_QUALITY_DATA_FACET + ".porosity.toplayer"; + String BED_QUALITY_POROSITY_SUBLAYER = BED_QUALITY_DATA_FACET + ".porosity.sublayer"; + String BED_QUALITY_BED_DIAMETER_TOPLAYER = BED_QUALITY_DATA_FACET + ".diameter.toplayer"; + String BED_QUALITY_BED_DIAMETER_SUBLAYER = BED_QUALITY_DATA_FACET + ".diameter.sublayer"; + String BED_QUALITY_SEDIMENT_DENSITY_TOPLAYER = BED_QUALITY_DATA_FACET + ".density.toplayer"; + String BED_QUALITY_SEDIMENT_DENSITY_SUBLAYER = BED_QUALITY_DATA_FACET + ".density.sublayer"; + String BED_QUALITY_BEDLOAD_DIAMETER = BED_QUALITY_DATA_FACET + ".diameter.bedload"; + String BED_DIAMETER_DATA_TOP = BED_QUALITY_DATA_FACET + ".diameter.toplayer.data"; + String BED_DIAMETER_DATA_SUB = BED_QUALITY_DATA_FACET + ".diameter.sublayer.data"; + String BEDLOAD_DIAMETER_DATA = BED_QUALITY_DATA_FACET + ".diameter.bedload.data"; String POROSITY = "porosity"; String BED_DIFFERENCE_YEAR = "bedheight_difference.year"; String BED_DIFFERENCE_YEAR_FILTERED = "bedheight_difference.year.filtered"; String BED_DIFFERENCE_HEIGHT_YEAR = "bedheight_difference.height_year"; - String BED_DIFFERENCE_HEIGHT_YEAR_FILTERED = - "bedheight_difference.height_year.filtered"; + String BED_DIFFERENCE_HEIGHT_YEAR_FILTERED = "bedheight_difference.height_year.filtered"; String BED_DIFFERENCE_YEAR_HEIGHT1 = "bedheight_difference.year.height1"; String BED_DIFFERENCE_YEAR_HEIGHT2 = "bedheight_difference.year.height2"; - String BED_DIFFERENCE_YEAR_HEIGHT1_FILTERED = - "bedheight_difference.year.height1.filtered"; - String BED_DIFFERENCE_YEAR_HEIGHT2_FILTERED = - "bedheight_difference.year.height2.filtered"; + String BED_DIFFERENCE_YEAR_HEIGHT1_FILTERED = "bedheight_difference.year.height1.filtered"; + String BED_DIFFERENCE_YEAR_HEIGHT2_FILTERED = "bedheight_difference.year.height2.filtered"; String MORPHOLOGIC_WIDTH = "morph-width"; @@ -365,88 +271,87 @@ String SQ_OVERVIEW = "sq_overview"; - String SQ_A_CURVE = "sq_a_curve"; + String SQ_A_CURVE = "sq_a_curve"; String SQ_A_MEASUREMENT = "sq_a_measurement"; - String SQ_A_OUTLIER = "sq_a_outlier"; + String SQ_A_OUTLIER = "sq_a_outlier"; String SQ_A_OUTLIER_CURVE = "sq_a_outlier_curve"; String SQ_A_OUTLIER_MEASUREMENT = "sq_a_outlier_measurement"; - String SQ_B_CURVE = "sq_b_curve"; + String SQ_B_CURVE = "sq_b_curve"; String SQ_B_MEASUREMENT = "sq_b_measurement"; - String SQ_B_OUTLIER = "sq_b_outlier"; - String SQ_B_OUTLIER_CURVE = "sq_b_outlier_curve"; - String SQ_B_OUTLIER_MEASUREMENT = "sq_b_outlier_measurement"; + String SQ_B_OUTLIER = "sq_b_outlier"; + String SQ_B_OUTLIER_CURVE = "sq_b_outlier_curve"; + String SQ_B_OUTLIER_MEASUREMENT = "sq_b_outlier_measurement"; - String SQ_C_CURVE = "sq_c_curve"; + String SQ_C_CURVE = "sq_c_curve"; String SQ_C_MEASUREMENT = "sq_c_measurement"; - String SQ_C_OUTLIER = "sq_c_outlier"; + String SQ_C_OUTLIER = "sq_c_outlier"; String SQ_C_OUTLIER_CURVE = "sq_c_outlier_curve"; String SQ_C_OUTLIER_MEASUREMENT = "sq_c_outlier_measurement"; - String SQ_D_CURVE = "sq_d_curve"; + String SQ_D_CURVE = "sq_d_curve"; String SQ_D_MEASUREMENT = "sq_d_measurement"; - String SQ_D_OUTLIER = "sq_d_outlier"; + String SQ_D_OUTLIER = "sq_d_outlier"; String SQ_D_OUTLIER_CURVE = "sq_d_outlier_curve"; String SQ_D_OUTLIER_MEASUREMENT = "sq_d_outlier_measurement"; - String SQ_E_CURVE = "sq_e_curve"; + String SQ_E_CURVE = "sq_e_curve"; String SQ_E_MEASUREMENT = "sq_e_measurement"; - String SQ_E_OUTLIER = "sq_e_outlier"; + String SQ_E_OUTLIER = "sq_e_outlier"; String SQ_E_OUTLIER_CURVE = "sq_e_outlier_curve"; String SQ_E_OUTLIER_MEASUREMENT = "sq_e_outlier_curve_measurement"; - String SQ_F_CURVE = "sq_f_curve"; + String SQ_F_CURVE = "sq_f_curve"; String SQ_F_MEASUREMENT = "sq_f_measurement"; - String SQ_F_OUTLIER = "sq_f_outlier"; + String SQ_F_OUTLIER = "sq_f_outlier"; String SQ_F_OUTLIER_CURVE = "sq_f_outlier_curve"; String SQ_F_OUTLIER_MEASUREMENT = "sq_f_outlier_measurement"; - String SQ_G_CURVE = "sq_g_curve"; + String SQ_G_CURVE = "sq_g_curve"; String SQ_G_MEASUREMENT = "sq_g_measurement"; - String SQ_G_OUTLIER = "sq_g_outlier"; + String SQ_G_OUTLIER = "sq_g_outlier"; String SQ_G_OUTLIER_CURVE = "sq_g_outlier_curve"; String SQ_G_OUTLIER_MEASUREMENT = "sq_g_outlier_measurement"; - String SQ_A_CURVE_OV = "sq_a_curve_overview"; + String SQ_A_CURVE_OV = "sq_a_curve_overview"; String SQ_A_MEASUREMENT_OV = "sq_a_measurement_overview"; - String SQ_A_OUTLIER_OV = "sq_a_outlier_overview"; + String SQ_A_OUTLIER_OV = "sq_a_outlier_overview"; String SQ_A_OUTLIER_CURVE_OV = "sq_a_outlier_curve_overview"; String SQ_A_OUTLIER_MEASUREMENT_OV = "sq_a_outlier_measurement_overview"; - String SQ_B_CURVE_OV = "sq_b_curve_overview"; + String SQ_B_CURVE_OV = "sq_b_curve_overview"; String SQ_B_MEASUREMENT_OV = "sq_b_measurement_overview"; - String SQ_B_OUTLIER_OV = "sq_b_outlier_overview"; - String SQ_B_OUTLIER_CURVE_OV = "sq_b_outlier_curve_overview"; - String SQ_B_OUTLIER_MEASUREMENT_OV = "sq_b_outlier_measurement_overview"; + String SQ_B_OUTLIER_OV = "sq_b_outlier_overview"; + String SQ_B_OUTLIER_CURVE_OV = "sq_b_outlier_curve_overview"; + String SQ_B_OUTLIER_MEASUREMENT_OV = "sq_b_outlier_measurement_overview"; - String SQ_C_CURVE_OV = "sq_c_curve_overview"; + String SQ_C_CURVE_OV = "sq_c_curve_overview"; String SQ_C_MEASUREMENT_OV = "sq_c_measurement_overview"; - String SQ_C_OUTLIER_OV = "sq_c_outlier_overview"; + String SQ_C_OUTLIER_OV = "sq_c_outlier_overview"; String SQ_C_OUTLIER_CURVE_OV = "sq_c_outlier_curve_overview"; String SQ_C_OUTLIER_MEASUREMENT_OV = "sq_c_outlier_measurement_overview"; - String SQ_D_CURVE_OV = "sq_d_curve_overview"; + String SQ_D_CURVE_OV = "sq_d_curve_overview"; String SQ_D_MEASUREMENT_OV = "sq_d_measurement_overview"; - String SQ_D_OUTLIER_OV = "sq_d_outlier_overview"; + String SQ_D_OUTLIER_OV = "sq_d_outlier_overview"; String SQ_D_OUTLIER_CURVE_OV = "sq_d_outlier_curve_overview"; String SQ_D_OUTLIER_MEASUREMENT_OV = "sq_d_outlier_measurement_overview"; - String SQ_E_CURVE_OV = "sq_e_curve_overview"; + String SQ_E_CURVE_OV = "sq_e_curve_overview"; String SQ_E_MEASUREMENT_OV = "sq_e_measurement_overview"; - String SQ_E_OUTLIER_OV = "sq_e_outlier_overview"; + String SQ_E_OUTLIER_OV = "sq_e_outlier_overview"; String SQ_E_OUTLIER_CURVE_OV = "sq_e_outlier_curve_overview"; - String SQ_E_OUTLIER_MEASUREMENT_OV = - "sq_e_outlier_curve_measurement_overview"; + String SQ_E_OUTLIER_MEASUREMENT_OV = "sq_e_outlier_curve_measurement_overview"; - String SQ_F_CURVE_OV = "sq_f_curve_overview"; + String SQ_F_CURVE_OV = "sq_f_curve_overview"; String SQ_F_MEASUREMENT_OV = "sq_f_measurement_overview"; - String SQ_F_OUTLIER_OV = "sq_f_outlier_overview"; + String SQ_F_OUTLIER_OV = "sq_f_outlier_overview"; String SQ_F_OUTLIER_CURVE_OV = "sq_f_outlier_curve_overview"; String SQ_F_OUTLIER_MEASUREMENT_OV = "sq_f_outlier_measurement_overview"; - String SQ_G_CURVE_OV = "sq_g_curve_overview"; + String SQ_G_CURVE_OV = "sq_g_curve_overview"; String SQ_G_MEASUREMENT_OV = "sq_g_measurement_overview"; - String SQ_G_OUTLIER_OV = "sq_g_outlier_overview"; + String SQ_G_OUTLIER_OV = "sq_g_outlier_overview"; String SQ_G_OUTLIER_CURVE_OV = "sq_g_outlier_curve_overview"; String SQ_G_OUTLIER_MEASUREMENT_OV = "sq_g_outlier_measurement_overview"; @@ -486,9 +391,9 @@ String STATIC_BEDHEIGHT = "static_bedheight"; - String BEDHEIGHT = "bedheight"; + String BEDHEIGHT = "bedheight"; String BEDHEIGHT_SOUNDING_WIDTH = "bedheight_sounding_width"; - String BEDHEIGHT_WIDTH = "bedheight_width"; + String BEDHEIGHT_WIDTH = "bedheight_width"; String EXTREME_WQ_CURVE = "extreme_wq_curve";
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/CalculationSelectSinfo.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/CalculationSelectSinfo.java Fri Jun 29 12:46:17 2018 +0200 @@ -11,14 +11,18 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.List; import org.apache.log4j.Logger; import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; import org.dive4elements.artifacts.common.utils.XMLUtils; +import org.dive4elements.river.artifacts.model.CollisionHibernateFactory; import org.dive4elements.river.artifacts.resources.Resources; +import org.dive4elements.river.artifacts.sinfo.collision.CollisionAccess; import org.dive4elements.river.artifacts.states.DefaultState; +import org.dive4elements.river.model.sinfo.Collision; import org.w3c.dom.Element; /** @@ -55,7 +59,19 @@ final SINFOArtifact sinfo = (SINFOArtifact) artifact; /* throws an exception if calculation mode is invalid */ - sinfo.getCalculationMode(); + final String calcmode = sinfo.getCalculationMode().toString(); // "toString()" is important + if (calcmode.equals("sinfo_calc_collision")) { + + final CollisionAccess access = new CollisionAccess((SINFOArtifact) artifact); + + final List<Collision> list = CollisionHibernateFactory.getCollisionsByRiver(access.getRiver()); + + if (list.size() == 0) { + throw new IllegalArgumentException("error_no_data_for_river"); + } + } + return true; } + } \ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/CalculationSelectUinfo.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/CalculationSelectUinfo.java Fri Jun 29 12:46:17 2018 +0200 @@ -61,7 +61,7 @@ final String river = uinfo.getRiver(); if (!UedauernPropertiesHelper.fileExistsForRiver(river)) { - throw new IllegalArgumentException("error_river_inundationdur_file_not_found"); + throw new IllegalArgumentException("error_no_data_for_river"); } }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationAccess.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationAccess.java Fri Jun 29 12:46:17 2018 +0200 @@ -51,13 +51,6 @@ assert (calculationMode == UinfoCalcMode.uinfo_inundation_duration); } - public Double getSedimentHeight() { - if (super.getBoolean("use_scenario")) { - return super.getDouble("sedimentheight"); // TODO: INPUT Valdiation (nicht hier, sondern im Panel. Erinnerung) - } - return null; - } - public Integer getYear() { final int[] years = this.helper.getYears("state.uinfo.year", "singleyear"); if (years != null) { @@ -78,7 +71,7 @@ } public String getWMSScenarioUrl() { - if (super.getBoolean("use_scenario")) { + if (getIsUseScenario()) { final UedauernPropertiesHelper helper = UedauernPropertiesHelper.getInstance(getRiverName()); if (this.getYear() != null) { return helper.getScenarioUrlFromYear(this.getYear(), this.getDwspl()); @@ -89,8 +82,8 @@ return ""; } - private Integer getDwspl() { - if (super.getBoolean("use_scenario")) { + public Integer getDwspl() { + if (getIsUseScenario()) { return super.getInteger("sedimentheight"); } return null; @@ -101,4 +94,15 @@ return super.getString("vegzones"); } + public boolean getIsUseScenario() { + return super.getBoolean("use_scenario"); + } + + public Integer[] mittelStartEndYears() { + if (getIsUseScenario()) { + final UedauernPropertiesHelper helper = UedauernPropertiesHelper.getInstance(getRiverName()); + return helper.getMittelStartEnd(); + } + return null; + } } \ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java Fri Jun 29 12:46:17 2018 +0200 @@ -9,19 +9,14 @@ */ package org.dive4elements.river.artifacts.uinfo.inundationduration; -import java.util.ArrayList; -import java.util.Collection; import java.util.List; import org.apache.commons.lang.math.DoubleRange; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.access.RiverAccess; -import org.dive4elements.river.artifacts.common.GeneralResultType; -import org.dive4elements.river.artifacts.common.ResultRow; import org.dive4elements.river.artifacts.model.Calculation; import org.dive4elements.river.artifacts.model.CalculationResult; import org.dive4elements.river.artifacts.resources.Resources; -import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; @@ -53,35 +48,34 @@ final RiverInfo riverInfo = new RiverInfo(river); final DoubleRange calcRange = indurax.getRange(); final String url = indurax.getWMSUrl(); - final Integer year = indurax.getYear(); // null bei year -> Integer.. evtl ungünstig.. evtl. anders lösen - final DoubleRange range = indurax.getRange(); - final Double sedimentHeight = indurax.getSedimentHeight(); + final Integer year = indurax.getYear(); // null bei year -> Integer final String zonesRaw = indurax.getVegZones(); final List<VegetationZone> zones = VegetationZone.parse(zonesRaw); - - final InundationDurationCalculationResults results = new InundationDurationCalculationResults(calcModeLabel, user, riverInfo, calcRange); - - final Collection<ResultRow> rows = new ArrayList<>(); - - final ResultRow row1 = ResultRow.create(). // - putValue(GeneralResultType.station, 88). // - putValue(SInfoResultType.discharge, 100). // - putValue(SInfoResultType.waterlevel, 2). // - putValue(SInfoResultType.gaugeLabel, "Torgau"); + final String scenarioUrl = indurax.getWMSScenarioUrl(); + final String scenarioStr = String.valueOf(indurax.getDwspl()); - rows.add(row1); - - final ResultRow row2 = ResultRow.create(). // - putValue(SInfoResultType.discharge, 200). // - putValue(SInfoResultType.waterlevel, 3). // - putValue(SInfoResultType.gaugeLabel, "Zollenspieker"); + // TODO: add vegetationzone-values as parameter to url and use this url as veg'zone'url - rows.add(row2); + final boolean isUseScenario = indurax.getIsUseScenario(); + final Integer[] mittelStartEndYears = indurax.mittelStartEndYears(); + final InundationDurationCalculationResult result = new InundationDurationCalculationResult(); - final InundationDurationCalculationResult result = new InundationDurationCalculationResult("Ergebnis 1", null, rows); + final String rangeDuration = year != null ? String.valueOf(year) + : new StringBuilder().append(String.valueOf(mittelStartEndYears[0])).append("-").append(mittelStartEndYears[1]).toString(); - results.addResult(result, problems); + result.addLayer(Resources.getMsg(this.context.getMeta(), "uinfo.export.url.inundationduration.inundationduration", new Object[] { rangeDuration }), url, + true); + // TODO: add vegetationzone-values as parameter to url and use this url as veg'zone'url + result.addLayer(Resources.getMsg(this.context.getMeta(), "uinfo.export.url.inundationduration.vegetation", new Object[] { rangeDuration }), url, false); + if (isUseScenario) { + result.addLayer( + Resources.getMsg(this.context.getMeta(), "uinfo.export.url.inundationduration.scenario", new Object[] { rangeDuration, scenarioStr }), + scenarioUrl, true); + // TODO: add vegetationzone-values as parameter to url and use this url as veg'zone'url + result.addLayer(Resources.getMsg(this.context.getMeta(), "uinfo.export.url.inundationduration.vegetation_scenario", + new Object[] { rangeDuration, scenarioStr }), scenarioUrl, false); + } - return new CalculationResult(results, problems); + return new CalculationResult(result, problems); } } \ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculationResult.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculationResult.java Fri Jun 29 12:46:17 2018 +0200 @@ -9,95 +9,48 @@ */ package org.dive4elements.river.artifacts.uinfo.inundationduration; +import java.io.Serializable; import java.util.ArrayList; -import java.util.Collection; - -import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult; -import org.dive4elements.river.artifacts.common.ExportContextCSV; -import org.dive4elements.river.artifacts.common.GeneralResultType; -import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource; -import org.dive4elements.river.artifacts.common.ResultRow; -import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; -import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; -import org.dive4elements.river.artifacts.sinfo.util.WstInfo; +import java.util.List; /** * @author Domenico Nardi Tironi */ -final class InundationDurationCalculationResult extends AbstractCalculationExportableResult<InundationDurationCalculationResults> { +final class InundationDurationCalculationResult implements Serializable { private static final long serialVersionUID = 1L; - private static final String JASPER_FILE = "/jasper/templates/uinfo.inundationduration.jrxml"; - - public InundationDurationCalculationResult(final String label, final WstInfo wst, final Collection<ResultRow> rows) { - super(label, rows); - } - - @Override - public void writeCSVHeader(final ExportContextCSV exportContextCSV, final InundationDurationCalculationResults results, final RiverInfo river) { - - final Collection<String> header = new ArrayList<>(11); - - header.add(exportContextCSV.formatCsvHeader(GeneralResultType.station)); - header.add(exportContextCSV.msgUnitCSV(SInfoResultType.flowdepth)); - header.add(exportContextCSV.msgUnitCSV(SInfoResultType.waterlevel, river.getWstUnit())); - header.add(exportContextCSV.msgUnitCSV(SInfoResultType.discharge)); - header.add(exportContextCSV.formatCsvHeader(SInfoResultType.waterlevelLabel)); - header.add(exportContextCSV.formatCsvHeader(SInfoResultType.gaugeLabel)); - header.add(exportContextCSV.msgUnitCSV(SInfoResultType.meanBedHeight, river.getWstUnit())); - header.add(exportContextCSV.formatCsvHeader(SInfoResultType.soundingLabel)); - header.add(exportContextCSV.formatCsvHeader(SInfoResultType.location)); + private final List<WmsLayer> layers = new ArrayList<>(); - exportContextCSV.writeCSVLine(header.toArray(new String[header.size()])); + public final static class WmsLayer { + private final String label; + private final String url; + private final boolean showLayerLink; - } + public WmsLayer(final String label, final String url, final boolean showLayerLink) { + this.label = label; + this.url = url; + this.showLayerLink = showLayerLink; + } - @Override - protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV, final InundationDurationCalculationResults results) { - // no Result metadata so far + public String getLabel() { + return this.label; + } + + public String getUrl() { + return this.url; + } + + public boolean isShowLayerLink() { + return this.showLayerLink; + } } - @Override - protected String[] formatCSVRow(final ExportContextCSV exportContextCSV, final InundationDurationCalculationResults results, final ResultRow row) { - return formatRow(exportContextCSV, results, row); - } - - @Override - protected String[] formatPDFRow(final ExportContextCSV exportContextPDF, final InundationDurationCalculationResults results, final ResultRow row) { - - return formatRow(exportContextPDF, results, row); - } - - @Override - protected String getJasperFile() { - - return JASPER_FILE; + public void addLayer(final String label, final String url, final boolean showLayerLink) { + this.layers.add(new WmsLayer(label, url, showLayerLink)); } - @Override - protected void addJRTableHeader(final ExportContextCSV exportContextPDF, final MetaAndTableJRDataSource source, - final InundationDurationCalculationResults results) { - - exportContextPDF.addJRMetadata(source, "station_header", GeneralResultType.station); + public List<WmsLayer> getLayers() { + return this.layers; } - - protected String[] formatRow(final ExportContextCSV context, final InundationDurationCalculationResults results, final ResultRow row) { - - final Collection<String> lines = new ArrayList<>(11); - - lines.add(context.formatRowValue(row, GeneralResultType.station)); - lines.add(context.formatRowValue(row, SInfoResultType.flowdepth)); - - lines.add(context.formatRowValue(row, SInfoResultType.waterlevel)); - lines.add(context.formatRowValue(row, SInfoResultType.discharge)); - lines.add(context.formatRowValue(row, SInfoResultType.waterlevelLabel)); - lines.add(context.formatRowValue(row, SInfoResultType.gaugeLabel)); - lines.add(context.formatRowValue(row, SInfoResultType.meanBedHeight)); - lines.add(context.formatRowValue(row, SInfoResultType.soundingLabel)); - lines.add(context.formatRowValue(row, SInfoResultType.location)); - - return lines.toArray(new String[lines.size()]); - } - } \ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculationResults.java Thu Jun 28 19:13:14 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde - * Software engineering by - * Björnsen Beratende Ingenieure GmbH - * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt - * - * This file is Free Software under the GNU AGPL (>=v3) - * and comes with ABSOLUTELY NO WARRANTY! Check out the - * documentation coming with Dive4Elements River for details. - */ -package org.dive4elements.river.artifacts.uinfo.inundationduration; - -import org.apache.commons.lang.math.DoubleRange; -import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult; -import org.dive4elements.river.artifacts.common.AbstractCalculationResults; -import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; - -/** - * @author Domenico Nardi Tironi - * - */ -final class InundationDurationCalculationResults extends AbstractCalculationResults<AbstractCalculationExportableResult<InundationDurationCalculationResults>> { - - private static final long serialVersionUID = 1L; - - public InundationDurationCalculationResults(final String calcModeLabel, final String user, final RiverInfo river, final DoubleRange calcRange) { - super(calcModeLabel, user, river, calcRange); - } -} \ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationExporter.java Thu Jun 28 19:13:14 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde -* Software engineering by -* Björnsen Beratende Ingenieure GmbH -* Dr. Schumacher Ingenieurbüro für Wasser und Umwelt -* -* This file is Free Software under the GNU AGPL (>=v3) -* and comes with ABSOLUTELY NO WARRANTY! Check out the -* documentation coming with Dive4Elements River for details. -*/ -package org.dive4elements.river.artifacts.uinfo.inundationduration; - -import java.io.OutputStream; - -import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult; -import org.dive4elements.river.artifacts.common.AbstractCommonExporter; -import org.dive4elements.river.artifacts.common.ExportContextCSV; -import org.dive4elements.river.artifacts.common.I18NStrings; -import org.dive4elements.river.artifacts.common.JasperReporter; -import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource; -import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; - -import au.com.bytecode.opencsv.CSVWriter; -import net.sf.jasperreports.engine.JRException; - -/** - * @author Domenico Nardi Tironi - * - */ -public class InundationDurationExporter extends AbstractCommonExporter<InundationDurationCalculationResults> { - - @Override - protected void doWritePdf(final OutputStream out, final InundationDurationCalculationResults results) { - // TODO: Move to super - try { - final ExportContextCSV exportContextCSV = new ExportContextCSV(this.context, null); - - final JasperReporter reporter = new JasperReporter(); - - for (final AbstractCalculationExportableResult<InundationDurationCalculationResults> result : results.getResults()) { - final MetaAndTableJRDataSource source = new MetaAndTableJRDataSource(); - getHelper().addJRMetaDataUSINFO(source, results); - - result.addReport(exportContextCSV, results, reporter, source); - } - - reporter.exportPDF(out); - } - catch (final JRException je) { - getLog().warn("Error generating PDF Report!", je); - } - } - - @Override - protected void doWriteCSVData(final CSVWriter writer, final InundationDurationCalculationResults results) { - // TODO: Diesen Ablauf in super? -> leichte abweichung - - // TODO: move results into context? - final ExportContextCSV exportContextCSV = new ExportContextCSV(this.context, writer); - - getLog().info("writeCSVData"); - - final RiverInfo river = results.getRiver(); - - /* write as csv */ - exportContextCSV.writeCSVGlobalMetadataDefaults(results); // ggf auslagern innerhalb dieser Klasse - exportContextCSV.writeCSVMetaEntry(I18NStrings.CSV_META_HEIGHT_UNIT_RIVER, river.getWstUnit()); - // writer.writeNext(new String[] { "" }); // break line HERE to avoid redundance - - final Class<?> lastResultType = null; - - for (final AbstractCalculationExportableResult<InundationDurationCalculationResults> result : results.getResults()) { - - final Class<?> resultType = result.getClass(); - if (lastResultType == null || lastResultType != resultType) { - exportContextCSV.writeBlankLine(); - result.writeCSVHeader(exportContextCSV, results, river); - exportContextCSV.writeBlankLine(); - } else - exportContextCSV.writeCSVLine(new String[] { "#" }); - - result.writeCsv(exportContextCSV, results); - } - - } -} \ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationState.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationState.java Fri Jun 29 12:46:17 2018 +0200 @@ -16,14 +16,14 @@ import org.dive4elements.river.artifacts.ChartArtifact; import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.MapArtifact.MapState; -import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult; import org.dive4elements.river.artifacts.model.Calculation; import org.dive4elements.river.artifacts.model.CalculationResult; import org.dive4elements.river.artifacts.model.DataFacet; import org.dive4elements.river.artifacts.model.EmptyFacet; -import org.dive4elements.river.artifacts.model.FacetTypes; import org.dive4elements.river.artifacts.model.ReportFacet; +import org.dive4elements.river.artifacts.model.map.WMSLayerFacet; import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; +import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer; /** * @author Domenico Nardi Tironi @@ -35,6 +35,8 @@ private static final long serialVersionUID = 1L; + private static final String LABEL_URL_SEPARATOR = ";";// always sync with client (ExportPanel) + /** * From this state can only be continued trivially. */ @@ -51,7 +53,7 @@ return null; } - return compute((UINFOArtifact) artifact, context, hash, facets, old); + return compute((UINFOArtifact) artifact, context, ComputeType.FEED, hash, facets, old); } @Override @@ -64,7 +66,8 @@ if (facets != null) super.computeAdvance(artifact, hash, context, facets, old); - return compute((UINFOArtifact) artifact, context, hash, facets, old); + return compute((UINFOArtifact) artifact, context, ComputeType.ADVANCE, hash, facets, old); + } /** @@ -73,27 +76,43 @@ * @param old * Object that was cached. */ - private Object compute(final UINFOArtifact sinfo, final CallContext context, final String hash, final List<Facet> facets, final Object old) { + private Object compute(final UINFOArtifact sinfo, final CallContext context, final ComputeType type, final String hash, final List<Facet> facets, + final Object old) { final CalculationResult res = doCompute(sinfo, context, old); if (facets == null) return res; - final InundationDurationCalculationResults results = (InundationDurationCalculationResults) res.getData(); - - final List<AbstractCalculationExportableResult<InundationDurationCalculationResults>> resultList = results.getResults(); + final InundationDurationCalculationResult result = (InundationDurationCalculationResult) res.getData(); + final List<WmsLayer> layers = result.getLayers(); - if (!resultList.isEmpty()) { - final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id); - final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id); + int index = 1; // 1 because super.computeAdvance adds the river theme with index 0 + for (final WmsLayer layer : layers) { - facets.add(csv); - facets.add(pdf); + final String label = layer.getLabel(); + final String url = layer.getUrl(); + + final WMSLayerFacet wmsFacet = new WMSLayerFacet(index, FLOODMAP_EXTERNAL_WMS_INUNDATIONDUR + index, label, type, getID(), hash, url); + facets.add(wmsFacet); + + wmsFacet.addLayer("OSM-WMS-Dienst"); + + // wmsFacet.setExtent(getExtent(false)); + // wmsFacet.setOriginalExtent(getExtent(true)); + wmsFacet.setSrid(getSrid()); + + if (layer.isShowLayerLink()) + facets.add(new DataFacet("wms_url", label + LABEL_URL_SEPARATOR + url, ComputeType.ADVANCE, hash, this.id)); + + index++; // because super.computeAdvance adds the river theme with index 0 } + // tODO: create layer links: filter by "showLayerLink" + + // tODO: create layer links: filter by "showLayerLink" + final Calculation report = res.getReport(); - if (report.hasProblems()) facets.add(new ReportFacet(ComputeType.ADVANCE, hash, this.id));
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernPropertiesHelper.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernPropertiesHelper.java Fri Jun 29 12:46:17 2018 +0200 @@ -74,7 +74,7 @@ return this.properties; } - private final Integer[] getMittelStartEnd() { + final Integer[] getMittelStartEnd() { if (this.mittelStartEnde == null) { final Integer mittel_start = Integer.valueOf(getProperties().get("mittel_start").toString()); final Integer mittel_ende = Integer.valueOf(getProperties().get("mittel_ende").toString());
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/YearChoice.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/YearChoice.java Fri Jun 29 12:46:17 2018 +0200 @@ -25,14 +25,14 @@ protected LinkedHashMap<String, String> makeEntries(final CallMeta meta, final Artifact artifact) { // in helper-klasse; dann hier label lazy loaden final LinkedHashMap<String, String> entries = new LinkedHashMap<>(); - - final InundationDurationAccess access = new InundationDurationAccess((UINFOArtifact) artifact); + if (artifact != null) {// necessary; otherwise crashes randomly when reloading old calculations + final InundationDurationAccess access = new InundationDurationAccess((UINFOArtifact) artifact); - final UedauernPropertiesHelper helper = UedauernPropertiesHelper.getInstance(access.getRiverName()); - final LinkedHashMap<String, String> extras = helper.getExtraLayers(meta); - entries.put("state.uinfo.year", null); - entries.putAll(extras); - + final UedauernPropertiesHelper helper = UedauernPropertiesHelper.getInstance(access.getRiverName()); + final LinkedHashMap<String, String> extras = helper.getExtraLayers(meta); + entries.put("state.uinfo.year", null); + entries.putAll(extras); + } return entries; }
--- a/artifacts/src/main/java/org/dive4elements/river/exports/AbstractExporter.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/AbstractExporter.java Fri Jun 29 12:46:17 2018 +0200 @@ -305,6 +305,10 @@ final char quote = '"'; final char escape = '\\'; + // Write BOM so excel is happy + final byte[] BOM = new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }; + this.out.write(BOM); + final CSVWriter writer = new CSVWriter(new OutputStreamWriter(this.out, DEFAULT_CSV_CHARSET), DEFAULT_CSV_SEPARATOR, quote, escape, "\r\n"); writeCSVData(writer);
--- a/artifacts/src/main/java/org/dive4elements/river/exports/ChartExportHelper.java Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/ChartExportHelper.java Fri Jun 29 12:46:17 2018 +0200 @@ -316,9 +316,10 @@ log.debug("export chart as CSV"); try { -// FIXME: decide: to BOM or not to BOM -// final byte[] BOM = new byte[] {(byte)0xEF, (byte)0xBB, (byte)0xBF}; -// out.write(BOM); + + // Write BOM so excel is happy + final byte[] BOM = new byte[] {(byte)0xEF, (byte)0xBB, (byte)0xBF}; + out.write(BOM); final CSVWriter writer = new CSVWriter( new OutputStreamWriter(
--- a/artifacts/src/main/resources/messages.properties Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/resources/messages.properties Fri Jun 29 12:46:17 2018 +0200 @@ -1036,8 +1036,8 @@ sinfo.export.csv.header.flowdepth.development = Flie\u00dftiefenentwicklung sinfo.export.pdf.header.flowdepth.development = Flie\u00dftiefen-entwicklung sinfo.export.csv.header.flowdepth.development.per.year = Flie\u00dftiefenent-wicklung pro Jahr -sinfo.export.csv.header.waterlevel.difference = \u0394WSPL -sinfo.export.csv.header.mean_bed_height.difference = \u0394MSH +sinfo.export.csv.header.waterlevel.difference = \u0394WSPL +sinfo.export.csv.header.mean_bed_height.difference = \u0394MSH sinfo.export.csv.header.flowdepth.current = Flie\u00dftiefe h-aktuell sinfo.export.csv.header.flowdepth.historical = Flie\u00dftiefe h-historisch @@ -1095,6 +1095,10 @@ uinfo.export.csv.meta.header.veg.name = Vegetationszonen uinfo.export.csv.meta.header.veg.dauervon = \u00dcberflutungsdauer von [d/a] uinfo.export.csv.meta.header.veg.dauerbis = \u00dcberflutungsdauer bis [d/a] +uinfo.export.url.inundationduration.inundationduration = \u00dcberflutungsdauer ({0}) +uinfo.export.url.inundationduration.vegetation = Vegetationszonen ({0}) +uinfo.export.url.inundationduration.vegetation_scenario= Vegetationszonen Szenario (Zeitraum: {0}, Szenario: {1}) +uinfo.export.url.inundationduration.scenario = \u00dcberflutungsdauer Szenario (Zeitraum: {0}, Szenario: {1}) predefineddepthevol.total.title = Gesamt: {0} predefineddepthevol.peryear.title = J\u00e4hrlich: {0} @@ -1108,8 +1112,8 @@ sinfo.export.csv.header.infrastructure.height = Infrastrukturh\u00f6he infrastructure.height.title = Geod. H\u00f6he -sinfo.export.csv.title.collision.detail = Detail View -sinfo.export.csv.title.collison.overview = Overview +sinfo.export.csv.title.collision.detail = Abfluss/Abflusszustand +sinfo.export.csv.title.collison.overview = H\u00e4ufigkeiten sinfo.export.csv.header.collision.count = Anzahl der Grundber\u00fchrungen collision.count.title = Grundber\u00fchrungen {0} chart.collision_count.section.yaxis.label = H\u00e4ufigkeit
--- a/artifacts/src/main/resources/messages_de.properties Thu Jun 28 19:13:14 2018 +0200 +++ b/artifacts/src/main/resources/messages_de.properties Fri Jun 29 12:46:17 2018 +0200 @@ -1034,10 +1034,10 @@ sinfo.export.csv.header.channel.width = Sollbreite Fahrrinne sinfo.export.csv.header.channel.depth = Solltiefe Fahrrinne sinfo.export.pdf.header.flowdepth.development = Flie\u00dftiefen-entwicklung -sinfo.export.csv.header.flowdepth.development = Flie\u00dftiefenentwicklung +sinfo.export.csv.header.flowdepth.development = Flie\u00dftiefenentwicklung sinfo.export.csv.header.flowdepth.development.per.year = Flie\u00dftiefenent-wicklung pro Jahr -sinfo.export.csv.header.waterlevel.difference = \u0394WSPL -sinfo.export.csv.header.mean_bed_height.difference = \u0394MSH +sinfo.export.csv.header.waterlevel.difference = \u0394WSPL +sinfo.export.csv.header.mean_bed_height.difference = \u0394MSH sinfo.export.csv.header.flowdepth.current = Flie\u00dftiefe h-aktuell sinfo.export.csv.header.flowdepth.historical = Flie\u00dftiefe h-historisch @@ -1095,6 +1095,10 @@ uinfo.export.csv.meta.header.veg.name = Vegetationszonen uinfo.export.csv.meta.header.veg.dauervon = \u00dcberflutungsdauer von [d/a] uinfo.export.csv.meta.header.veg.dauerbis = \u00dcberflutungsdauer bis [d/a] +uinfo.export.url.inundationduration.inundationduration = \u00dcberflutungsdauer ({0}) +uinfo.export.url.inundationduration.vegetation = Vegetationszonen ({0}) +uinfo.export.url.inundationduration.vegetation_scenario= Vegetationszonen Szenario (Zeitraum: {0}, Szenario: {1}) +uinfo.export.url.inundationduration.scenario = \u00dcberflutungsdauer Szenario (Zeitraum: {0}, Szenario: {1}) predefineddepthevol.total.title = Gesamt: {0} predefineddepthevol.peryear.title = J\u00e4hrlich: {0} @@ -1108,8 +1112,8 @@ sinfo.export.csv.header.infrastructure.height = Infrastrukturh\u00f6he infrastructure.height.title = Geod. H\u00f6he -sinfo.export.csv.title.collision.detail = Detailansicht -sinfo.export.csv.title.collison.overview = \u00dcbersicht +sinfo.export.csv.title.collision.detail = Abfluss/Abflusszustand +sinfo.export.csv.title.collison.overview = H\u00e4ufigkeiten sinfo.export.csv.header.collision.count = Anzahl der Grundber\u00fchrungen collision.count.title = Grundber\u00fchrungen {0} chart.collision_count.section.yaxis.label = H\u00e4ufigkeit
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Thu Jun 28 19:13:14 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Fri Jun 29 12:46:17 2018 +0200 @@ -1537,7 +1537,9 @@ String waterlevel_ground_state(); - String error_river_inundationdur_file_not_found(); + String error_no_data_for_river(); String sinfo_flood_duration(); + + String sinfo_collision_export(); } \ No newline at end of file
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Thu Jun 28 19:13:14 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Fri Jun 29 12:46:17 2018 +0200 @@ -324,7 +324,7 @@ ele_window_save_error = Error while saving elevations. ele_window_geometry_error = The geometry is not supported: -error_river_inundationdur_file_not_found = F\u00fcr das gew\u00e4hlte Gew\u00e4sser liegen keine Daten vor. +error_no_data_for_river = F\u00fcr das gew\u00e4hlte Gew\u00e4sser liegen keine Daten vor. unexpected_exception = There occured an unexpected exception error_years_wrong = The second year needs to be bigger than the first year. error_read_minmax_values = Error while reading min/max values for the location input. @@ -760,6 +760,7 @@ no_data_sediment_difference = Invalid value: $1 sinfo = S-INFO +sinfo_collision_export = Grundber\u00fchrungen Export sinfo_flowdepth_export = Flie\u00dftiefen Export sinfo_flowdepth_report = Flie\u00dftiefen Bericht sinfo_flow_depth = Flie\u00dftiefen
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Thu Jun 28 19:13:14 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Fri Jun 29 12:46:17 2018 +0200 @@ -324,7 +324,7 @@ ele_window_save_error = Fehler beim Speichern der H\u00f6hen. ele_window_geometry_error = Die Geometrie wird nicht unterst\u00fctzt: -error_river_inundationdur_file_not_found = F\u00fcr das gew\u00e4hlte Gew\u00e4sser liegen keine Daten vor. +error_no_data_for_river = F\u00fcr das gew\u00e4hlte Gew\u00e4sser liegen keine Daten vor. unexpected_exception = Ein unerwarteter Fehler ist aufgetreten error_years_wrong = Das zweite Jahr muss gr\u00f6\u00dfer als das erste sein. error_read_minmax_values = Fehler beim Lesen der min/max Werte. Es kann keine Validierung der eingegebenen Strecke durchgef\u00fchrt werden. @@ -760,6 +760,7 @@ no_data_sediment_difference = Der Wert $1 ist ung\u00fcltig. sinfo = S-INFO +sinfo_collision_export = Grundber\u00fchrungen Export sinfo_flowdepth_export = Flie\u00dftiefen Export sinfo_flowdepth_report = Flie\u00dftiefen Bericht sinfo_flow_depth = Flie\u00dftiefen
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ExportPanel.java Thu Jun 28 19:13:14 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ExportPanel.java Fri Jun 29 12:46:17 2018 +0200 @@ -8,22 +8,25 @@ package org.dive4elements.river.client.client.ui; +import java.util.ArrayList; import java.util.List; import java.util.MissingResourceException; -import com.google.gwt.core.client.GWT; - -import com.smartgwt.client.widgets.Canvas; -import com.smartgwt.client.widgets.Label; -import com.smartgwt.client.widgets.layout.HLayout; -import com.smartgwt.client.widgets.layout.VLayout; - +import org.dive4elements.river.client.client.Config; +import org.dive4elements.river.client.client.FLYSConstants; import org.dive4elements.river.client.shared.model.Collection; import org.dive4elements.river.client.shared.model.ExportMode; import org.dive4elements.river.client.shared.model.Facet; -import org.dive4elements.river.client.client.Config; -import org.dive4elements.river.client.client.FLYSConstants; +import com.google.gwt.core.client.GWT; +import com.smartgwt.client.types.Alignment; +import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.Label; +import com.smartgwt.client.widgets.form.DynamicForm; +import com.smartgwt.client.widgets.form.fields.FormItem; +import com.smartgwt.client.widgets.form.fields.TextAreaItem; +import com.smartgwt.client.widgets.layout.HLayout; +import com.smartgwt.client.widgets.layout.VLayout; /** * A panel that displays an download icon for all available export modes of a @@ -33,34 +36,82 @@ */ public class ExportPanel extends VLayout { - /** The message class that provides i18n strings.*/ + private static final String LABEL_URL_SEPARATOR = ";";// always sync with server (InundationDurationState) + /** The message class that provides i18n strings. */ protected FLYSConstants MSG = GWT.create(FLYSConstants.class); - protected Collection c; + protected Collection c; protected List<ExportMode> exports; - /** This layout will store a list of available export types.*/ + /** This layout will store a list of available export types. */ protected HLayout container; - - public ExportPanel(Collection c, List<ExportMode> exports) { + public ExportPanel(final Collection c, final List<ExportMode> exports) { super(); - this.c = c; - this.exports = exports; + this.c = c; + this.exports = exports; this.container = new HLayout(); - Label title = new Label(MSG.dataexport()); + final Label title = new Label(this.MSG.dataexport()); title.setHeight(15); title.setStyleName("fontNormalSmallUnderlined"); addMember(title); addMember(createExportItems()); - + addMember(createVlayoutExportItems()); setHeight(45); setMembersMargin(5); } + private VLayout createVlayoutExportItems() { + final VLayout layout = new VLayout(); + final DynamicForm form1 = new DynamicForm(); + form1.setColWidths("10%"); + form1.setWidth(400); + form1.setAlign(Alignment.LEFT); + final List<FormItem> items = new ArrayList<FormItem>(); + for (final ExportMode mode : this.exports) { + final String name = mode.getName(); + final List<Facet> facets = mode.getFacets(); + + for (int i = 0; i < facets.size(); i++) { + final Facet facet = facets.get(i); + final String facetName = facet.getName(); + + if (!facetName.equals("wms_url")) + continue; + if ("wms_url".equals(facetName)) + items.add(createUrlLine(facet.getDescription(), i)); + } + } + form1.setFields(items.toArray(new FormItem[items.size()])); + layout.addMember(form1); + return layout; + } + + private FormItem createUrlLine(final String labelAndUrl, final int count) { + + final String[] labelAndurlSplit = labelAndUrl.split(LABEL_URL_SEPARATOR); + if (labelAndurlSplit.length == 2) { + + final TextAreaItem label = new TextAreaItem(); + label.setTitle(labelAndurlSplit[0]); + + label.setWrapTitle(true); + label.setTitleColSpan(3); + label.setColSpan(7); + label.setWidth(250); + + label.setTitleAlign(Alignment.LEFT); + + label.setValue(labelAndurlSplit[1]); + label.setCanEdit(false); + + return label; + } + return null; + } /** * This method is used to create an item (created by createExportButton) for @@ -69,84 +120,80 @@ * @return a horizontal list of buttons. */ protected HLayout createExportItems() { - HLayout layout = new HLayout(); + final HLayout layout = new HLayout(); - for (ExportMode mode: exports) { - String name = mode.getName(); - List<Facet> facets = mode.getFacets(); + for (final ExportMode mode : this.exports) { + final String name = mode.getName(); + final List<Facet> facets = mode.getFacets(); - for (Facet facet: facets) { - if (name.equals("fix_wq_curve_at_export")) { + for (final Facet facet : facets) { + final String facetName = facet.getName(); + + if (name.equals("fix_wq_curve_at_export")) continue; - } + String filename = name; - if (name.equals("computed_dischargecurve_at_export")) { + if (name.equals("computed_dischargecurve_at_export")) filename = "dischargecurve"; - } - layout.addMember(createExportButton( - name, - facet.getName(), - filename)); + + if ("wms_url".equals(facetName)) + continue; + + layout.addMember(createExportButton(name, facetName, filename)); } } return layout; } - /** * This method is used to create a button (with click handler) for a * concrete export mode / type. * - * @param name The name of the export. - * @param facet The name of the export type (e.g. CSV, WST). + * @param name + * The name of the export. + * @param facet + * The name of the export type (e.g. CSV, WST). * * @return an image with click handler. */ - protected Canvas createExportButton( - String name, - String facet, - String filename - ) { - String url = getExportUrl(name, facet, filename); + protected Canvas createExportButton(final String name, final String facet, final String filename) { + String url = getExportUrl(name, facet, filename); String imgUrl = GWT.getHostPageBaseURL(); if (facet.equals("pdf")) { - imgUrl += MSG.downloadPDF(); - } - else if (facet.equals("at")) { - imgUrl += MSG.downloadAT(); - } - else if (facet.equals("wst")) { - imgUrl += MSG.downloadWST(); + imgUrl += this.MSG.downloadPDF(); + } else if (facet.equals("at")) { + imgUrl += this.MSG.downloadAT(); + } else if (facet.equals("wst")) { + imgUrl += this.MSG.downloadWST(); + } else if (facet.equals("csv")) { + url += "&encoding=UTF-8"; + imgUrl += this.MSG.downloadCSV(); + } else { + imgUrl += this.MSG.imageSave(); } - else if (facet.equals("csv")) { - url += "&encoding=windows-1252"; - imgUrl += MSG.downloadCSV(); - } - else { - imgUrl += MSG.imageSave(); - } - ImgLink link = new ImgLink(imgUrl, url, 30, 30); + final ImgLink link = new ImgLink(imgUrl, url, 30, 30); link.setTooltip(getTooltipText(name, facet)); return link; } - /** * Creates the URL used to trigger an export. * - * @param name The name of the export. - * @param facet The name of the export type (e.g. CSV, WST). + * @param name + * The name of the export. + * @param facet + * The name of the export type (e.g. CSV, WST). * * @return the export URL. */ - protected String getExportUrl(String name, String facet, String filename) { - Config config = Config.getInstance(); + protected String getExportUrl(final String name, final String facet, final String filename) { + final Config config = Config.getInstance(); String url = GWT.getModuleBaseURL(); url += "export"; - url += "?uuid=" + c.identifier(); + url += "?uuid=" + this.c.identifier(); url += "&name=" + filename; url += "&mode=" + name; url += "&type=" + facet; @@ -156,20 +203,21 @@ return url; } - /** * Creates a text used as tooltip for a specific export and type. * - * @param name The name of the export. - * @param facet The name of the export type (e.g. CSV, WST). + * @param name + * The name of the export. + * @param facet + * The name of the export type (e.g. CSV, WST). * * @return a tooltip text. */ - protected String getTooltipText(String name, String facet) { + protected String getTooltipText(final String name, final String facet) { try { - return MSG.getString(name) + " | " + MSG.getString(facet); + return this.MSG.getString(name) + " | " + this.MSG.getString(facet); } - catch (MissingResourceException mre) { + catch (final MissingResourceException mre) { return name + " | " + facet; } }
--- a/gwt-client/src/main/java/org/dive4elements/river/client/server/CSVExportServiceImpl.java Thu Jun 28 19:13:14 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/CSVExportServiceImpl.java Fri Jun 29 12:46:17 2018 +0200 @@ -8,83 +8,68 @@ package org.dive4elements.river.client.server; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.util.ArrayList; import java.util.List; -import java.io.Reader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.IOException; - +import org.apache.log4j.Logger; +import org.dive4elements.artifacts.common.ArtifactNamespaceContext; +import org.dive4elements.artifacts.common.utils.XMLUtils; +import org.dive4elements.artifacts.httpclient.http.HttpClient; +import org.dive4elements.artifacts.httpclient.http.HttpClientImpl; +import org.dive4elements.river.client.client.services.CSVExportService; +import org.dive4elements.river.client.shared.exceptions.ServerException; import org.w3c.dom.Document; import org.w3c.dom.Element; -import org.apache.log4j.Logger; - import com.google.gwt.user.server.rpc.RemoteServiceServlet; import au.com.bytecode.opencsv.CSVReader; -import org.dive4elements.artifacts.common.ArtifactNamespaceContext; -import org.dive4elements.artifacts.common.utils.XMLUtils; - -import org.dive4elements.artifacts.httpclient.http.HttpClient; -import org.dive4elements.artifacts.httpclient.http.HttpClientImpl; - -import org.dive4elements.river.client.shared.exceptions.ServerException; -import org.dive4elements.river.client.client.services.CSVExportService; - - /** * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> */ -public class CSVExportServiceImpl -extends RemoteServiceServlet -implements CSVExportService -{ - private static final Logger log = - Logger.getLogger(CSVExportServiceImpl.class); - +public class CSVExportServiceImpl extends RemoteServiceServlet implements CSVExportService { + private static final Logger log = Logger.getLogger(CSVExportServiceImpl.class); - public static final String ERROR_NO_EXPORT_FOUND = - "error_no_export_found"; + public static final String ERROR_NO_EXPORT_FOUND = "error_no_export_found"; - public List<String[]> getCSV( - String locale, - String uuid, - String name) - throws ServerException - { + @Override + public List<String[]> getCSV(final String locale, final String uuid, final String name) throws ServerException { log.info("CSVExportServiceImpl.getCSV"); - String url = getServletContext().getInitParameter("server-url"); - - Document requestDoc = XMLUtils.newDocument(); + final String url = getServletContext().getInitParameter("server-url"); - XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( - requestDoc, - ArtifactNamespaceContext.NAMESPACE_URI, - ArtifactNamespaceContext.NAMESPACE_PREFIX); + final Document requestDoc = XMLUtils.newDocument(); - Element action = ec.create("action"); + final XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(requestDoc, ArtifactNamespaceContext.NAMESPACE_URI, + ArtifactNamespaceContext.NAMESPACE_PREFIX); + + final Element action = ec.create("action"); ec.addAttr(action, "type", "csv", true); ec.addAttr(action, "name", name, true); requestDoc.appendChild(action); - HttpClient client = new HttpClientImpl(url, locale); + final HttpClient client = new HttpClientImpl(url, locale); try { - InputStream in = client.collectionOut(requestDoc, uuid, "export"); - Reader reader = new InputStreamReader (in, "UTF-8"); - CSVReader csvReader = new CSVReader (reader, ';'); + final InputStream in = client.collectionOut(requestDoc, uuid, "export"); + final Reader reader = new InputStreamReader(in, "UTF-8"); + final CSVReader csvReader = new CSVReader(reader, ';'); - List<String[]> lines = new ArrayList<String[]>(); - String[] line = null; + final byte[] BOM = new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }; + final char bomChar = new String(BOM, "UTF-8").charAt(0); + final StringBuilder bomCharCheckBuilder = new StringBuilder().append(bomChar).append("#"); + final List<String[]> lines = new ArrayList<String[]>(); + String[] line = null; while ((line = csvReader.readNext()) != null) { if (line != null) { - if (!line[0].startsWith("#") && line.length > 0) { + if (line.length > 0 && !line[0].startsWith("#") && !line[0].startsWith(bomCharCheckBuilder.toString())) { if (line[0].replace("'", "").length() > 0) { lines.add(line); } @@ -94,7 +79,7 @@ return lines; } - catch (IOException ce) { + catch (final IOException ce) { log.error(ce.getLocalizedMessage()); }