Skip to content

Commit 4950f40

Browse files
committed
CWMSVUE-634 - Adding in support for pagination to DTOs
1 parent 9fbcb14 commit 4950f40

2 files changed

Lines changed: 35 additions & 13 deletions

File tree

cwms-data-api/src/main/java/cwms/cda/data/dto/TypedTimeSeriesIdentifiersList.java

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,27 +43,48 @@
4343
public class TypedTimeSeriesIdentifiersList extends CwmsDTOPaginated {
4444

4545
private final List<TypedTimeSeriesIdentifiers> typedTimeSeriesIdentifiers;
46-
private final int offset;
4746

48-
private TypedTimeSeriesIdentifiersList(int offset, int pageSize, Integer total, List<TypedTimeSeriesIdentifiers> identifiersList) {
49-
super(Integer.toString(offset), pageSize, total);
47+
private TypedTimeSeriesIdentifiersList(String cursor, int pageSize, Integer total, List<TypedTimeSeriesIdentifiers> identifiersList) {
48+
super(cursor, pageSize, total);
5049
this.typedTimeSeriesIdentifiers = new ArrayList<>(identifiersList);
51-
this.offset = offset;
50+
}
51+
52+
public static String getOffice(String cursor)
53+
{
54+
String[] parts = CwmsDTOPaginated.decodeCursor(cursor);
55+
if (parts.length > 1) {
56+
String[] idAndOffice = CwmsDTOPaginated.decodeCursor(parts[0]);
57+
if (idAndOffice.length > 0) {
58+
return idAndOffice[0];
59+
}
60+
}
61+
return null;
62+
}
63+
64+
public static String getId(String cursor) {
65+
String[] parts = CwmsDTOPaginated.decodeCursor(cursor);
66+
if (parts.length > 1) {
67+
String[] idAndOffice = CwmsDTOPaginated.decodeCursor(parts[0]);
68+
if (idAndOffice.length > 1) {
69+
return idAndOffice[1];
70+
}
71+
}
72+
return null;
5273
}
5374

5475
public List<TypedTimeSeriesIdentifiers> getTypedTimeSeriesIdentifiers() {
5576
return Collections.unmodifiableList(typedTimeSeriesIdentifiers);
5677
}
5778

5879
public static class Builder {
59-
private final int offset;
80+
private final String cursor;
6081
private final int pageSize;
6182
private final Integer total;
6283

6384
private List<TypedTimeSeriesIdentifiers> typedTimeSeriesIdentifiers = new ArrayList<>();
6485

65-
public Builder(int offset, int pageSize, Integer total) {
66-
this.offset = offset;
86+
public Builder(String cursor, int pageSize, Integer total) {
87+
this.cursor = cursor;
6788
this.pageSize = pageSize;
6889
this.total = total;
6990
}
@@ -74,15 +95,17 @@ public Builder withTypedTimeSeriesIdentifiers(Collection<TypedTimeSeriesIdentifi
7495
}
7596

7697
public TypedTimeSeriesIdentifiersList build() {
77-
TypedTimeSeriesIdentifiersList retval = new TypedTimeSeriesIdentifiersList(offset, pageSize, total, typedTimeSeriesIdentifiers);
98+
TypedTimeSeriesIdentifiersList retval = new TypedTimeSeriesIdentifiersList(cursor, pageSize, total, typedTimeSeriesIdentifiers);
7899

79-
if (this.typedTimeSeriesIdentifiers.size() == this.pageSize) {
80-
String cursor = Integer.toString(retval.offset + retval.typedTimeSeriesIdentifiers.size());
81-
retval.nextPage = encodeCursor(cursor, retval.pageSize, retval.total);
100+
if (typedTimeSeriesIdentifiers.size() == pageSize && !typedTimeSeriesIdentifiers.isEmpty()) {
101+
TypedTimeSeriesIdentifiers lastTypedTimeSeriesIdentifiers = typedTimeSeriesIdentifiers.get(typedTimeSeriesIdentifiers.size() - 1);
102+
String cursor = encodeCursor(CwmsDTOPaginated.delimiter, lastTypedTimeSeriesIdentifiers.getLocationId().getOfficeId(),
103+
lastTypedTimeSeriesIdentifiers.getLocationId().getName());
104+
retval.nextPage = encodeCursor(cursor, pageSize, total);
82105
} else {
83106
retval.nextPage = null;
84107
}
85-
return retval;
108+
return retval;
86109
}
87110
}
88111
}

cwms-data-api/src/test/java/cwms/cda/helpers/DTOMatch.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import cwms.cda.data.dto.TimeSeriesExtents;
3030
import cwms.cda.data.dto.TimeSeriesIdentifierDescriptor;
3131
import cwms.cda.data.dto.TypedTimeSeriesIdentifiers;
32-
import cwms.cda.data.dto.TypedTimeSeriesIdentifiersList;
3332
import cwms.cda.data.dto.location.kind.Lock;
3433
import cwms.cda.data.dto.CwmsDTOBase;
3534
import cwms.cda.data.dto.location.kind.GateChange;

0 commit comments

Comments
 (0)