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.action;
35
36 import info.magnolia.cms.security.JCRSessionOp;
37 import info.magnolia.commands.CommandsManager;
38 import info.magnolia.context.MgnlContext;
39 import info.magnolia.event.EventBus;
40 import info.magnolia.i18nsystem.SimpleTranslator;
41 import info.magnolia.jcr.util.NodeUtil;
42 import info.magnolia.ui.api.action.ActionExecutionException;
43 import info.magnolia.ui.api.context.UiContext;
44 import info.magnolia.ui.api.event.AdmincentralEventBus;
45 import info.magnolia.ui.framework.action.DeleteAction;
46 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
47 import info.magnolia.ui.vaadin.integration.jcr.JcrItemUtil;
48
49 import java.util.List;
50
51 import javax.inject.Named;
52 import javax.jcr.Item;
53 import javax.jcr.Node;
54 import javax.jcr.RepositoryException;
55 import javax.jcr.Session;
56
57
58
59
60
61
62 public class DeleteEmptyFolderAction extends DeleteAction<DeleteEmptyFolderActionDefinition> {
63
64 public DeleteEmptyFolderAction(DeleteEmptyFolderActionDefinition definition, JcrItemAdapter item, CommandsManager commandsManager, @Named(AdmincentralEventBus.NAME) EventBus eventBus, UiContext uiContext, SimpleTranslator i18n) {
65 super(definition, item, commandsManager, eventBus, uiContext, i18n);
66 }
67
68 public DeleteEmptyFolderAction(DeleteEmptyFolderActionDefinition definition, List<JcrItemAdapter> items, CommandsManager commandsManager, @Named(AdmincentralEventBus.NAME) EventBus eventBus, UiContext uiContext, SimpleTranslator i18n) {
69 super(definition, items, commandsManager, eventBus, uiContext, i18n);
70 }
71
72 @Override
73 public void onPreExecute() throws Exception {
74
75 final JcrItemAdapter item = getCurrentItem();
76
77 if (item != null) {
78 try {
79 final String workspaceName = item.getWorkspace();
80 boolean empty = MgnlContext.doInSystemContext(new JCRSessionOp<Boolean>(workspaceName) {
81
82 @Override
83 public Boolean exec(Session session) throws RepositoryException {
84 Item jcrItem = JcrItemUtil.getJcrItem(item.getItemId());
85 if (jcrItem.isNode() && NodeUtil.getNodes((Node) jcrItem).iterator().hasNext()) {
86 return false;
87 }
88 return true;
89 }
90 });
91
92 if (!empty) {
93 throw new ActionExecutionException(getDefinition().getFolderNotEmptyErrorMessage());
94 }
95
96 } catch (RepositoryException e) {
97 throw new ActionExecutionException(e);
98 }
99 }
100 super.onPreExecute();
101 }
102
103 @Override
104 protected void onError(Exception e) {
105
106 }
107 }