Skip to content

Commit d159192

Browse files
committed
added expression replacement for ERA5 configuration
1 parent ee0e01c commit d159192

File tree

9 files changed

+444
-49
lines changed

9 files changed

+444
-49
lines changed

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
* changed database to use relative archive paths and added migration tool
99
* updated SLSTR reader to allow switching geo-coding source between tie-point/pixel
1010
* added database timeout to configuration
11+
* Updated ERA5 post-processing - simplify configuration
1112

1213
### Updates from version 1.5.4 to 1.5.5
1314
* updated to use SNAP version 8.0.9 / S3TBX version 8.0.6

post-processing-tool/src/main/java/com/bc/fiduceo/post/plugin/era5/Era5PostProcessingPlugin.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ private static void parseSatelliteFields(Element rootElement, Configuration conf
6363
}
6464
}
6565

66+
final Element sensorRefElement = satelliteFieldsElement.getChild("sensor-ref");
67+
if (sensorRefElement != null) {
68+
satelliteFieldsConfiguration.setSensorRef(sensorRefElement.getValue());
69+
}
70+
6671
final Element humidityElement = satelliteFieldsElement.getChild("an_ml_q");
6772
if (humidityElement != null) {
6873
satelliteFieldsConfiguration.set_an_q_name(getElementValueTrimmed(humidityElement));
@@ -157,6 +162,11 @@ private static void parseMatchupFields(Element rootElement, Configuration config
157162
if (matchupFieldsElements != null) {
158163
final MatchupFieldsConfiguration matchupFieldsConfiguration = new MatchupFieldsConfiguration();
159164

165+
final Element insituRefElment = matchupFieldsElements.getChild("insitu-ref");
166+
if (insituRefElment != null) {
167+
matchupFieldsConfiguration.setInsituRef(insituRefElment.getValue());
168+
}
169+
160170
final Element windUElement = matchupFieldsElements.getChild("an_sfc_u10");
161171
if (windUElement != null) {
162172
matchupFieldsConfiguration.set_an_u10_name(getElementValueTrimmed(windUElement));
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.bc.fiduceo.post.plugin.era5;
2+
3+
import org.esa.snap.core.util.StringUtils;
4+
5+
class FieldsConfiguration {
6+
7+
protected String expand(String variableName, String key, String replacement) {
8+
if (StringUtils.isNullOrEmpty(replacement)) {
9+
return variableName;
10+
} else {
11+
final int idx = variableName.indexOf(key);
12+
if (idx < 0) {
13+
return variableName;
14+
}
15+
16+
final StringBuilder stringBuilder = new StringBuilder();
17+
if (idx > 0) {
18+
stringBuilder.append(variableName, 0, idx);
19+
}
20+
stringBuilder.append(replacement);
21+
stringBuilder.append(variableName.substring(idx + key.length()));
22+
return stringBuilder.toString();
23+
}
24+
}
25+
}

post-processing-tool/src/main/java/com/bc/fiduceo/post/plugin/era5/MatchupFieldsConfiguration.java

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
import org.esa.snap.core.util.StringUtils;
44

5-
class MatchupFieldsConfiguration {
5+
class MatchupFieldsConfiguration extends FieldsConfiguration {
66

7+
public static final String INSITU_REF = "{insitu-ref}";
78
private String an_u10_name;
89
private String an_v10_name;
910
private String an_siconc_name;
@@ -22,6 +23,7 @@ class MatchupFieldsConfiguration {
2223
private String longitude_variable_name;
2324
private String latitude_variable_name;
2425
private String nwp_time_variable_name;
26+
private String insituRef;
2527

2628
MatchupFieldsConfiguration() {
2729
an_u10_name = "nwp_mu_u10";
@@ -42,82 +44,83 @@ class MatchupFieldsConfiguration {
4244
longitude_variable_name = null;
4345
latitude_variable_name = null;
4446
nwp_time_variable_name = null;
47+
insituRef = null;
4548
}
4649

4750
String get_an_u10_name() {
48-
return an_u10_name;
51+
return expand(an_u10_name);
4952
}
5053

5154
void set_an_u10_name(String an_u10_name) {
5255
this.an_u10_name = an_u10_name;
5356
}
5457

5558
String get_an_v10_name() {
56-
return an_v10_name;
59+
return expand(an_v10_name);
5760
}
5861

5962
void set_an_v10_name(String an_v10_name) {
6063
this.an_v10_name = an_v10_name;
6164
}
6265

6366
String get_an_siconc_name() {
64-
return an_siconc_name;
67+
return expand(an_siconc_name);
6568
}
6669

6770
void set_an_siconc_name(String an_siconc_name) {
6871
this.an_siconc_name = an_siconc_name;
6972
}
7073

7174
String get_an_sst_name() {
72-
return an_sst_name;
75+
return expand(an_sst_name);
7376
}
7477

7578
void set_an_sst_name(String an_sst_name) {
7679
this.an_sst_name = an_sst_name;
7780
}
7881

7982
String get_fc_metss_name() {
80-
return fc_metss_name;
83+
return expand(fc_metss_name);
8184
}
8285

8386
void set_fc_metss_name(String fc_metss_name) {
8487
this.fc_metss_name = fc_metss_name;
8588
}
8689

8790
String get_fc_mntss_name() {
88-
return fc_mntss_name;
91+
return expand(fc_mntss_name);
8992
}
9093

9194
void set_fc_mntss_name(String fc_mntss_name) {
9295
this.fc_mntss_name = fc_mntss_name;
9396
}
9497

9598
String get_fc_mslhf_name() {
96-
return fc_mslhf_name;
99+
return expand(fc_mslhf_name);
97100
}
98101

99102
void set_fc_mslhf_name(String fc_mslhf_name) {
100103
this.fc_mslhf_name = fc_mslhf_name;
101104
}
102105

103106
String get_fc_msnlwrf_name() {
104-
return fc_msnlwrf_name;
107+
return expand(fc_msnlwrf_name);
105108
}
106109

107110
void set_fc_msnlwrf_name(String fc_msnlwrf_name) {
108111
this.fc_msnlwrf_name = fc_msnlwrf_name;
109112
}
110113

111114
String get_fc_msnswrf_name() {
112-
return fc_msnswrf_name;
115+
return expand(fc_msnswrf_name);
113116
}
114117

115118
void set_fc_msnswrf_name(String fc_msnswrf_name) {
116119
this.fc_msnswrf_name = fc_msnswrf_name;
117120
}
118121

119122
String get_fc_msshf_name() {
120-
return fc_msshf_name;
123+
return expand(fc_msshf_name);
121124
}
122125

123126
void set_fc_msshf_name(String fc_msshf_name) {
@@ -149,37 +152,45 @@ void set_time_dim_name(String time_dim_name) {
149152
}
150153

151154
String get_time_variable_name() {
152-
return time_variable_name;
155+
return expand(time_variable_name);
153156
}
154157

155158
void set_time_variable_name(String time_variable_name) {
156159
this.time_variable_name = time_variable_name;
157160
}
158161

159162
String get_longitude_variable_name() {
160-
return longitude_variable_name;
163+
return expand(longitude_variable_name);
161164
}
162165

163166
void set_longitude_variable_name(String longitude_variable_name) {
164167
this.longitude_variable_name = longitude_variable_name;
165168
}
166169

167170
String get_latitude_variable_name() {
168-
return latitude_variable_name;
171+
return expand(latitude_variable_name);
169172
}
170173

171174
void set_latitude_variable_name(String latitude_variable_name) {
172175
this.latitude_variable_name = latitude_variable_name;
173176
}
174177

175178
String get_nwp_time_variable_name() {
176-
return nwp_time_variable_name;
179+
return expand(nwp_time_variable_name);
177180
}
178181

179182
void set_nwp_time_variable_name(String nwp_time_variable_name) {
180183
this.nwp_time_variable_name = nwp_time_variable_name;
181184
}
182185

186+
public String getInsituRef() {
187+
return insituRef;
188+
}
189+
190+
public void setInsituRef(String insituRef) {
191+
this.insituRef = insituRef;
192+
}
193+
183194
boolean verify() {
184195
if (time_steps_past < 0) {
185196
throw new IllegalArgumentException("time steps past not configured");
@@ -204,4 +215,8 @@ boolean verify() {
204215
}
205216
return true;
206217
}
218+
219+
private String expand(String variableName) {
220+
return expand(variableName, INSITU_REF, insituRef);
221+
}
207222
}

0 commit comments

Comments
 (0)