annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixWQCurveFacet.java @ 9415:9744ce3c3853

Rework of fixanalysis computation and dWt and WQ facets. Got rid of strange remapping and bitshifting code by explicitely saving the column information and using it in the facets. The facets also put the valid station range into their xml-metadata
author gernotbelger
date Thu, 16 Aug 2018 16:27:53 +0200
parents 5e38e2924c07
children 0a5239a1e46e
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
9 package org.dive4elements.river.artifacts.model.fixings;
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3192
diff changeset
10
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
11 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
12 import org.dive4elements.artifacts.CallContext;
3074
6502b17931b9 FixA: W/Q facet code cleanup.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3073
diff changeset
13
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
14 import org.dive4elements.river.artifacts.D4EArtifact;
3035
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
15
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
16 import org.dive4elements.river.artifacts.access.FixAnalysisAccess;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
17
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
18 import org.dive4elements.river.artifacts.math.fitting.Function;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
19 import org.dive4elements.river.artifacts.math.fitting.FunctionFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
20
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
21 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
22 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
23 import org.dive4elements.river.artifacts.model.Parameters;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
24
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
25 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26
3074
6502b17931b9 FixA: W/Q facet code cleanup.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3073
diff changeset
27 import org.apache.log4j.Logger;
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 /**
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 * Facet to show the W|Q values.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 *
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 public class FixWQCurveFacet
4442
26774405c884 Introduce a new FixingsFacet to add save access to the current Km
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4441
diff changeset
35 extends FixingsFacet
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 implements FacetTypes {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7299
diff changeset
38 /** House log. */
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7299
diff changeset
39 private static Logger log = Logger.getLogger(FixWQCurveFacet.class);
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40
4312
7d0dd96210b5 Doc and whitespace cosmetics for ExrremeResult and FixWQCurve.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4308
diff changeset
41
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 /** Trivial Constructor. */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 public FixWQCurveFacet() {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 /**
3269
b2ea89a665bc Fix issues in 'documentation'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3203
diff changeset
48 * @param description Description of the facet.
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 public FixWQCurveFacet(String description) {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 super(0, FIX_WQ_CURVE, description, ComputeType.ADVANCE, null, null);
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53
3192
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3091
diff changeset
54 public FixWQCurveFacet(int index, String description) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
55 super(index, FIX_WQ_CURVE, description,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
56 ComputeType.ADVANCE, null, null);
3192
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3091
diff changeset
57 }
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3091
diff changeset
58
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 /**
4312
7d0dd96210b5 Doc and whitespace cosmetics for ExrremeResult and FixWQCurve.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4308
diff changeset
61 * Returns the data this facet provides at given km, a function.
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 *
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 * @param artifact the owner artifact.
4312
7d0dd96210b5 Doc and whitespace cosmetics for ExrremeResult and FixWQCurve.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4308
diff changeset
64 * @param context the CallContext.
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 *
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 * @return the data.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 @Override
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69 public Object getData(Artifact artifact, CallContext context) {
3074
6502b17931b9 FixA: W/Q facet code cleanup.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3073
diff changeset
70
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7299
diff changeset
71 log.debug("getData");
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
72 if (!(artifact instanceof D4EArtifact)) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7299
diff changeset
73 log.debug("Not an instance of D4EArtifact / FixationArtifact.");
3035
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
74 return null;
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
75 }
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
76
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
77 D4EArtifact flys = (D4EArtifact)artifact;
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
78 FixAnalysisAccess access = new FixAnalysisAccess(flys);
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
79
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
80 CalculationResult res =
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
81 (CalculationResult) flys.compute(context,
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
82 ComputeType.ADVANCE,
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
83 false);
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
84
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
85 FixResult result = (FixResult) res.getData();
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
86 double currentKm = getCurrentKm(context);
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
87
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7299
diff changeset
88 log.debug("getData: km = " + currentKm);
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
89
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
90 String function = access.getFunction();
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
91 Function ff = FunctionFactory.getInstance().getFunction(function);
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
92
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
93 if (ff == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7299
diff changeset
94 log.warn("getData: ff == null");
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
95 return null;
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
96 }
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
97
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
98 Parameters params = result.getParameters();
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
99 String[] paramNames = ff.getParameterNames();
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
100
7299
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 6868
diff changeset
101 double [] coeffs = params.interpolateWithLimit(
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 6868
diff changeset
102 "km", currentKm, paramNames, access.getStep() / 1000 + 1E-3);
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
103
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
104 if (coeffs == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7299
diff changeset
105 log.warn("getData: coeffs not in interpolation limits");
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
106 return null;
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
107 }
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
108
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
109 org.dive4elements.river.artifacts.math.Function mf =
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
110 ff.instantiate(coeffs);
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
111
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
112 double maxQ = FixFacetUtils.getMaxQ(params, currentKm);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7299
diff changeset
113 log.debug("getData: maxQ = " + maxQ);
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
114
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
115 FixFunction fix = new FixFunction(
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
116 ff.getName(),
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
117 ff.getDescription(),
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
118 mf,
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
119 maxQ);
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
120
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
121 return fix;
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
122 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
123
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
124 /**
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
125 * Create a deep copy of this Facet.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
126 * @return a deep copy.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
128 @Override
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
129 public FixWQCurveFacet deepCopy() {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
130 FixWQCurveFacet copy = new FixWQCurveFacet();
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
131 copy.set(this);
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
132 return copy;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
133 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
134 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
135 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org