1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.security.app.tools;
35
36 import info.magnolia.cms.security.AccessDeniedException;
37 import info.magnolia.ui.api.context.UiContext;
38 import info.magnolia.ui.dialog.formdialog.FormBuilder;
39 import info.magnolia.ui.framework.tools.FormToolActionExecutor;
40 import info.magnolia.ui.framework.tools.FormToolPresenter;
41 import info.magnolia.ui.vaadin.overlay.MessageStyleTypeEnum;
42
43 import java.io.Serializable;
44
45 import javax.inject.Inject;
46
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
49
50 import com.vaadin.data.Container;
51
52
53
54
55 public abstract class AbstractSecurityToolPresenter extends FormToolPresenter {
56
57 private static final Logger log = LoggerFactory.getLogger(AbstractSecurityToolPresenter.class);
58
59 protected static final String VALUE_ID = "value";
60 protected static final String TRANSITIVE_ID = "transitive";
61
62 protected final UiContext uiContext;
63
64 protected Container.Hierarchical container;
65
66 @Inject
67 public AbstractSecurityToolPresenter(SecurityToolView view, FormBuilder formBuilder, FormToolActionExecutor actionExecutor,
68 UiContext uiContext) {
69 super(view, formBuilder, actionExecutor);
70 this.uiContext = uiContext;
71 }
72
73 @Override
74 protected SecurityToolView getView() {
75 return (SecurityToolView) super.getView();
76 }
77
78 public void showResult() {
79 try {
80 Container.Hierarchical container = buildContainer();
81 getView().setDataSource(container);
82 if (container == null) {
83 uiContext.openNotification(MessageStyleTypeEnum.ERROR, true, getErrorMessage());
84 return;
85 }
86 } catch (AccessDeniedException e) {
87 log.error("Access denied:" + e.getMessage(), e);
88 uiContext.openNotification(MessageStyleTypeEnum.ERROR, true, "Access denied:" + e.getMessage());
89 }
90 }
91
92 protected Object addContainerItem(String itemProperty, String itemValue, Object parentId) {
93 Object itemId = container.addItem();
94 container.getItem(itemId).getItemProperty(itemProperty).setValue(itemValue);
95 container.setParent(itemId, parentId);
96 return itemId;
97 }
98
99 protected abstract Container.Hierarchical buildContainer() throws AccessDeniedException;
100
101 protected abstract String getErrorMessage();
102
103
104
105
106 public static class ViewOption implements Serializable {
107 private String name;
108
109 public String getName() {
110 return name;
111 }
112
113 public void setName(String name) {
114 this.name = name;
115 }
116 }
117 }