Skip to content

Commit 3ce1be5

Browse files
authored
Merge pull request #285 from zack-rma/feature/level_as_ts_update
CTO-258: Level as Time Series retrieval bug fix
2 parents 48688ed + 62c48f6 commit 3ce1be5

3 files changed

Lines changed: 30 additions & 13 deletions

File tree

cwms-data-api-client/src/main/java/mil/army/usace/hec/cwms/data/api/client/controllers/LocationLevelEndpointInput.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public final class LocationLevelEndpointInput {
4747
static final String INTERVAL_QUERY_PARAMETER = "interval";
4848
static final String UNIT_QUERY_PARAMETER = "unit";
4949
static final String CASCADE_DELETE_QUERY_PARAMETER = "cascade-delete";
50+
static final String TIMEZONE_QUERY_PARAMETER = "timezone";
5051

5152
private LocationLevelEndpointInput() {
5253
throw new AssertionError("factory class");
@@ -56,8 +57,8 @@ public static GetOne getOne(String levelId, String officeId, Instant effectiveDa
5657
return new GetOne(levelId, officeId, effectiveDate);
5758
}
5859

59-
public static GetTimeSeries getAsTimeSeries(String levelId, String officeId, Instant begin, Instant end) {
60-
return new GetTimeSeries(levelId, officeId, begin, end);
60+
public static GetTimeSeries getAsTimeSeries(String levelId, String officeId, Instant begin, Instant end, String unit) {
61+
return new GetTimeSeries(levelId, officeId, begin, end, unit);
6162
}
6263

6364
public static GetAll getAll() {
@@ -73,9 +74,9 @@ public static Delete delete(String levelId) {
7374
}
7475

7576
public static final class GetOne extends EndpointInput {
76-
private String officeId;
77-
private Instant effectiveDate;
78-
private String levelId;
77+
private final String officeId;
78+
private final Instant effectiveDate;
79+
private final String levelId;
7980

8081
private GetOne(String levelId, String officeId, Instant effectiveDate) {
8182
this.officeId = officeId;
@@ -97,31 +98,42 @@ String levelId() {
9798
}
9899

99100
public static final class GetTimeSeries extends EndpointInput {
100-
private String officeId;
101-
private String levelId;
101+
private final String officeId;
102+
private final String levelId;
102103
private final Instant begin;
103104
private final Instant end;
105+
private final String unit;
104106
private String interval;
107+
private String timezone;
105108

106-
private GetTimeSeries(String levelId, String officeId, Instant begin, Instant end) {
109+
private GetTimeSeries(String levelId, String officeId, Instant begin, Instant end, String unit) {
107110
this.officeId = officeId;
108111
this.levelId = levelId;
109112
this.begin = begin;
110113
this.end = end;
114+
this.unit = unit;
111115
}
112116

113117
public GetTimeSeries interval(String interval) {
114118
this.interval = interval;
115119
return this;
116120
}
117121

122+
public GetTimeSeries timezone(String timezone) {
123+
this.timezone = timezone;
124+
return this;
125+
}
126+
118127
@Override
119128
protected HttpRequestBuilder addInputParameters(HttpRequestBuilder httpRequestBuilder) {
120129
return httpRequestBuilder.addQueryParameter(OFFICE_QUERY_PARAMETER, officeId)
121130
.addQueryParameter(LEVEL_ID_QUERY_PARAMETER, levelId)
122131
.addQueryParameter(BEGIN_QUERY_PARAMETER, begin.toString())
123132
.addQueryParameter(END_QUERY_PARAMETER, end.toString())
124133
.addQueryParameter(INTERVAL_QUERY_PARAMETER, interval)
134+
.addQueryParameter(UNIT_QUERY_PARAMETER, unit)
135+
.addQueryParameter(INTERVAL_QUERY_PARAMETER, interval)
136+
.addQueryParameter(TIMEZONE_QUERY_PARAMETER, timezone)
125137
.addQueryHeader(ACCEPT_QUERY_HEADER, ACCEPT_HEADER_V2);
126138
}
127139

cwms-data-api-client/src/test/java/mil/army/usace/hec/cwms/data/api/client/controllers/TestLevelController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,9 @@ void testLevelAsTimeSeries() throws IOException {
178178
LocationLevel locationLevel = RadarObjectMapper.mapJsonToObject(collect, LocationLevel.class);
179179
Instant begin = Instant.parse("2023-06-01T07:00:00Z");
180180
Instant end = Instant.parse("2023-06-11T07:00:00Z");
181-
LocationLevelEndpointInput.GetTimeSeries input = LocationLevelEndpointInput.getAsTimeSeries("level_as_timeseries.Flow.Ave.1Day.Regulating", "SPK", begin, end)
182-
.interval("1Hour");
181+
String unit = locationLevel.getLevelUnitsId();
182+
LocationLevelEndpointInput.GetTimeSeries input = LocationLevelEndpointInput.getAsTimeSeries("level_as_timeseries.Flow.Ave.1Day.Regulating", "SPK", begin, end, unit)
183+
.interval("1Hour").timezone("UTC");
183184
TimeSeries timeSeries = new LevelController().retrieveLevelAsTimeSeries(buildConnectionInfo(), input);
184185
assertEquals(RadarObjectMapper.mapJsonToObject(collect, TimeSeries.class), timeSeries);
185186
}

cwms-data-api-client/src/test/java/mil/army/usace/hec/cwms/data/api/client/controllers/TestLocationLevelEndpointInput.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ void testPost() throws Exception {
103103
}
104104

105105
@Test
106-
void testDelete() throws Exception {
106+
void testDelete() {
107107
LocationLevelEndpointInput.Delete input = LocationLevelEndpointInput.delete("Test")
108108
.officeId("SPK");
109109
MockHttpRequestBuilder mockHttpRequestBuilder = new MockHttpRequestBuilder();
@@ -116,14 +116,18 @@ void testDelete() throws Exception {
116116
void testGetAsTimeSeries() {
117117
Instant begin = Instant.now();
118118
Instant end = begin.plus(10, ChronoUnit.DAYS);
119-
GetTimeSeries input = getAsTimeSeries("Test", "SPK", begin, end)
120-
.interval("1Day");
119+
String unit = "ft";
120+
String timezone = "UTC";
121+
GetTimeSeries input = getAsTimeSeries("Test", "SPK", begin, end, unit)
122+
.interval("1Day").timezone(timezone);
121123
MockHttpRequestBuilder mockHttpRequestBuilder = new MockHttpRequestBuilder();
122124
input.addInputParameters(mockHttpRequestBuilder);
123125
assertEquals(ACCEPT_HEADER_V2, mockHttpRequestBuilder.getQueryHeader(ACCEPT_QUERY_HEADER));
124126
assertEquals("SPK", mockHttpRequestBuilder.getQueryParameter(OFFICE_QUERY_PARAMETER));
125127
assertEquals(begin.toString(), mockHttpRequestBuilder.getQueryParameter(BEGIN_QUERY_PARAMETER));
126128
assertEquals(end.toString(), mockHttpRequestBuilder.getQueryParameter(END_QUERY_PARAMETER));
127129
assertEquals("1Day", mockHttpRequestBuilder.getQueryParameter(INTERVAL_QUERY_PARAMETER));
130+
assertEquals(unit, mockHttpRequestBuilder.getQueryParameter(UNIT_QUERY_PARAMETER));
131+
assertEquals(timezone, mockHttpRequestBuilder.getQueryParameter(TIMEZONE_QUERY_PARAMETER));
128132
}
129133
}

0 commit comments

Comments
 (0)