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.rssaggregator.action;
35
36 import javax.jcr.Node;
37 import javax.jcr.RepositoryException;
38
39 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory;
41
42 import info.magnolia.jcr.node2bean.Node2BeanException;
43 import info.magnolia.jcr.node2bean.Node2BeanProcessor;
44 import info.magnolia.module.rssaggregator.RSSAggregator;
45 import info.magnolia.module.rssaggregator.RSSJob;
46 import info.magnolia.objectfactory.Components;
47 import info.magnolia.ui.api.action.ActionExecutionException;
48 import info.magnolia.ui.form.EditorCallback;
49 import info.magnolia.ui.form.EditorValidator;
50 import info.magnolia.ui.form.action.SaveFormAction;
51 import info.magnolia.ui.form.action.SaveFormActionDefinition;
52 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
53
54
55
56
57 public class SaveRSSAction extends SaveFormAction {
58
59 private static final Logger log = LoggerFactory.getLogger(SaveRSSAction.class);
60
61 public SaveRSSAction(SaveFormActionDefinition definition, JcrNodeAdapter item, EditorCallback callback, EditorValidator validator) {
62 super(definition, item, callback, validator);
63 }
64
65 @Override
66 public void execute() throws ActionExecutionException {
67
68 validator.showValidation(true);
69 if (validator.isValid()) {
70 try {
71 final Node node = item.applyChanges();
72
73 setNodeName(node, item);
74 node.getSession().save();
75 Node2BeanProcessor n2b = Components.getComponent(Node2BeanProcessor.class);
76 RSSJob job = (RSSJob) n2b.toBean(node, RSSJob.class);
77 RSSAggregator module = RSSAggregator.getInstance();
78 module.mapRSSJob(job.getName());
79 module.registerObservation(job);
80 } catch (final RepositoryException e) {
81 throw new ActionExecutionException(e);
82 } catch (Node2BeanException e) {
83 throw new ActionExecutionException(e);
84 }
85 callback.onSuccess(getDefinition().getName());
86 } else {
87 log.info("Validation error(s) occurred. No save performed.");
88 }
89 }
90
91 }