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.ui.dialog.action;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.ui.api.action.AbstractAction;
38 import info.magnolia.ui.api.action.ActionExecutionException;
39 import info.magnolia.ui.api.app.SubAppEventBus;
40 import info.magnolia.ui.form.EditorCallback;
41 import info.magnolia.ui.form.EditorValidator;
42 import info.magnolia.ui.vaadin.integration.jcr.AbstractJcrNodeAdapter;
43 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
44 import info.magnolia.ui.vaadin.integration.jcr.JcrPropertyAdapter;
45 import info.magnolia.ui.vaadin.integration.jcr.JcrPropertyItemId;
46 import info.magnolia.ui.workbench.event.SelectionChangedEvent;
47
48 import java.util.Arrays;
49 import java.util.HashSet;
50
51 import javax.inject.Inject;
52 import javax.inject.Named;
53 import javax.jcr.Node;
54 import javax.jcr.RepositoryException;
55
56 import org.slf4j.Logger;
57 import org.slf4j.LoggerFactory;
58
59 import com.vaadin.v7.data.Item;
60
61
62
63
64
65
66
67
68
69 @Deprecated
70 public class SaveConfigDialogAction extends AbstractAction<SaveConfigDialogActionDefinition> {
71
72 private static final Logger log = LoggerFactory.getLogger(SaveConfigDialogAction.class);
73
74 protected final Item item;
75
76 protected final EditorValidator validator;
77 protected final EditorCallback callback;
78
79 private final EventBus eventBus;
80
81 @Inject
82 public SaveConfigDialogAction(SaveConfigDialogActionDefinition definition, Item item, EditorValidator validator, EditorCallback callback, final @Named(SubAppEventBus.NAME) EventBus eventBus) {
83 super(definition);
84 this.item = item;
85 this.validator = validator;
86 this.callback = callback;
87 this.eventBus = eventBus;
88 }
89
90 @Override
91 public void execute() throws ActionExecutionException {
92
93 validator.showValidation(true);
94 if (validator.isValid()) {
95
96
97 if (!(item instanceof JcrItemAdapter)) {
98 return;
99 }
100
101
102 if (!((JcrItemAdapter) item).hasChangedProperties()) {
103 return;
104 }
105
106 if (item instanceof AbstractJcrNodeAdapter) {
107
108 AbstractJcrNodeAdapteragnolia/ui/vaadin/integration/jcr/AbstractJcrNodeAdapter.html#AbstractJcrNodeAdapter">AbstractJcrNodeAdapter nodeAdapter = (AbstractJcrNodeAdapter) item;
109 try {
110
111 Node node = nodeAdapter.applyChanges();
112 node.getSession().save();
113 } catch (RepositoryException e) {
114 log.error("Could not save changes to node", e);
115 }
116
117 } else if (item instanceof JcrPropertyAdapter) {
118
119 JcrPropertyAdapteragnolia/ui/vaadin/integration/jcr/JcrPropertyAdapter.html#JcrPropertyAdapter">JcrPropertyAdapter propertyAdapter = (JcrPropertyAdapter) item;
120 try {
121
122 Node parent = propertyAdapter.getJcrItem().getParent();
123
124
125 propertyAdapter.applyChanges();
126 parent.getSession().save();
127
128
129 JcrPropertyItemId newItemId = propertyAdapter.getItemId();
130 eventBus.fireEvent(new SelectionChangedEvent(new HashSet<Object>(Arrays.asList(newItemId))));
131
132 } catch (RepositoryException e) {
133 log.error("Could not save changes to property", e);
134 }
135 }
136 callback.onSuccess(getDefinition().getName());
137 } else {
138 log.debug("Validation error(s) occurred. No save performed.");
139 }
140 }
141
142 }