Как реализовать нумерацию страниц с помощью Apache Olingo V2? - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно использовать Apache Olingo V2 для реализации API с использованием нумерации страниц. Это означает, что мне нужно предоставить простой URL для набора сущностей, поддерживающих базовые операторы $ top и $ skip, как в примере ниже:

https://services.odata.org/OData/OData.svc/Products?$top=5&$skip=3

Я не используюрасширение процессора аннотаций или расширение процессора JPA, поэтому они не являются вариантом для реализации этой нумерации страниц.

Я проверил документацию Сервер Olingo V2 , но не смог найти пример для реализации нумерации страниц.

1 Ответ

0 голосов
/ 10 октября 2019

Если вы не используете Annotation Processor extension или JPA Processor extension, вы бы внедрили / расширили ODataSingleProcessor. Вы можете извлечь значения $ skip и $ top из URL-адреса из аргумента типа GetEntitySetUriInfo и использовать их для соответствующего извлечения данных.

Ниже приведен пример кода для этого, вы можете захотеть выполнить нулевые проверки и другие. сенсибилизация.

@Override
public ODataResponse readEntitySet(GetEntitySetUriInfo uriInfo, String contentType) throws ODataException {

        int skipValue = uriInfo.getSkip();
        int topValue = uriInfo.getTop();

        URI serviceRoot = getContext().getPathInfo().getServiceRoot();
        ODataEntityProviderPropertiesBuilder propertiesBuilder = EntityProviderWriteProperties
                .serviceRoot(serviceRoot);

        List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();

        // fetch data from the datasource considering the skip and top values 
        // one example could be SELECT * FROM table LIMIT topValue OFFSET skipValue
        // fill in the data variable

        return EntityProvider.writeFeed(contentType, uriInfo.getStartEntitySet(), data, propertiesBuilder.build());

    }
...