changeset 9554:33ce8eba9806

waterlevel export W/am Pegel / "Bezeichnung" fixes
author gernotbelger
date Mon, 22 Oct 2018 18:26:05 +0200 (2018-10-22)
parents c3ed5dcd5e08
children ef5754ba5573
files artifacts/doc/conf/jasper/templates/waterlevel.jrxml artifacts/doc/conf/jasper/templates/waterlevel_new.jrxml artifacts/src/main/java/org/dive4elements/river/artifacts/model/Calculation4.java artifacts/src/main/java/org/dive4elements/river/exports/FixWaterlevelExporter.java artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java
diffstat 5 files changed, 359 insertions(+), 326 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/doc/conf/jasper/templates/waterlevel.jrxml	Mon Oct 22 18:26:05 2018 +0200
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 4.5.0  -->
+<!-- 2018-10-22T18:12:48 -->
+<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">
+		<paragraph lineSpacing="Single"/>
+	</style>
+	<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:w_at_gauge_header" class="java.lang.String"/>
+	<field name="meta:w_at_gauge_header_2" 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:fix_date" class="java.lang.String"/>
+	<field name="meta:fix_q" class="java.lang.String"/>
+	<field name="meta:fix_w" class="java.lang.String"/>
+	<field name="meta:fix_state" class="java.lang.String"/>
+	<field name="meta:fix_delta_w" 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"/>
+	<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">
+			<line>
+				<reportElement style="htmlStyle" positionType="FixRelativeToBottom" x="0" y="24" width="550" height="1"/>
+			</line>
+			<textField isStretchWithOverflow="true">
+				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="0" y="0" width="60" 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="60" y="0" width="77" height="24"/>
+				<box padding="5"/>
+				<textElement textAlignment="Right" verticalAlignment="Bottom"/>
+				<textFieldExpression><![CDATA[$F{meta:fix_w}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true">
+				<reportElement key="delete" style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="137" y="-1" width="0" height="24"/>
+				<box padding="5"/>
+				<textElement textAlignment="Right" verticalAlignment="Bottom"/>
+				<textFieldExpression><![CDATA[$F{meta:w_at_gauge_header}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true">
+				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="137" y="0" width="70" height="24"/>
+				<box padding="5"/>
+				<textElement textAlignment="Right" verticalAlignment="Bottom"/>
+				<textFieldExpression><![CDATA[$F{meta:fix_q}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true">
+				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="207" y="0" width="83" height="24"/>
+				<box padding="5"/>
+				<textElement textAlignment="Right" verticalAlignment="Bottom"/>
+				<textFieldExpression><![CDATA[$F{meta:w_at_gauge_header_2}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true">
+				<reportElement key="" style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="290" y="0" width="120" height="24"/>
+				<box padding="5"/>
+				<textElement textAlignment="Left" verticalAlignment="Bottom"/>
+				<textFieldExpression><![CDATA[$F{meta:location_header}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true">
+				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="410" y="0" width="140" height="24"/>
+				<box padding="5"/>
+				<textElement textAlignment="Left" verticalAlignment="Bottom"/>
+				<textFieldExpression><![CDATA[$F{meta:gauge_header}]]></textFieldExpression>
+			</textField>
+		</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="60" 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="60" y="0" width="77" 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:1}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
+				<reportElement key="delete" style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="137" y="-1" width="0" 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:2}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
+				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="137" y="0" width="70" 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:3}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
+				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="207" y="0" width="83" 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:4}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
+				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="290" y="0" width="120" 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" verticalAlignment="Top"/>
+				<textFieldExpression><![CDATA[$F{data:5}]]></textFieldExpression>
+			</textField>
+			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
+				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="410" y="0" width="140" 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" verticalAlignment="Top"/>
+				<textFieldExpression><![CDATA[$F{data:6}]]></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" leftPadding="0" bottomPadding="0" rightPadding="0"/>
+				<textFieldExpression><![CDATA["/ " + $V{PAGE_NUMBER}]]></textFieldExpression>
+			</textField>
+		</band>
+	</pageFooter>
+</jasperReport>
--- a/artifacts/doc/conf/jasper/templates/waterlevel_new.jrxml	Mon Oct 22 16:33:10 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 4.5.0  -->
-<!-- 2018-09-17T18:59:50 -->
-<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">
-		<paragraph lineSpacing="Single"/>
-	</style>
-	<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:w_at_gauge_header" class="java.lang.String"/>
-	<field name="meta:w_at_gauge_header_2" 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:fix_date" class="java.lang.String"/>
-	<field name="meta:fix_q" class="java.lang.String"/>
-	<field name="meta:fix_w" class="java.lang.String"/>
-	<field name="meta:fix_state" class="java.lang.String"/>
-	<field name="meta:fix_delta_w" 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"/>
-	<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">
-			<line>
-				<reportElement style="htmlStyle" positionType="FixRelativeToBottom" x="0" y="24" width="550" height="1"/>
-			</line>
-			<textField isStretchWithOverflow="true">
-				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="0" y="0" width="60" 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="60" y="0" width="77" height="24"/>
-				<box padding="5"/>
-				<textElement textAlignment="Right" verticalAlignment="Bottom"/>
-				<textFieldExpression><![CDATA[$F{meta:fix_w}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true">
-				<reportElement key="delete" style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="137" y="-1" width="0" height="24"/>
-				<box padding="5"/>
-				<textElement textAlignment="Right" verticalAlignment="Bottom"/>
-				<textFieldExpression><![CDATA[$F{meta:w_at_gauge_header}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true">
-				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="137" y="0" width="70" height="24"/>
-				<box padding="5"/>
-				<textElement textAlignment="Right" verticalAlignment="Bottom"/>
-				<textFieldExpression><![CDATA[$F{meta:fix_q}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true">
-				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="207" y="0" width="83" height="24"/>
-				<box padding="5"/>
-				<textElement textAlignment="Right" verticalAlignment="Bottom"/>
-				<textFieldExpression><![CDATA[$F{meta:w_at_gauge_header_2}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true">
-				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="290" y="0" width="120" height="24"/>
-				<box padding="5"/>
-				<textElement textAlignment="Left" verticalAlignment="Bottom"/>
-				<textFieldExpression><![CDATA[$F{meta:location_header}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true">
-				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="410" y="0" width="140" height="24"/>
-				<box padding="5"/>
-				<textElement textAlignment="Left" verticalAlignment="Bottom"/>
-				<textFieldExpression><![CDATA[$F{meta:gauge_header}]]></textFieldExpression>
-			</textField>
-		</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="60" 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="60" y="0" width="77" 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:1}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
-				<reportElement key="delete" style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="137" y="-1" width="0" 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:2}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
-				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="137" y="0" width="70" 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:3}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
-				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="207" y="0" width="83" 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:4}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
-				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="290" y="0" width="120" 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" verticalAlignment="Top"/>
-				<textFieldExpression><![CDATA[$F{data:5}]]></textFieldExpression>
-			</textField>
-			<textField isStretchWithOverflow="true" isBlankWhenNull="true">
-				<reportElement style="htmlStyle" positionType="Float" stretchType="RelativeToBandHeight" x="410" y="0" width="140" 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" verticalAlignment="Top"/>
-				<textFieldExpression><![CDATA[$F{data:6}]]></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" leftPadding="0" bottomPadding="0" rightPadding="0"/>
-				<textFieldExpression><![CDATA["/ " + $V{PAGE_NUMBER}]]></textFieldExpression>
-			</textField>
-		</band>
-	</pageFooter>
-</jasperReport>
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/Calculation4.java	Mon Oct 22 16:33:10 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/Calculation4.java	Mon Oct 22 18:26:05 2018 +0200
@@ -236,7 +236,7 @@
                 }
             }
         }
-        final String custom = Resources.format(meta, "common.custom");
+        final String custom = Resources.getMsg(meta, "common.custom");
 
         // Backjump correction
         for (int i = 0; i < results.length; ++i) {
--- a/artifacts/src/main/java/org/dive4elements/river/exports/FixWaterlevelExporter.java	Mon Oct 22 16:33:10 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/FixWaterlevelExporter.java	Mon Oct 22 18:26:05 2018 +0200
@@ -47,17 +47,15 @@
     /** Write an csv-row at gauge location. */
     @Override
     protected void writeRow6(final CSVWriter writer, final double wqkm[], final String wOrQDesc, final D4EArtifact flys, final String gaugeName,
-            final Gauge gauge, final boolean isQ) {
+            final String wAtGauge, final boolean isQ) {
         if (!isQ) {
-            super.writeRow6(writer, wqkm, wOrQDesc, flys, gaugeName, gauge, isQ);
+            super.writeRow6(writer, wqkm, wOrQDesc, flys, gaugeName, wAtGauge, isQ);
         } else {
             final NumberFormat kmf = getKmFormatter();
             final NumberFormat wf = getWFormatter();
             final NumberFormat qf = getQFormatter();
 
-            final String waterlevel = getWaterlevel(wqkm[1], gauge);
-
-            writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), waterlevel, qf.format(RiverUtils.roundQ(wqkm[1])), wOrQDesc,
+            writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), wAtGauge, qf.format(RiverUtils.roundQ(wqkm[1])), wOrQDesc,
                     RiverUtils.getLocationDescription(flys, wqkm[2]), gaugeName });
         }
     }
--- a/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java	Mon Oct 22 16:33:10 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java	Mon Oct 22 18:26:05 2018 +0200
@@ -534,7 +534,7 @@
 
     /** Write an csv-row at gauge location. */
     protected void writeRow6(final CSVWriter writer, final double wqkm[], final String wOrQDesc, final D4EArtifact flys, final String gaugeName,
-            final Gauge gauge, final boolean isQ) {
+            final String wAtGauge, final boolean isQ) {
         final NumberFormat kmf = getKmFormatter();
         final NumberFormat wf = getWFormatter();
         final NumberFormat qf = getQFormatter();
@@ -615,24 +615,18 @@
         if (gauge == null)
             gauge = rangeAccess.getRiver().determineRefGauge(wqkms.getKms(), rangeAccess.isRange());
 
-        final String gaugeName = gauge.getName(); // RANDOMLY CHRASHES HERE, gauge is randomly null (especially on heavy load) - on production system as well
-                                                  // (it seems to)
-                                                  // REMARK "randomly" crashes: see REMARK above
+        final String notinrange = msg(CSV_NOT_IN_GAUGE_RANGE, DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
+        final String gaugeName = gauge != null ? gauge.getName() : notinrange;
 
-        String desc = "";
-        final String notinrange = msg(CSV_NOT_IN_GAUGE_RANGE, DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
+        final double a = gauge != null ? gauge.getRange().getA().doubleValue() : Double.NaN;
+        final double b = gauge != null ? gauge.getRange().getB().doubleValue() : Double.NaN;
 
-        final double a = gauge.getRange().getA().doubleValue();
-        final double b = gauge.getRange().getB().doubleValue();
         final long startTime = System.currentTimeMillis();
 
-        desc = getDesc(wqkms, isQ);
+        String desc = getDesc(wqkms, isQ);
 
-        boolean isFixRealize = false;
         final List<Segment> segments = getSegments(flys);
-        if (segments != null && !segments.isEmpty()) {
-            isFixRealize = true;
-        }
+        final boolean isFixRealize = isFixrealize(segments);
         if (atGauge) { // "At gauge" needs more output.
 
             // Kms tend to be close together so caching the last sector
@@ -644,10 +638,12 @@
 
             for (int i = 0; i < size; ++i) {
                 result = wqkms.get(i, result);
-                final double km = result[2];
+
+                final double station = result[2];
+                final double q = result[1];
 
                 if (segments != null) {
-                    final Segment found = lastSegment != null && lastSegment.inside(km) ? lastSegment : findSegment(km, segments);
+                    final Segment found = lastSegment != null && lastSegment.inside(station) ? lastSegment : findSegment(station, segments);
 
                     if (found != null) {
                         desc = nf.format(found.getValues()[0]);
@@ -656,16 +652,22 @@
                 }
 
                 String gaugeN;
+                final String wAtGauge;
                 if (isFixRealize) {
-                    final Gauge found = lastGauge != null && lastGauge.getRange().contains(km) ? lastGauge : findGauge(km, gauges);
+                    final Gauge found = lastGauge != null && lastGauge.getRange().contains(station) ? lastGauge : findGauge(station, gauges);
 
                     gaugeN = found != null ? found.getName() : notinrange;
                     lastGauge = found;
+
+                    wAtGauge = this.getWaterlevel(q, found); // THIS IS NEW (and makes common super method difficult)
                 } else {
                     // TODO issue1114: Take correct gauge
-                    gaugeN = km >= a && km <= b ? gaugeName : notinrange;
+                    gaugeN = station >= a && station <= b ? gaugeName : notinrange;
+
+                    wAtGauge = "";
                 }
-                writeRow6(writer, result, desc, flys, gaugeN, gauge, isQ);
+
+                writeRow6(writer, result, desc, flys, gaugeN, wAtGauge, isQ);
             }
         } else { // Not at gauge.
             for (int i = 0; i < size; ++i) {
@@ -681,6 +683,14 @@
         }
     }
 
+    private boolean isFixrealize(final List<Segment> segments) {
+        boolean isFixRealize = false;
+        if (segments != null && !segments.isEmpty()) {
+            isFixRealize = true;
+        }
+        return isFixRealize;
+    }
+
     /**
      * Generates the output in WST format.
      */
@@ -782,18 +792,17 @@
 
         final boolean isQ = isQ();
         final MetaAndTableJRDataSource source = new MetaAndTableJRDataSource();
-        final String jasperFile = !isQ ? "/jasper/templates/waterlevel_new.jrxml" : "/jasper/templates/fix_waterlevel.jrxml";
+
+        final boolean isFixationAnalysis = this.master instanceof AbstractFixBunduArtifact;
+        final boolean doWaterlevelAtGaugeOutput = isQ && isFixationAnalysis;
+
+        final String jasperFile = doWaterlevelAtGaugeOutput ? "/jasper/templates/fix_waterlevel.jrxml" : "/jasper/templates/waterlevel.jrxml";
 
         ((D4EArtifact) this.master).getData("calculation.mode");
         if ((this.master instanceof WINFOArtifact)) {
-            addMetaData(source, "calc.surface.curve"); // Wasserspiegellage
-        } else if
-
-        (this.master instanceof AbstractFixBunduArtifact) {
-            addMetaData(source, ((AbstractFixBunduArtifact) this.master).getCalculationModeString());// "calculation.vollmer"); // ausgelagerte
-                                                                                                     // Wasserspiegellage
-            // else
-            // addMetaData(source, "calculation.analysis"); // Fixierungsanalyse
+            addMetaData(source, "calc.surface.curve", isQ); // Wasserspiegellage
+        } else if (this.master instanceof AbstractFixBunduArtifact) {
+            addMetaData(source, ((AbstractFixBunduArtifact) this.master).getCalculationModeString(), isQ);
         }
 
         try {
@@ -876,30 +885,42 @@
         final D4EArtifact flys = (D4EArtifact) this.master;
         final RangeAccess rangeAccess = new RangeAccess(flys);
 
-        final Gauge gauge = rangeAccess.getRiver().determineRefGauge(rangeAccess.getKmRange(), rangeAccess.isRange());
+        final List<Gauge> gauges = RiverUtils.getGauges(flys);
+
+        Gauge gauge = rangeAccess.getRiver().determineRefGauge(rangeAccess.getKmRange(), rangeAccess.isRange());
+        // REMARK gauge may be null when rangeAccess starts outside any gauge range
+        if (gauge == null)
+            gauge = rangeAccess.getRiver().determineRefGauge(wqkms.getKms(), rangeAccess.isRange());
 
         final String notinrange = msg(CSV_NOT_IN_GAUGE_RANGE, DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
         final String gaugeName = gauge != null ? gauge.getName() : notinrange;
-        String desc = "";
 
-        final Double a = gauge != null ? gauge.getRange().getA().doubleValue() : Double.NaN;
-        final Double b = gauge != null ? gauge.getRange().getB().doubleValue() : Double.NaN;
+        final double a = gauge != null ? gauge.getRange().getA().doubleValue() : Double.NaN;
+        final double b = gauge != null ? gauge.getRange().getB().doubleValue() : Double.NaN;
+
         final WaterlevelDescriptionBuilder wldb = new WaterlevelDescriptionBuilder(flys, this.context);
 
-        desc = wldb.getDesc(wqkms);// class getDesc(wqkms, isQ);
+        String desc = wldb.getDesc(wqkms);// class getDesc(wqkms, isQ);
 
         Segment lastSegment = null;
-        final Gauge lastGauge = null;
+
         final List<Segment> segments = getSegments(flys);
 
+        final boolean isFixRealize = isFixrealize(segments);
+
         final NumberFormat nf = Formatter.getFormatter(this.context.getMeta(), 0, 0);
 
+        Gauge lastGauge = null;
+
         for (int i = 0; i < size; ++i) {
             result = wqkms.get(i, result);
-            final double km = result[2];
+
+            final double station = result[2];
+            final double q = result[1];
+            final double w = result[0];
 
             if (segments != null) {
-                final Segment found = lastSegment != null && lastSegment.inside(km) ? lastSegment : findSegment(km, segments);
+                final Segment found = lastSegment != null && lastSegment.inside(station) ? lastSegment : findSegment(station, segments);
 
                 if (found != null) {
                     desc = nf.format(found.getValues()[0]);
@@ -907,23 +928,34 @@
                 lastSegment = found;
             }
 
-            final double q = result[1];
-            final String waterlevel = this.getWaterlevel(q, gauge); // THIS IS NEW (and makes common super method
-                                                                    // difficult)
-            if (atGauge) {
-                list.add(new String[] { kmf.format(result[2]), wf.format(result[0]), waterlevel, qf.format(RiverUtils.roundQ(result[1])), desc,
-                        RiverUtils.getLocationDescription(flys, result[2]), result[2] >= a && result[2] <= b ? gaugeName : notinrange });
+            String gaugeN;
+            final String wAtGauge;
+            if (isFixRealize) {
+                final Gauge found = lastGauge != null && lastGauge.getRange().contains(station) ? lastGauge : findGauge(station, gauges);
+
+                gaugeN = found != null ? found.getName() : notinrange;
+                lastGauge = found;
+
+                wAtGauge = this.getWaterlevel(q, found); // THIS IS NEW (and makes common super method difficult)
             } else {
-                list.add(new String[] { kmf.format(result[2]), wf.format(result[0]), waterlevel, qf.format(RiverUtils.roundQ(result[1])), desc,
-                        RiverUtils.getLocationDescription(flys, result[2]), result[2] >= a && result[2] <= b ? gaugeName : notinrange });
+                // TODO issue1114: Take correct gauge
+                gaugeN = station >= a && station <= b ? gaugeName : notinrange;
+                wAtGauge = "";
             }
 
+            if (atGauge) {
+                list.add(new String[] { kmf.format(station), wf.format(w), wAtGauge, qf.format(RiverUtils.roundQ(q)), desc,
+                        RiverUtils.getLocationDescription(flys, station), gaugeN });
+            } else {
+                list.add(new String[] { kmf.format(station), wf.format(w), wAtGauge, qf.format(RiverUtils.roundQ(q)), desc,
+                        RiverUtils.getLocationDescription(flys, station), gaugeN });
+            }
         }
 
         return list;
     }
 
-    protected final void addMetaData(final MetaAndTableJRDataSource source, final String calculation) {
+    protected final void addMetaData(final MetaAndTableJRDataSource source, final String calculation, final boolean isQ) {
         final D4EArtifact flys = (D4EArtifact) this.master;
         final String user = CalculationUtils.findArtifactUser(this.context, flys);
         final RangeAccess ra = new RangeAccess(flys);
@@ -939,10 +971,15 @@
         contextPdf.addJRMetadata(source, "fix_w", msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { ri.getWstUnit() }));
         contextPdf.addJRMetadata(source, "w_at_gauge_header", msg("fix.export.csv.w_at_gauge"));
         contextPdf.addJRMetadata(source, "fix_q", msg(CSV_Q_HEADER));
+
         contextPdf.addJRMetadata(source, "waterlevel_name_header", msg("common.export.csv.header.mainvalue_label"));
         contextPdf.addJRMetadata(source, "location_header", msg("common.export.csv.header.location"));
 
-        contextPdf.addJRMetadata(source, "w_at_gauge_header_2", msg("export.waterlevel.csv.header.w.desc"));
+        // FIXME: use WaterlevelDescriptionBuilder instead and also remove all this duplicate code.
+        final String waterlevelOrBezeichnung = (isQ ? msg(CSV_Q_DESC_HEADER, DEFAULT_CSV_Q_DESC_HEADER) : msg(CSV_W_DESC_HEADER, DEFAULT_CSV_W_DESC_HEADER));
+        contextPdf.addJRMetadata(source, "w_at_gauge_header_2", waterlevelOrBezeichnung);
+
+        // msg("export.waterlevel.csv.header.w.desc")); (old. delete)
 
         contextPdf.addJRMetadata(source, "location_header", msg("common.export.csv.header.location"));
         contextPdf.addJRMetadata(source, "gauge_header", msg("common.export.csv.header.gauge"));
@@ -1096,6 +1133,4 @@
         }
         return this.gaugeQ_W_Map.get(key);
     }
-
-}
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
+}
\ No newline at end of file

http://dive4elements.wald.intevation.org