@Override public HierarchicalDataProvider<T, ?> getDataProvider() { return (HierarchicalDataProvider<T, ?>) super.getDataProvider(); }
if (getDataProvider() == null) { return;
protected DataProvider<T, ?> internalGetDataProvider() { return getDataCommunicator().getDataProvider(); }
/** * Fetches a list of items from the DataProvider. * * @param offset * the starting index of the range * @param limit * the max number of results * @return the list of items in given range * * @since 8.1 */ @SuppressWarnings({ "rawtypes", "unchecked" }) public List<T> fetchItemsWithRange(int offset, int limit) { return (List<T>) getDataProvider().fetch(new Query(offset, limit, backEndSorting, inMemorySorting, filter)) .collect(Collectors.toList()); }
/** * Informs the DataProvider that a data object has been updated. * * @param data * updated data object; not {@code null} */ public void refresh(T data) { Objects.requireNonNull(data, "DataCommunicator can not refresh null object"); Object id = getDataProvider().getId(data); // ActiveDataHandler has always the latest data through KeyMapper. Map<Object, T> activeData = getActiveDataHandler().getActiveData(); if (activeData.containsKey(id)) { // Item is currently available at the client-side if (updatedData.isEmpty()) { markAsDirty(); } updatedData.add(activeData.get(id)); } }
/** * Getter method for finding the size of DataProvider. Can be overridden by * a subclass that uses a specific type of DataProvider and/or query. * * @return the size of data provider with current filter */ @SuppressWarnings({ "unchecked", "rawtypes" }) public int getDataProviderSize() { return getDataProvider().size(new Query(getFilter())); }
private void attachDataProviderListener() { dataProviderUpdateRegistration = getDataProvider() .addDataProviderListener(event -> { if (event instanceof DataRefreshEvent) { T item = ((DataRefreshEvent<T>) event).getItem(); getKeyMapper().refresh(item); generators.forEach(g -> g.refreshData(item)); getUI().access(() -> refresh(item)); } else { reset = true; getUI().access(() -> markAsDirty()); } }); }