4343public 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}
0 commit comments