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 com.vaadin.data.Property;
43
44 import info.magnolia.jcr.node2bean.Node2BeanException;
45 import info.magnolia.jcr.node2bean.Node2BeanProcessor;
46 import info.magnolia.module.rssaggregator.RSSAggregator;
47 import info.magnolia.module.rssaggregator.RSSJob;
48 import info.magnolia.objectfactory.Components;
49 import info.magnolia.ui.api.action.ActionExecutionException;
50 import info.magnolia.ui.form.EditorCallback;
51 import info.magnolia.ui.form.EditorValidator;
52 import info.magnolia.ui.form.action.SaveFormAction;
53 import info.magnolia.ui.form.action.SaveFormActionDefinition;
54 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
55
56
57
58
59 public class SaveRSSAction extends SaveFormAction {
60
61 private static final Logger log = LoggerFactory.getLogger(SaveRSSAction.class);
62
63 public SaveRSSAction(SaveFormActionDefinition definition, JcrNodeAdapter item, EditorCallback callback, EditorValidator validator) {
64 super(definition, item, callback, validator);
65 }
66
67 @Override
68 public void execute() throws ActionExecutionException {
69 RSSAggregator module = RSSAggregator.getInstance();
70 String nodeName = item.getNodeName();
71 Property override = item.getItemProperty("overrideDefault");
72 Property automated = item.getItemProperty("automatedImport");
73 RSSJob rssJob = null;
74 if(nodeName != null && module.jobExists(nodeName)){
75
76 rssJob = module.getJobByName(nodeName);
77 module.removeJob(nodeName);
78 }
79
80 validator.showValidation(true);
81 if (validator.isValid()) {
82 try {
83 final Node node = item.applyChanges();
84 setNodeName(node, item);
85 if(override == null){
86 node.setProperty("overrideDefault", "false");
87 }
88 if(automated == null){
89 node.setProperty("automatedImport", "false");
90 }
91 node.getSession().save();
92 Node2BeanProcessor n2b = Components.getComponent(Node2BeanProcessor.class);
93 RSSJob job = (RSSJob) n2b.toBean(node, RSSJob.class);
94 module.mapRSSJob(job.getName());
95 module.registerObservation(job);
96 } catch (final RepositoryException e) {
97 throw new ActionExecutionException(e);
98 } catch (Node2BeanException e) {
99 throw new ActionExecutionException(e);
100 }
101 callback.onSuccess(getDefinition().getName());
102 } else {
103
104 if(nodeName != null && rssJob != null){
105 module.registerJob(nodeName, rssJob);
106 }
107 log.info("Validation error(s) occurred. No save performed.");
108 }
109 }
110 }