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.app.subapps.aggregationconfig;
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.i18nsystem.SimpleTranslator;
43 import info.magnolia.jcr.util.SessionUtil;
44 import info.magnolia.objectfactory.ComponentProvider;
45 import info.magnolia.repository.RepositoryConstants;
46 import info.magnolia.ui.api.app.SubAppContext;
47 import info.magnolia.ui.api.context.UiContext;
48 import info.magnolia.ui.dialog.formdialog.FormBuilder;
49 import info.magnolia.ui.form.definition.FormDefinition;
50 import info.magnolia.ui.vaadin.form.FormViewReduced;
51 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
52 import info.magnolia.ui.vaadin.overlay.MessageStyleTypeEnum;
53
54 import com.google.inject.Inject;
55
56
57
58
59 public class RSSAggregatorSimpleConfigSubAppPresenter implements RSSAggregatorSimpleConfigSubAppView.Listener {
60
61 private RSSAggregatorSimpleConfigSubAppView view;
62 private FormBuilder builder;
63 private ComponentProvider componentProvider;
64 private FormDefinition formDefinition;
65 private JcrNodeAdapter jcrItem;
66 private UiContext context;
67 private SimpleTranslator translator;
68
69 public static final String RSS_CONFIG_PATH = "/modules/rssaggregator/config";
70
71 private static final Logger log = LoggerFactory.getLogger(RSSAggregatorSimpleConfigSubAppPresenter.class);
72
73 @Inject
74 public RSSAggregatorSimpleConfigSubAppPresenter(RSSAggregatorSimpleConfigSubAppView view, FormBuilder builder, ComponentProvider componentProvider, SubAppContext subAppContext, UiContext context, SimpleTranslator translator) {
75 this.view = view;
76 this.builder = builder;
77 this.componentProvider = componentProvider;
78 this.context = context;
79 this.translator = translator;
80 this.jcrItem = new JcrNodeAdapter(getRSSConfigNode());
81 this.formDefinition = ((RSSAggregatorSimpleConfigSubAppDescriptor) subAppContext.getSubAppDescriptor()).getFormDefinitions().get("main");
82 }
83
84 public RSSAggregatorSimpleConfigSubAppView start(){
85 FormViewReduced formView = this.componentProvider.getComponent(FormViewReduced.class);
86 this.builder.buildReducedForm(this.formDefinition, formView, jcrItem, null);
87
88 view.setListener(this);
89 view.setFormViewReduced(formView);
90
91 view.build();
92 return view;
93 }
94
95 private Node getRSSConfigNode() {
96 return SessionUtil.getNode(RepositoryConstants.CONFIG, RSS_CONFIG_PATH);
97 }
98
99 @Override
100 public void save() {
101 view.showValidation(true);
102 if (view.isValid()) {
103 try {
104 final Node node = jcrItem.applyChanges();
105 node.getSession().save();
106 context.openNotification(MessageStyleTypeEnum.INFO, true, translator.translate("mail.app.main.button.save.success"));
107 } catch (RepositoryException e) {
108 log.error(e.getMessage(), e);
109 context.openNotification(MessageStyleTypeEnum.ERROR, true, translator.translate("mail.app.main.button.save.error"));
110 }
111 }
112
113 }
114 }