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.mail.app.field.factory;
35
36 import info.magnolia.jcr.util.NodeUtil;
37 import info.magnolia.jcr.util.SessionUtil;
38 import info.magnolia.module.mail.app.field.definition.MailTemplateSelectFieldDefinition;
39 import info.magnolia.ui.form.field.definition.SelectFieldOptionDefinition;
40 import info.magnolia.ui.form.field.factory.SelectFieldFactory;
41
42 import java.util.ArrayList;
43 import java.util.List;
44
45 import javax.jcr.Node;
46 import javax.jcr.RepositoryException;
47
48 import org.slf4j.Logger;
49 import org.slf4j.LoggerFactory;
50
51 import com.vaadin.data.Item;
52 import com.vaadin.data.Property;
53
54
55
56
57 public class MailTemplateSelectFieldFactory extends SelectFieldFactory<MailTemplateSelectFieldDefinition> {
58
59 private static final Logger log = LoggerFactory.getLogger(MailTemplateSelectFieldFactory.class);
60
61 private static final String MAIL_TEMPLATES_PATH = "/modules/mail/config/templatesConfiguration";
62 private SelectFieldOptionDefinition firstField;
63
64 public MailTemplateSelectFieldFactory(MailTemplateSelectFieldDefinition definition, Item relatedFieldItem) {
65 super(definition, relatedFieldItem);
66 }
67
68 @Override
69 public List<SelectFieldOptionDefinition> getSelectFieldOptionDefinition() {
70 List<SelectFieldOptionDefinition> res = new ArrayList<SelectFieldOptionDefinition>();
71 Node templatesNode = SessionUtil.getNode("config", MAIL_TEMPLATES_PATH);
72 if (templatesNode != null) {
73 try {
74 boolean first = true;
75 Iterable<Node> templates = NodeUtil.getNodes(templatesNode, "mgnl:contentNode");
76 for (Node template : templates) {
77 SelectFieldOptionDefinition option = new SelectFieldOptionDefinition();
78 option.setValue(template.getPath());
79 option.setLabel(template.getName());
80 res.add(option);
81 if (first) {
82 this.firstField = option;
83 first = false;
84 }
85 }
86 } catch (RepositoryException e) {
87 log.error("Unable to load mail templates.", e);
88 }
89 }
90 return res;
91 }
92
93 @Override
94 protected Object createDefaultValue(Property<?> dataSource) {
95 Object selectedValue = super.createDefaultValue(dataSource);
96 if (selectedValue == null) {
97 return firstField.getValue();
98 }
99 return selectedValue;
100 }
101
102 }