1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.console.wizards.any;
20
21 import java.util.List;
22 import java.util.stream.Collectors;
23 import org.apache.syncope.client.console.rest.ApplicationRestClient;
24 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
25 import org.apache.syncope.common.lib.to.LinkedAccountTO;
26 import org.apache.syncope.common.lib.to.PrivilegeTO;
27 import org.apache.wicket.extensions.wizard.WizardStep;
28 import org.apache.wicket.model.LoadableDetachableModel;
29 import org.apache.wicket.model.PropertyModel;
30 import org.apache.wicket.model.util.ListModel;
31 import org.apache.wicket.spring.injection.annot.SpringBean;
32
33 public class LinkedAccountPrivilegesPanel extends WizardStep {
34
35 private static final long serialVersionUID = 3388483585148725922L;
36
37 @SpringBean
38 protected ApplicationRestClient applicationRestClient;
39
40 public LinkedAccountPrivilegesPanel(final LinkedAccountTO linkedAccountTO) {
41 super();
42 setOutputMarkupId(true);
43
44 LoadableDetachableModel<List<String>> availablePrivilges = new LoadableDetachableModel<>() {
45
46 private static final long serialVersionUID = 5275935387613157437L;
47
48 @Override
49 protected List<String> load() {
50 return applicationRestClient.list().stream().
51 flatMap(app -> app.getPrivileges().stream()).
52 map(PrivilegeTO::getKey).
53 distinct().
54 sorted().
55 collect(Collectors.toList());
56 }
57 };
58 AjaxPalettePanel<String> privilegesPanel = new AjaxPalettePanel.Builder<String>().
59 setAllowOrder(true).
60 setAllowMoveAll(true).
61 build("privileges",
62 new PropertyModel<>(linkedAccountTO, "privileges"),
63 new ListModel<>(availablePrivilges.getObject()));
64 privilegesPanel.hideLabel();
65 privilegesPanel.setOutputMarkupId(true);
66 add(privilegesPanel);
67 }
68 }