9150
|
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
|
2 * Software engineering by |
|
3 * Björnsen Beratende Ingenieure GmbH |
|
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
|
5 * |
|
6 * This file is Free Software under the GNU AGPL (>=v3) |
|
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
|
8 * documentation coming with Dive4Elements River for details. |
|
9 */ |
|
10 package org.dive4elements.river.artifacts.common; |
|
11 |
|
12 import java.text.DateFormat; |
|
13 import java.text.NumberFormat; |
|
14 import java.util.Date; |
|
15 import java.util.Locale; |
|
16 |
|
17 import org.apache.commons.lang.math.DoubleRange; |
|
18 import org.dive4elements.artifacts.CallContext; |
|
19 import org.dive4elements.river.FLYS; |
|
20 import org.dive4elements.river.artifacts.resources.Resources; |
|
21 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; |
|
22 import org.dive4elements.river.utils.Formatter; |
|
23 |
|
24 /** |
|
25 * @author Domenico Nardi Tironi |
|
26 * |
|
27 */ |
|
28 public final class ExportContextPDF { |
|
29 |
|
30 private NumberFormat kmFormat; |
|
31 |
|
32 /** The CallContext object. */ |
|
33 private final CallContext context; |
|
34 |
|
35 public ExportContextPDF(final CallContext context) { |
|
36 this.context = context; |
|
37 |
|
38 } |
|
39 |
|
40 private String msg(final String key) { |
|
41 return Resources.getMsg(this.context.getMeta(), key, key); |
|
42 } |
|
43 |
|
44 private String msg(final String key, final Object... args) { |
|
45 return Resources.getMsg(this.context.getMeta(), key, key, args); |
|
46 } |
|
47 |
|
48 public void addJRMetadata(final MetaAndTableJRDataSource source, final String key, final IResultType type) { |
|
49 source.addMetaData(key, type.getPdfHeader(this.context.getMeta())); |
|
50 } |
|
51 |
|
52 // *** CUSTOM STUFF that is used multiple times ***/// |
|
53 public void addJRMetaDataDefaults(final MetaAndTableJRDataSource source, final AbstractCalculationResults results) { |
|
54 |
|
55 source.addMetaData("header", msg(I18NStrings.CSV_META_HEADER_RESULT_LABEL)); |
|
56 source.addMetaData("calcMode", results.getCalcModeLabel()); |
|
57 |
|
58 source.addMetaData("version_label", msg(I18NStrings.CSV_META_VERSION_LABEL)); |
|
59 source.addMetaData("version", FLYS.VERSION); |
|
60 |
|
61 source.addMetaData("user_label", msg(I18NStrings.CSV_META_USER_LABEL)); |
|
62 source.addMetaData("user", results.getUser()); |
|
63 |
|
64 final Locale locale = Resources.getLocale(this.context.getMeta()); |
|
65 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); |
|
66 source.addMetaData("date_label", msg(I18NStrings.CSV_META_CREATION_LABEL)); |
|
67 source.addMetaData("date", df.format(new Date())); |
|
68 } |
|
69 |
|
70 public void addJRMetaDataUSINFO(final MetaAndTableJRDataSource source, final AbstractCalculationResults results) { |
|
71 |
|
72 /* general metadata */ |
|
73 addJRMetaDataDefaults(source, results); |
|
74 |
|
75 final RiverInfo river = results.getRiver(); |
|
76 final String wstUnitName = river.getWstUnit(); |
|
77 |
|
78 source.addMetaData("river_label", msg(I18NStrings.CSV_META_RIVER_LABEL)); |
|
79 source.addMetaData("river", river.getName()); |
|
80 source.addMetaData("river_unit", wstUnitName); |
|
81 |
|
82 final DoubleRange calcRange = results.getCalcRange(); |
|
83 final NumberFormat kmFormatter = getKmFormatter(); |
|
84 final String rangeValue = String.format("%s - %s", kmFormatter.format(calcRange.getMinimumDouble()), kmFormatter.format(calcRange.getMaximumDouble())); |
|
85 source.addMetaData("range_label", msg(I18NStrings.CSV_META_RANGE_LABEL)); |
|
86 source.addMetaData("range", rangeValue); |
|
87 |
|
88 /* column headings */ |
|
89 // source.addMetaData("station_header", GeneralResultType.station.getPdfHeader(this.context.getMeta())); |
|
90 |
|
91 // moved to *result |
|
92 /* column headings */ |
|
93 // source.addMetaData("flowdepth_header", SInfoResultType.flowdepth.getPdfHeader(this.context.getMeta())); |
|
94 // source.addMetaData("flowdepth_tkh_header", SInfoResultType.flowdepthtkh.getPdfHeader(this.context.getMeta())); |
|
95 // source.addMetaData("tkh_header", SInfoResultType.tkh.getPdfHeader(this.context.getMeta())); |
|
96 // source.addMetaData("waterlevel_header", SInfoResultType.waterlevel.getPdfHeader(this.context.getMeta())); |
|
97 // source.addMetaData("discharge_header", SInfoResultType.discharge.getPdfHeader(this.context.getMeta())); |
|
98 // source.addMetaData("waterlevel_name_header", SInfoResultType.waterlevelLabel.getPdfHeader(this.context.getMeta())); |
|
99 // source.addMetaData("gauge_header", SInfoResultType.gaugeLabel.getPdfHeader(this.context.getMeta())); |
|
100 // source.addMetaData("bedheight_header", SInfoResultType.meanBedHeight.getPdfHeader(this.context.getMeta())); |
|
101 // source.addMetaData("sounding_name_header", SInfoResultType.soundingLabel.getPdfHeader(this.context.getMeta())); |
|
102 // source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta())); |
|
103 } |
|
104 |
|
105 // copy from AbstractExporter TODO merge with ExportContextCSV |
|
106 protected NumberFormat getKmFormatter() { |
|
107 |
|
108 if (this.kmFormat == null) { |
|
109 this.kmFormat = Formatter.getWaterlevelKM(this.context); |
|
110 } |
|
111 return this.kmFormat; |
|
112 } |
|
113 } |