You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2020/02/27 12:23:42 UTC
[syncope] branch master updated: [SYNCOPE-1531] CSV export now
takes into account page, size and sort
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new 9197adc [SYNCOPE-1531] CSV export now takes into account page, size and sort
9197adc is described below
commit 9197adc15d0d78e2c01c25e75b5bcfd23404441f
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Thu Feb 27 12:55:10 2020 +0100
[SYNCOPE-1531] CSV export now takes into account page, size and sort
---
.../IdMAnyDirectoryPanelAdditionalActionsProvider.java | 16 +++++++++++++---
.../syncope/client/console/commons/AnyDataProvider.java | 17 +++++++++++++----
.../AnyDirectoryPanelAdditionalActionsProvider.java | 1 +
...dRepoAnyDirectoryPanelAdditionalActionsProvider.java | 1 +
.../client/console/panels/AnyDirectoryPanel.java | 6 +++++-
.../syncope/client/console/rest/BaseRestClient.java | 2 +-
6 files changed, 34 insertions(+), 9 deletions(-)
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyDirectoryPanelAdditionalActionsProvider.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyDirectoryPanelAdditionalActionsProvider.java
index d184720..999575f 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyDirectoryPanelAdditionalActionsProvider.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyDirectoryPanelAdditionalActionsProvider.java
@@ -28,6 +28,7 @@ import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.pages.BasePage;
import org.apache.syncope.client.console.panels.AnyDirectoryPanel;
import org.apache.syncope.client.console.panels.DisplayAttributesModalPanel;
+import org.apache.syncope.client.console.rest.BaseRestClient;
import org.apache.syncope.client.console.wicket.ajax.form.AjaxDownloadBehavior;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wizards.CSVPullWizardBuilder;
@@ -68,6 +69,7 @@ public class IdMAnyDirectoryPanelAdditionalActionsProvider implements AnyDirecto
final String type,
final String realm,
final String fiql,
+ final int rows,
final List<String> pSchemaNames,
final List<String> dSchemaNames,
final PageReference pageRef) {
@@ -134,7 +136,7 @@ public class IdMAnyDirectoryPanelAdditionalActionsProvider implements AnyDirecto
@Override
public void onClick(final AjaxRequestTarget target) {
CSVPushSpec spec = csvPushSpec(type, panel, pSchemaNames, dSchemaNames);
- AnyQuery query = csvAnyQuery(realm, fiql);
+ AnyQuery query = csvAnyQuery(realm, fiql, rows, panel.getDataProvider());
target.add(modal.setContent(new CSVPushWizardBuilder(spec, query, csvDownloadBehavior, pageRef).
setEventSink(csvEventSink).
@@ -195,8 +197,16 @@ public class IdMAnyDirectoryPanelAdditionalActionsProvider implements AnyDirecto
return spec;
}
- protected AnyQuery csvAnyQuery(final String realm, final String fiql) {
- return new AnyQuery.Builder().realm(realm).fiql(fiql).build();
+ protected AnyQuery csvAnyQuery(
+ final String realm,
+ final String fiql,
+ final int rows,
+ final AnyDataProvider<?> dataProvider) {
+
+ return new AnyQuery.Builder().realm(realm).
+ fiql(fiql).page(dataProvider.getCurrentPage() + 1).size(rows).
+ orderBy(BaseRestClient.toOrderBy(dataProvider.getSort())).
+ build();
}
@Override
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
index a1aa807..4c00af2 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
@@ -57,6 +57,8 @@ public class AnyDataProvider<A extends AnyTO> extends DirectoryDataProvider<A> {
protected final PageReference pageRef;
+ protected int currentPage;
+
public AnyDataProvider(
final AbstractAnyRestClient<A> restClient,
final int paginatorRows,
@@ -97,14 +99,17 @@ public class AnyDataProvider<A extends AnyTO> extends DirectoryDataProvider<A> {
List<A> result = new ArrayList<>();
try {
- final int page = (int) first / paginatorRows;
+ currentPage = ((int) first / paginatorRows);
+ if (currentPage < 0) {
+ currentPage = 0;
+ }
if (filtered) {
result = fiql == null
- ? new ArrayList<>()
- : restClient.search(realm, fiql, (page < 0 ? 0 : page) + 1, paginatorRows, getSort(), type);
+ ? List.of()
+ : restClient.search(realm, fiql, currentPage + 1, paginatorRows, getSort(), type);
} else {
- result = restClient.search(realm, null, (page < 0 ? 0 : page) + 1, paginatorRows, getSort(), type);
+ result = restClient.search(realm, null, currentPage + 1, paginatorRows, getSort(), type);
}
} catch (Exception e) {
LOG.error("While searching with FIQL {}", fiql, e);
@@ -148,4 +153,8 @@ public class AnyDataProvider<A extends AnyTO> extends DirectoryDataProvider<A> {
public IModel<A> model(final A object) {
return new CompoundPropertyModel<>(object);
}
+
+ public int getCurrentPage() {
+ return currentPage;
+ }
}
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/AnyDirectoryPanelAdditionalActionsProvider.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/AnyDirectoryPanelAdditionalActionsProvider.java
index cf9e1ab..4414c75 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/AnyDirectoryPanelAdditionalActionsProvider.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/AnyDirectoryPanelAdditionalActionsProvider.java
@@ -33,6 +33,7 @@ public interface AnyDirectoryPanelAdditionalActionsProvider extends Serializable
String type,
String realm,
String fiql,
+ int rows,
List<String> pSchemaNames,
List<String> dSchemaNames,
PageReference pageRef);
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/IdRepoAnyDirectoryPanelAdditionalActionsProvider.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/IdRepoAnyDirectoryPanelAdditionalActionsProvider.java
index 2f0ed85..e88b670 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/IdRepoAnyDirectoryPanelAdditionalActionsProvider.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/IdRepoAnyDirectoryPanelAdditionalActionsProvider.java
@@ -36,6 +36,7 @@ public class IdRepoAnyDirectoryPanelAdditionalActionsProvider implements AnyDire
final String type,
final String realm,
final String fiql,
+ final int rows,
final List<String> pSchemaNames,
final List<String> dSchemaNames,
final PageReference pageRef) {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
index c662fb7..4b61cc8 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
@@ -139,7 +139,7 @@ public abstract class AnyDirectoryPanel<A extends AnyTO, E extends AbstractAnyRe
initResultTable();
SyncopeWebApplication.get().getAnyDirectoryPanelAdditionalActionsProvider().
- add(this, modal, container, type, realm, fiql, pSchemaNames, dSchemaNames, pageRef);
+ add(this, modal, container, type, realm, fiql, rows, pSchemaNames, dSchemaNames, pageRef);
}
@Override
@@ -209,6 +209,10 @@ public abstract class AnyDirectoryPanel<A extends AnyTO, E extends AbstractAnyRe
return new AnyDataProvider<>(restClient, rows, filtered, realm, type, pageRef).setFIQL(this.fiql);
}
+ public AnyDataProvider<A> getDataProvider() {
+ return dataProvider;
+ }
+
public void search(final String fiql, final AjaxRequestTarget target) {
this.fiql = fiql;
dataProvider.setFIQL(fiql);
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
index 838a3ed..8127725 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
@@ -58,7 +58,7 @@ public abstract class BaseRestClient implements RestClient {
SyncopeConsoleSession.get().resetClient(serviceClass);
}
- protected static String toOrderBy(final SortParam<String> sort) {
+ public static String toOrderBy(final SortParam<String> sort) {
OrderByClauseBuilder builder = SyncopeClient.getOrderByClauseBuilder();
String property = sort.getProperty();