dimas-b commented on code in PR #1838: URL: https://github.com/apache/polaris/pull/1838#discussion_r2140599925
########## polaris-core/src/main/java/org/apache/polaris/core/persistence/pagination/EntityIdPageToken.java: ########## @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.polaris.core.persistence.pagination; + +import java.util.List; +import org.apache.polaris.core.entity.PolarisBaseEntity; + +public class EntityIdPageToken implements PageToken { + private final boolean hasMore; + private final boolean hasPrevious; + private final long entityId; + + private EntityIdPageToken(boolean hasMore, boolean hasPrevious, long entityId) { + this.hasMore = hasMore; + this.hasPrevious = hasPrevious; + this.entityId = entityId; + } + + public static EntityIdPageToken forPage(List<PolarisBaseEntity> data) { + if (data.isEmpty()) { + return forLastItem(null); + } + + return forLastItem(data.get(data.size() - 1)); + } + + public static EntityIdPageToken forLastItem(PolarisBaseEntity entity) { + if (entity == null) { + return new EntityIdPageToken(false, false, 0); + } + return new EntityIdPageToken(true, true, entity.getId()); + } + + /** + * Extracts an {@link EntityIdPageToken} from a {@link PageRequest} assuming the request is a + * continuation of the API call that previously produced an {@link EntityIdPageToken}. + */ + public static EntityIdPageToken fromPageRequest(PageRequest pageRequest) { + String token = pageRequest.innerPageToken(); + if (token == null) { + return new EntityIdPageToken(false, false, 0); + } else { + return new EntityIdPageToken(false, true, Long.parseLong(token)); + } + } + + public long getId() { + return entityId; + } + + public boolean hasPrevious() { Review Comment: reimplemented, please review again :) ########## polaris-core/src/main/java/org/apache/polaris/core/persistence/pagination/EntityIdPageToken.java: ########## @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.polaris.core.persistence.pagination; + +import java.util.List; +import org.apache.polaris.core.entity.PolarisBaseEntity; + +public class EntityIdPageToken implements PageToken { + private final boolean hasMore; Review Comment: reimplemented, please review again :) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
