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.module.googlesitemap.app.subapp.sitemapdetail.actions;
35
36 import info.magnolia.module.googlesitemap.bean.SiteMapEntry;
37 import info.magnolia.module.googlesitemap.service.SiteMapService;
38 import info.magnolia.ui.api.action.AbstractAction;
39 import info.magnolia.ui.api.action.ActionExecutionException;
40 import info.magnolia.ui.form.EditorCallback;
41 import info.magnolia.ui.form.EditorValidator;
42
43 import javax.inject.Inject;
44 import javax.jcr.Node;
45 import javax.jcr.RepositoryException;
46
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
49
50 import com.vaadin.data.Item;
51 import com.vaadin.data.util.BeanItem;
52
53
54
55
56
57
58 public class SaveSiteMapEntryDialogAction extends AbstractAction<SaveSiteMapEntryDialogActionDefinition> {
59
60 private static final Logger log = LoggerFactory.getLogger(SaveSiteMapEntryDialogAction.class);
61
62 private final Item item;
63 private final EditorValidator validator;
64 private final EditorCallback callback;
65 private final SiteMapService service;
66
67 @Inject
68 protected SaveSiteMapEntryDialogAction(SaveSiteMapEntryDialogActionDefinition definition, Item item, EditorValidator validator, EditorCallback callback, SiteMapService service) {
69 super(definition);
70 this.item = item;
71 this.validator = validator;
72 this.callback = callback;
73 this.service = service;
74 }
75
76 @Override
77 public void execute() throws ActionExecutionException {
78
79 validator.showValidation(true);
80 if (validator.isValid()) {
81 try {
82 SiteMapEntry entry = ((BeanItem<SiteMapEntry>) item).getBean();
83 Node node = null;
84 if (getDefinition().isPageEntry()) {
85 node = service.updatePageNode(entry);
86 } else {
87 node = service.updateVirtualUriNode(entry);
88 }
89 node.getSession().save();
90 } catch (final RepositoryException e) {
91 throw new ActionExecutionException(e);
92 }
93 callback.onSuccess(getDefinition().getName());
94 } else {
95 log.info("Validation error(s) occurred. No save performed.");
96 }
97 }
98 }