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.detail.action;
35
36 import info.magnolia.cms.core.version.VersionManager;
37 import info.magnolia.event.EventBus;
38 import info.magnolia.i18nsystem.SimpleTranslator;
39 import info.magnolia.ui.api.action.AbstractAction;
40 import info.magnolia.ui.api.action.ActionExecutionException;
41 import info.magnolia.ui.api.app.SubAppContext;
42 import info.magnolia.ui.api.event.AdmincentralEventBus;
43 import info.magnolia.ui.api.event.ContentChangedEvent;
44 import info.magnolia.ui.vaadin.integration.jcr.AbstractJcrNodeAdapter;
45 import info.magnolia.ui.vaadin.overlay.MessageStyleTypeEnum;
46
47 import javax.inject.Inject;
48 import javax.inject.Named;
49 import javax.jcr.RepositoryException;
50 import javax.jcr.version.Version;
51 import javax.jcr.version.VersionIterator;
52
53 import org.slf4j.Logger;
54 import org.slf4j.LoggerFactory;
55
56
57
58
59
60
61 @Deprecated
62 public class RestorePreviousVersionAction extends AbstractAction<RestorePreviousVersionActionDefinition> {
63 private final Logger log = LoggerFactory.getLogger(getClass());
64 private final AbstractJcrNodeAdapter nodeItemToEdit;
65 private final VersionManager versionManager;
66 private final SubAppContext subAppContext;
67 private final EventBus eventBus;
68 private final SimpleTranslator i18n;
69
70 @Inject
71 public RestorePreviousVersionAction(RestorePreviousVersionActionDefinition definition, AbstractJcrNodeAdapter nodeItemToEdit,
72 VersionManager versionManager, SubAppContext subAppContext, final @Named(AdmincentralEventBus.NAME) EventBus eventBus, SimpleTranslator i18n) {
73 super(definition);
74 this.nodeItemToEdit = nodeItemToEdit;
75 this.versionManager = versionManager;
76 this.subAppContext = subAppContext;
77 this.eventBus = eventBus;
78 this.i18n = i18n;
79 }
80
81 @Override
82 public void execute() throws ActionExecutionException {
83 try {
84
85 Version version = getPreviousVersion();
86
87 if (version == null) {
88 subAppContext.openNotification(MessageStyleTypeEnum.ERROR, true, i18n.translate("ui-contentapp.actions.restorePreviousVersion.notification.error"));
89 return;
90 }
91
92 versionManager.restore(nodeItemToEdit.getJcrItem(), version, true);
93 eventBus.fireEvent(new ContentChangedEvent(nodeItemToEdit.getItemId()));
94 subAppContext.openNotification(MessageStyleTypeEnum.INFO, true, i18n.translate("ui-contentapp.actions.restorePreviousVersion.notification.success"));
95 } catch (RepositoryException e) {
96 subAppContext.openNotification(MessageStyleTypeEnum.ERROR, true, i18n.translate("ui-contentapp.actions.restorePreviousVersion.notification.error"));
97 throw new ActionExecutionException("Could not execute RestorePreviousVersionAction: ", e);
98 }
99 }
100
101
102
103
104 private Version getPreviousVersion() throws RepositoryException {
105 Version previousVersion = null;
106 VersionIterator versionIterator = versionManager.getAllVersions(nodeItemToEdit.getJcrItem());
107 if (versionIterator == null) {
108 return previousVersion;
109 }
110
111 while (versionIterator.hasNext()) {
112 previousVersion = versionIterator.nextVersion();
113 }
114
115 return previousVersion;
116 }
117
118 }