Skip to content

Commit d74b9dd

Browse files
committed
create variables and attributes
1 parent 9fc9935 commit d74b9dd

File tree

7 files changed

+109
-55
lines changed

7 files changed

+109
-55
lines changed

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

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,51 @@
11
package com.bc.fiduceo.post.plugin.era5;
22

3+
import com.bc.fiduceo.FiduceoConstants;
4+
import ucar.ma2.DataType;
5+
import ucar.nc2.Dimension;
36
import ucar.nc2.NetcdfFile;
47
import ucar.nc2.NetcdfFileWriter;
8+
import ucar.nc2.Variable;
59

6-
import java.util.HashMap;
7-
import java.util.Map;
10+
import java.util.*;
811

912
class MatchupFields {
1013

1114
private Map<String, TemplateVariable> variables;
1215

1316
void prepare(MatchupFieldsConfiguration matchupFieldsConfig, NetcdfFile reader, NetcdfFileWriter writer) {
1417
matchupFieldsConfig.verify();
15-
setDimensions(matchupFieldsConfig, writer, reader);
1618

17-
variables = getVariables(matchupFieldsConfig);
18-
// @todo 1 tb/tb ad variables here 2020-12-04
19+
final List<Dimension> dimensions = getDimensions(matchupFieldsConfig, writer, reader);
1920

21+
variables = getVariables(matchupFieldsConfig);
22+
final Collection<TemplateVariable> values = variables.values();
23+
for (TemplateVariable template : values) {
24+
final Variable variable = writer.addVariable(template.getName(), DataType.FLOAT, dimensions);
25+
VariableUtils.addAttributes(template, variable);
26+
}
2027
}
2128

2229
void compute() {
2330

2431
}
2532

2633
// package access for testing purpose only tb 2020-12-02
27-
void setDimensions(MatchupFieldsConfiguration matchupFieldsConfig, NetcdfFileWriter writer, NetcdfFile reader) {
34+
List<Dimension> getDimensions(MatchupFieldsConfiguration matchupFieldsConfig, NetcdfFileWriter writer, NetcdfFile reader) {
35+
final ArrayList<Dimension> dimensions = new ArrayList<>();
36+
37+
final Dimension matchupDim = reader.findDimension(FiduceoConstants.MATCHUP_COUNT);
38+
dimensions.add(matchupDim);
39+
2840
final int time_steps_past = matchupFieldsConfig.getTime_steps_past();
2941
final int time_steps_future = matchupFieldsConfig.getTime_steps_future();
3042
final int time_dim_length = time_steps_past + time_steps_future + 1;
3143
final String time_dim_name = matchupFieldsConfig.getTime_dim_name();
3244

33-
writer.addDimension(time_dim_name, time_dim_length);
45+
final Dimension timeDimension = writer.addDimension(time_dim_name, time_dim_length);
46+
dimensions.add(timeDimension);
47+
48+
return dimensions;
3449
}
3550

3651
// package access for testing purpose only tb 2020-12-03

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

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ void prepare(SatelliteFieldsConfiguration satFieldsConfig, NetcdfFile reader, Ne
7575
final List<Dimension> dimensions = getDimensions(template);
7676

7777
final Variable variable = writer.addVariable(template.getName(), DataType.FLOAT, dimensions);
78-
addAttributes(template, variable);
78+
VariableUtils.addAttributes(template, variable);
7979
}
8080

8181
addTimeVariable(satFieldsConfig, writer);
@@ -297,17 +297,6 @@ private void addTimeVariable(SatelliteFieldsConfiguration satFieldsConfig, Netcd
297297
variable.addAttribute(new Attribute("_FillValue", NetCDFUtils.getDefaultFillValue(DataType.INT, false)));
298298
}
299299

300-
// package access for testing purpose only tb 2020-12-02
301-
static void addAttributes(TemplateVariable template, Variable variable) {
302-
variable.addAttribute(new Attribute("units", template.getUnits()));
303-
variable.addAttribute(new Attribute("long_name", template.getLongName()));
304-
final String standardName = template.getStandardName();
305-
if (StringUtils.isNotNullAndNotEmpty(standardName)) {
306-
variable.addAttribute(new Attribute("standard_name", standardName));
307-
}
308-
variable.addAttribute(new Attribute("_FillValue", template.getFillValue()));
309-
}
310-
311300
// package access for testing purpose only tb 2020-12-02
312301
List<Dimension> getDimensions(TemplateVariable template) {
313302
List<Dimension> dimensions;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.bc.fiduceo.post.plugin.era5;
2+
3+
import org.esa.snap.core.util.StringUtils;
4+
import ucar.nc2.Attribute;
5+
import ucar.nc2.Variable;
6+
7+
class VariableUtils {
8+
9+
// package access for testing purpose only tb 2020-12-02
10+
static void addAttributes(TemplateVariable template, Variable variable) {
11+
variable.addAttribute(new Attribute("units", template.getUnits()));
12+
variable.addAttribute(new Attribute("long_name", template.getLongName()));
13+
final String standardName = template.getStandardName();
14+
if (StringUtils.isNotNullAndNotEmpty(standardName)) {
15+
variable.addAttribute(new Attribute("standard_name", standardName));
16+
}
17+
variable.addAttribute(new Attribute("_FillValue", template.getFillValue()));
18+
}
19+
}

post-processing-tool/src/test/java/com/bc/fiduceo/post/PostProcessingToolIntegrationTest_Era5.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,18 @@ public void testAddEra5Variables() throws IOException, InvalidRangeException {
119119

120120
// matchup fields
121121
NCTestUtils.assertDimension("the_time", 54, mmd);
122+
123+
variable = NCTestUtils.getVariable("nwp_mu_u10", mmd);
124+
NCTestUtils.assertAttribute(variable, "units", "m s**-1");
125+
126+
variable = NCTestUtils.getVariable("nwp_mu_sst", mmd);
127+
NCTestUtils.assertAttribute(variable, "long_name", "Sea surface temperature");
128+
129+
variable = NCTestUtils.getVariable("nwp_mu_mslhf", mmd);
130+
assertNull(variable.findAttribute("standard_name"));
131+
132+
variable = NCTestUtils.getVariable("nwp_mu_msshf", mmd);
133+
NCTestUtils.assertAttribute(variable, "_FillValue", "9.969209968386869E36");
122134
}
123135
}
124136

post-processing-tool/src/test/java/com/bc/fiduceo/post/plugin/era5/MatchupFieldsTest.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
package com.bc.fiduceo.post.plugin.era5;
22

3+
import com.bc.fiduceo.FiduceoConstants;
34
import org.junit.Before;
45
import org.junit.Test;
56
import ucar.nc2.Dimension;
7+
import ucar.nc2.NetcdfFile;
68
import ucar.nc2.NetcdfFileWriter;
79

10+
import java.util.List;
811
import java.util.Map;
912

10-
import static org.junit.Assert.assertEquals;
11-
import static org.junit.Assert.assertFalse;
12-
import static org.junit.Assert.assertNull;
13-
import static org.mockito.ArgumentMatchers.anyInt;
14-
import static org.mockito.ArgumentMatchers.anyString;
13+
import static org.junit.Assert.*;
1514
import static org.mockito.Mockito.*;
16-
import static org.mockito.Mockito.verifyNoMoreInteractions;
1715

1816
public class MatchupFieldsTest {
1917

@@ -53,14 +51,25 @@ public void testSetGetDimensions() {
5351
config.setTime_dim_name("tihime");
5452
config.setTime_steps_future(12);
5553
config.setTime_steps_past(29);
56-
final int timeDimLenght = 12 + 29 +1;
54+
final int timeDimLenght = 12 + 29 + 1;
5755

5856
final NetcdfFileWriter writer = mock(NetcdfFileWriter.class);
5957
when(writer.addDimension(config.getTime_dim_name(), timeDimLenght)).thenReturn(new Dimension(config.getTime_dim_name(), timeDimLenght));
6058

61-
matchupFields.setDimensions(config, writer, null);
59+
final NetcdfFile ncFile = mock(NetcdfFile.class);
60+
when(ncFile.findDimension(FiduceoConstants.MATCHUP_COUNT)).thenReturn(new Dimension(FiduceoConstants.MATCHUP_COUNT, 11));
61+
62+
final List<Dimension> dimensions = matchupFields.getDimensions(config, writer, ncFile);
63+
assertEquals(2, dimensions.size());
64+
Dimension dimension = dimensions.get(0);
65+
assertEquals(FiduceoConstants.MATCHUP_COUNT, dimension.getShortName());
66+
assertEquals(11, dimension.getLength());
67+
dimension = dimensions.get(1);
68+
assertEquals("tihime", dimension.getShortName());
69+
assertEquals(42, dimension.getLength());
6270

6371
verify(writer, times(1)).addDimension("tihime", timeDimLenght);
64-
verifyNoMoreInteractions(writer);
72+
verify(ncFile, times(1)).findDimension(FiduceoConstants.MATCHUP_COUNT);
73+
verifyNoMoreInteractions(writer, ncFile);
6574
}
6675
}

post-processing-tool/src/test/java/com/bc/fiduceo/post/plugin/era5/SatelliteFieldsTest.java

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -104,33 +104,6 @@ public void testGetNwpOffset() {
104104
assertEquals(1, nwpOffset[2]);
105105
}
106106

107-
@Test
108-
public void testAddAttributes() {
109-
final TemplateVariable templateVariable = new TemplateVariable("theName", "metres", "a_long_name", "a_standard_name", true);
110-
final Variable variable = mock(Variable.class);
111-
112-
SatelliteFields.addAttributes(templateVariable, variable);
113-
114-
verify(variable, times(1)).addAttribute(new Attribute("units", "metres"));
115-
verify(variable, times(1)).addAttribute(new Attribute("long_name", "a_long_name"));
116-
verify(variable, times(1)).addAttribute(new Attribute("standard_name", "a_standard_name"));
117-
verify(variable, times(1)).addAttribute(new Attribute("_FillValue", 9.96921E36f));
118-
verifyNoMoreInteractions(variable);
119-
}
120-
121-
@Test
122-
public void testAddAttributes_missingStandarName() {
123-
final TemplateVariable templateVariable = new TemplateVariable("Carola", "gramm", "Heffalump", null, true);
124-
final Variable variable = mock(Variable.class);
125-
126-
SatelliteFields.addAttributes(templateVariable, variable);
127-
128-
verify(variable, times(1)).addAttribute(new Attribute("units", "gramm"));
129-
verify(variable, times(1)).addAttribute(new Attribute("long_name", "Heffalump"));
130-
verify(variable, times(1)).addAttribute(new Attribute("_FillValue", 9.96921E36f));
131-
verifyNoMoreInteractions(variable);
132-
}
133-
134107
@Test
135108
public void testSetGetDimensions_2D() {
136109
final NetcdfFile ncFile = mock(NetcdfFile.class);
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.bc.fiduceo.post.plugin.era5;
2+
3+
import org.junit.Test;
4+
import ucar.nc2.Attribute;
5+
import ucar.nc2.Variable;
6+
7+
import static org.mockito.Mockito.*;
8+
9+
public class VariableUtilsTest {
10+
11+
@Test
12+
public void testAddAttributes() {
13+
final TemplateVariable templateVariable = new TemplateVariable("theName", "metres", "a_long_name", "a_standard_name", true);
14+
final Variable variable = mock(Variable.class);
15+
16+
VariableUtils.addAttributes(templateVariable, variable);
17+
18+
verify(variable, times(1)).addAttribute(new Attribute("units", "metres"));
19+
verify(variable, times(1)).addAttribute(new Attribute("long_name", "a_long_name"));
20+
verify(variable, times(1)).addAttribute(new Attribute("standard_name", "a_standard_name"));
21+
verify(variable, times(1)).addAttribute(new Attribute("_FillValue", 9.96921E36f));
22+
verifyNoMoreInteractions(variable);
23+
}
24+
25+
@Test
26+
public void testAddAttributes_missingStandarName() {
27+
final TemplateVariable templateVariable = new TemplateVariable("Carola", "gramm", "Heffalump", null, true);
28+
final Variable variable = mock(Variable.class);
29+
30+
VariableUtils.addAttributes(templateVariable, variable);
31+
32+
verify(variable, times(1)).addAttribute(new Attribute("units", "gramm"));
33+
verify(variable, times(1)).addAttribute(new Attribute("long_name", "Heffalump"));
34+
verify(variable, times(1)).addAttribute(new Attribute("_FillValue", 9.96921E36f));
35+
verifyNoMoreInteractions(variable);
36+
}
37+
}

0 commit comments

Comments
 (0)