1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.ui.commons.wizards.any;
20
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.List;
24 import org.apache.commons.collections4.ListUtils;
25 import org.apache.commons.lang3.StringUtils;
26 import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
27 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
28 import org.apache.syncope.common.lib.to.AnyTO;
29 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
30 import org.apache.wicket.extensions.wizard.WizardStep;
31 import org.apache.wicket.markup.html.basic.Label;
32 import org.apache.wicket.model.PropertyModel;
33 import org.apache.wicket.model.util.ListModel;
34
35 public abstract class AbstractAuxClasses extends WizardStep {
36
37 private static final long serialVersionUID = 552437609667518888L;
38
39 public <T extends AnyTO> AbstractAuxClasses(final AnyWrapper<T> modelObject, final List<String> anyTypeClasses) {
40 super();
41 setOutputMarkupId(true);
42
43 List<AnyTypeClassTO> allAnyTypeClasses = listAnyTypecClasses();
44
45 List<String> choices = new ArrayList<>();
46 for (AnyTypeClassTO aux : allAnyTypeClasses) {
47 if (!anyTypeClasses.contains(aux.getKey())) {
48 choices.add(aux.getKey());
49 }
50 }
51 Collections.sort(choices);
52 add(new AjaxPalettePanel.Builder<String>().setAllowOrder(true).build("auxClasses",
53 new PropertyModel<>(modelObject.getInnerObject(), "auxClasses"),
54 new ListModel<>(choices)).hideLabel().setOutputMarkupId(true));
55
56
57
58
59 if (modelObject instanceof UserWrapper
60 && UserWrapper.class.cast(modelObject).getPreviousUserTO() != null
61 && !ListUtils.isEqualList(
62 modelObject.getInnerObject().getAuxClasses(),
63 UserWrapper.class.cast(modelObject).getPreviousUserTO().getAuxClasses())) {
64 add(new LabelInfo("changed", StringUtils.EMPTY));
65 } else {
66 add(new Label("changed", StringUtils.EMPTY));
67 }
68
69 }
70
71 protected abstract List<AnyTypeClassTO> listAnyTypecClasses();
72 }