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.forum.app.action;
35
36 import info.magnolia.context.MgnlContext;
37 import info.magnolia.module.forum.ForumManager;
38 import info.magnolia.ui.admincentral.dialog.action.SaveDialogAction;
39 import info.magnolia.ui.api.action.ActionExecutionException;
40 import info.magnolia.ui.form.EditorCallback;
41 import info.magnolia.ui.form.EditorValidator;
42 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
43
44 import javax.inject.Inject;
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.v7.data.Item;
52
53
54
55
56
57
58
59 public class SaveDialogNewThreadAction extends SaveDialogAction {
60
61 private static final Logger log = LoggerFactory.getLogger(SaveDialogNewThreadAction.class);
62
63
64 @Inject
65 public SaveDialogNewThreadAction(SaveDialogNewThreadActionDefinition definition, Item item, EditorValidator validator, EditorCallback callback) {
66 super(definition, item, validator, callback);
67 }
68
69
70 @Override
71 public void execute() throws ActionExecutionException {
72
73 validator.showValidation(true);
74 if (validator.isValid()) {
75 try {
76 ForumManager forumManager = ForumManager.Factory.getInstance();
77 final Node forumNode = (Node) ((JcrItemAdapter) item).getJcrItem();
78 String forumNodeId = forumNode.getIdentifier();
79
80 String threadTitle = String.valueOf(item.getItemProperty("threadTitle").getValue());
81 String messageTitle = String.valueOf(item.getItemProperty("messageTitle").getValue());
82 String messageText = String.valueOf(item.getItemProperty("messageText").getValue());
83
84 String author = MgnlContext.getUser().getName();
85
86 forumManager.createThread(forumNodeId, threadTitle, messageTitle, messageText, author, false);
87 } catch (final RepositoryException e) {
88 throw new ActionExecutionException(e);
89 }
90 callback.onSuccess(getDefinition().getName());
91
92
93 } else {
94 log.info("Validation error(s) occurred. No save performed.");
95 }
96 }
97
98
99 }