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.commons.lang3.StringUtils;
24 import org.apache.syncope.client.console.panels.search.AnyObjectSearchPanel;
25 import org.apache.syncope.client.console.panels.search.MapOfListModel;
26 import org.apache.syncope.client.console.panels.search.UserSearchPanel;
27 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
28 import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
29 import org.apache.syncope.common.lib.to.AnyTypeTO;
30 import org.apache.syncope.common.lib.types.AnyTypeKind;
31 import org.apache.wicket.PageReference;
32 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
33 import org.apache.wicket.extensions.wizard.WizardStep;
34 import org.apache.wicket.markup.html.list.ListItem;
35 import org.apache.wicket.markup.html.list.ListView;
36 import org.apache.wicket.markup.html.panel.Panel;
37 import org.apache.wicket.model.LoadableDetachableModel;
38 import org.apache.wicket.model.Model;
39 import org.apache.wicket.model.PropertyModel;
40 import org.apache.wicket.model.ResourceModel;
41 import org.apache.wicket.model.StringResourceModel;
42 import org.apache.wicket.spring.injection.annot.SpringBean;
43
44 public class DynamicMemberships extends WizardStep {
45
46 private static final long serialVersionUID = 855618618337931784L;
47
48 @SpringBean
49 protected AnyTypeRestClient anyTypeRestClient;
50
51 public DynamicMemberships(final GroupWrapper groupWrapper, final PageReference pageRef) {
52 super();
53
54 final LoadableDetachableModel<List<AnyTypeTO>> types = new LoadableDetachableModel<>() {
55
56 private static final long serialVersionUID = 5275935387613157437L;
57
58 @Override
59 protected List<AnyTypeTO> load() {
60 return anyTypeRestClient.listAnyTypes().stream().
61 filter(type -> AnyTypeKind.USER != type.getKind() && AnyTypeKind.GROUP != type.getKind()).
62 collect(Collectors.toList());
63 }
64 };
65
66
67
68
69 add(new Accordion("uDynMembershipCond", List.of(
70 new AbstractTab(new ResourceModel("uDynMembershipCond", "Dynamic USER Membership Conditions")) {
71
72 private static final long serialVersionUID = 1037272333056449378L;
73
74 @Override
75 public Panel getPanel(final String panelId) {
76 return new UserSearchPanel.Builder(new PropertyModel<>(groupWrapper, "uDynClauses"), pageRef).
77 required(true).build(panelId);
78 }
79 }), Model.of(StringUtils.isBlank(groupWrapper.getUDynMembershipCond()) ? -1 : 0)).setOutputMarkupId(true));
80
81
82
83
84
85 add(new ListView<>("aDynMembershipCond", types) {
86
87 private static final long serialVersionUID = 9101744072914090143L;
88
89 @Override
90 protected void populateItem(final ListItem<AnyTypeTO> item) {
91 final String key = item.getModelObject().getKey();
92 item.add(new Accordion("aDynMembershipCond", List.of(
93 new AbstractTab(new StringResourceModel(
94 "aDynMembershipCond", this, new Model<>(item.getModelObject()))) {
95
96 private static final long serialVersionUID = 1037272333056449378L;
97
98 @Override
99 public Panel getPanel(final String panelId) {
100 return new AnyObjectSearchPanel.Builder(
101 key, new MapOfListModel<>(groupWrapper, "aDynClauses", key), pageRef).
102 required(false).build(panelId);
103 }
104 }), Model.of(StringUtils.isBlank(groupWrapper.getADynMembershipConds().get(key)) ? -1 : 0)).
105 setOutputMarkupId(true));
106 }
107 });
108
109 }
110 }