diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java index 1933183fed7..3137b678845 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java @@ -233,7 +233,7 @@ public void setType(Class type) { clearCache(); } - protected boolean isUseObjectCounting(){ + public boolean isUseObjectCounting(){ return useObjectCounting; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java index 1ec92004ac9..bbce0ad749b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java @@ -138,6 +138,7 @@ public abstract class ResourceContentPanel extends Panel { private ShadowKindType kind; private String intent; private QName objectClass; + private SelectableBeanObjectDataProvider provider; IModel> resourceModel; @@ -224,7 +225,7 @@ protected void newObjectPerformed(AjaxRequestTarget target) { @Override protected BaseSortableDataProvider> initProvider() { - SelectableBeanObjectDataProvider provider = (SelectableBeanObjectDataProvider) super.initProvider(); + provider = (SelectableBeanObjectDataProvider) super.initProvider(); provider.setEmptyListOnNullQuery(true); provider.setSort(null); createSearchOptions(provider); @@ -244,16 +245,20 @@ protected ObjectQuery createContentQuery() { if (customQuery != null && customQuery.getFilter() != null) { filters.add(customQuery.getFilter()); } - + ObjectQuery query = new ObjectQuery(); if (filters.size() == 1) { - return ObjectQuery.createObjectQuery(filters.iterator().next()); + query = ObjectQuery.createObjectQuery(filters.iterator().next()); + setProviderAvailableDataSize(query); + return query; } if (filters.size() == 0) { + setProviderAvailableDataSize(query); return null; } - - return ObjectQuery.createObjectQuery(AndFilter.createAnd(filters)); + query = ObjectQuery.createObjectQuery(AndFilter.createAnd(filters)); + setProviderAvailableDataSize(query); + return query; } @Override @@ -469,7 +474,7 @@ private void createSearchOptions(SelectableBeanObjectDataProvider pr provider.setUseObjectCounting(useObjectCounting); provider.setOptions(opts); if (!useObjectCounting) { - provider.iterator(0, provider.size()); + provider.iterator(0, Integer.MAX_VALUE); provider.setSize(provider.getAvailableData().size()); } } @@ -1091,6 +1096,14 @@ private List getSelectedShadowsList(ShadowType shadow){ return selectedShadow; } + private void setProviderAvailableDataSize(ObjectQuery query){ + if (provider != null && !provider.isUseObjectCounting()) { + provider.setQuery(query); + provider.iterator(0, Integer.MAX_VALUE); + provider.setSize(provider.getAvailableData().size()); + } + + } protected abstract SelectorOptions addAdditionalOptions(); protected abstract boolean isUseObjectCounting();