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.ui.contentapp.browser.action;
35
36 import info.magnolia.commands.CommandsManager;
37 import info.magnolia.event.EventBus;
38 import info.magnolia.i18nsystem.SimpleTranslator;
39 import info.magnolia.ui.api.action.CommandActionDefinition;
40 import info.magnolia.ui.api.context.UiContext;
41 import info.magnolia.ui.api.event.AdmincentralEventBus;
42 import info.magnolia.ui.api.event.ContentChangedEvent;
43 import info.magnolia.ui.framework.action.AbstractCommandAction;
44 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
45
46 import java.util.List;
47 import java.util.Map;
48
49 import javax.inject.Named;
50 import javax.jcr.Item;
51
52 import org.slf4j.Logger;
53 import org.slf4j.LoggerFactory;
54
55
56
57
58
59
60 public class RestoreItemPreviousVersionAction<D extends CommandActionDefinition> extends AbstractCommandAction<RestoreItemPreviousVersionActionDefinition> {
61
62 protected static final Logger log = LoggerFactory.getLogger(RestoreItemPreviousVersionAction.class);
63
64 private final EventBus eventBus;
65 private final SimpleTranslator i18n;
66
67 public RestoreItemPreviousVersionAction(RestoreItemPreviousVersionActionDefinition definition, JcrItemAdapter item, CommandsManager commandsManager, @Named(AdmincentralEventBus.NAME) EventBus eventBus, UiContext uiContext, SimpleTranslator i18n) {
68 super(definition, item, commandsManager, uiContext, i18n);
69 if (!item.isNode()) {
70 throw new IllegalArgumentException("Item must be a node");
71 }
72 this.eventBus = eventBus;
73 this.i18n = i18n;
74 }
75
76 public RestoreItemPreviousVersionAction(RestoreItemPreviousVersionActionDefinition definition, List<JcrItemAdapter> items, CommandsManager commandsManager, @Named(AdmincentralEventBus.NAME) EventBus eventBus, UiContext uiContext, SimpleTranslator i18n) {
77 super(definition, items, commandsManager, uiContext, i18n);
78 if (!items.get(0).isNode()) {
79 throw new IllegalArgumentException("Item must be a node");
80 }
81 this.eventBus = eventBus;
82 this.i18n = i18n;
83 }
84
85 @Override
86 protected String getSuccessMessage() {
87 return i18n.translate(getDefinition().getSuccessMessage(), getItems().size());
88 }
89
90 @Override
91 protected String getFailureMessage() {
92 return getDefinition().getFailureMessage();
93 }
94
95 protected SimpleTranslator getI18n() {
96 return i18n;
97 }
98
99 protected EventBus getEventBus() {
100 return eventBus;
101 }
102
103 @Override
104 protected void onPostExecute() throws Exception {
105 for (JcrItemAdapter item : getItems()) {
106 eventBus.fireEvent(new ContentChangedEvent(item.getItemId()));
107 }
108 }
109
110 @Override
111 protected Map<String, Object> buildParams(Item jcrItem) {
112 Map<String, Object> params = super.buildParams(jcrItem);
113 params.put("parentNodeTypeOnly", getDefinition().isParentNodeTypeOnly());
114 return params;
115 }
116 }