123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /*
- * Copyright 2000-2016 Vaadin Ltd.
- *
- * Licensed 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 com.vaadin.data.provider;
-
- import java.util.Objects;
- import java.util.stream.Stream;
-
- import com.vaadin.shared.Registration;
-
- /**
- * Wrapper class for modifying, chaining and replacing filters and sorting in a
- * query. Used to create a suitable {@link Query} for the underlying data
- * provider with correct filters and sorting.
- *
- * @author Vaadin Ltd.
- * @since 8.0
- *
- * @param <T>
- * data provider data type
- * @param <F>
- * wrapper query filter type
- * @param <M>
- * underlying data provider filter type
- */
- public abstract class DataProviderWrapper<T, F, M>
- implements DataProvider<T, F> {
-
- /**
- * The actual data provider behind this wrapper.
- */
- protected DataProvider<T, M> dataProvider;
-
- /**
- * Constructs a filtering wrapper for a data provider.
- *
- * @param dataProvider
- * the wrapped data provider, not <code>null</code>
- */
- protected DataProviderWrapper(DataProvider<T, M> dataProvider) {
- this.dataProvider = Objects.requireNonNull(dataProvider,
- "The wrapped data provider cannot be null.");
- }
-
- @Override
- public boolean isInMemory() {
- return dataProvider.isInMemory();
- }
-
- @Override
- public void refreshAll() {
- dataProvider.refreshAll();
- }
-
- @Override
- public void refreshItem(T item) {
- dataProvider.refreshItem(item);
- }
-
- @Override
- public Object getId(T item) {
- return dataProvider.getId(item);
- }
-
- @Override
- public Registration addDataProviderListener(
- DataProviderListener<T> listener) {
- return dataProvider.addDataProviderListener(listener);
- }
-
- @Override
- public int size(Query<T, F> t) {
- return dataProvider.size(new Query<>(t.getOffset(), t.getLimit(),
- t.getSortOrders(), t.getInMemorySorting(), getFilter(t)));
- }
-
- @Override
- public Stream<T> fetch(Query<T, F> t) {
- return dataProvider.fetch(new Query<>(t.getOffset(), t.getLimit(),
- t.getSortOrders(), t.getInMemorySorting(), getFilter(t)));
- }
-
- /**
- * Gets the filter that should be used in the modified Query.
- *
- * @param query
- * the current query
- * @return filter for the modified Query
- */
- protected abstract M getFilter(Query<T, F> query);
- }
|