1 package fr.ifremer.dali.ui.swing.content.manage.program;
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 import fr.ifremer.dali.dto.configuration.programStrategy.ProgramDTO;
27 import fr.ifremer.dali.ui.swing.action.AbstractDaliRemoteSaveAction;
28 import fr.ifremer.dali.ui.swing.content.manage.program.menu.SearchAction;
29 import fr.ifremer.dali.ui.swing.content.manage.program.programs.ProgramsTableRowModel;
30 import fr.ifremer.quadrige3.core.exception.SaveForbiddenException;
31 import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
32 import org.apache.commons.collections4.CollectionUtils;
33
34 import java.util.List;
35
36 import static org.nuiton.i18n.I18n.t;
37
38
39
40
41 public class SaveAction extends AbstractDaliRemoteSaveAction<ProgramsUIModel, ProgramsUI, ProgramsUIHandler> {
42
43 private List<ProgramsTableRowModel> programsToSave;
44
45 private List<ProgramDTO> reloadedPrograms;
46
47
48
49
50
51
52 public SaveAction(final ProgramsUIHandler handler) {
53 super(handler, false);
54 }
55
56
57
58
59 @Override
60 public boolean prepareAction() throws Exception {
61
62 if (!super.prepareAction()) {
63 return false;
64 }
65
66
67 programsToSave = getModel().getProgramsUIModel().getRows();
68
69 return true;
70 }
71
72 @Override
73 protected void doSave() {
74
75 getContext().getProgramStrategyService().savePrograms(getContext().getAuthenticationInfo(), programsToSave);
76
77 }
78
79 @Override
80 protected void reload() {
81
82 reloadedPrograms = getContext().getProgramStrategyService().getWritablePrograms();
83
84 }
85
86 @Override
87 protected void onSaveForbiddenException(SaveForbiddenException exception) {
88
89 if (exception.getType() == SaveForbiddenException.Type.PERMISSION) {
90
91 if (CollectionUtils.isNotEmpty(exception.getObjectIds())) {
92 getContext().getDialogHelper().showErrorDialog(
93 t("dali.action.save.programs.forbidden.topMessage"),
94 ApplicationUIUtil.getHtmlString(exception.getObjectIds()),
95 t("dali.action.save.programs.forbidden.bottomMessage"),
96 t("dali.action.save.errors.title"));
97 } else {
98 getContext().getDialogHelper().showErrorDialog(
99 t("dali.action.save.programs.forbidden.message"),
100 t("dali.action.save.errors.title"));
101 }
102
103 } else if (exception.getType() == SaveForbiddenException.Type.ATTACHED_DATA) {
104
105 if (CollectionUtils.isNotEmpty(exception.getObjectIds())) {
106 getContext().getDialogHelper().showErrorDialog(
107 t("dali.action.save.programs.forbidden.attachedData.topMessage"),
108 ApplicationUIUtil.getHtmlString(exception.getObjectIds()),
109 t("dali.action.save.programs.forbidden.attachedData.bottomMessage"),
110 t("dali.action.save.errors.title"));
111 } else {
112 getContext().getDialogHelper().showErrorDialog(
113 t("dali.action.save.programs.forbidden.attachedData.message"),
114 t("dali.action.save.errors.title"));
115 }
116
117 } else {
118
119
120 throw exception;
121 }
122
123 }
124
125
126
127
128
129 @Override
130 public void postSuccessAction() {
131 super.postSuccessAction();
132
133
134 if (isSaveAborted())
135 return;
136
137
138 getUI().getMenuUI().getProgramMnemonicCombo().setData(reloadedPrograms);
139 getUI().getMenuUI().getProgramCodeCombo().setData(reloadedPrograms);
140
141 getModel().setModify(false);
142
143
144 if (!isFromCheckModelAction()) {
145 getActionEngine().runInternalAction(getUI().getMenuUI().getHandler(), SearchAction.class);
146
147
148 getModel().getProgramsUIModel().fireReselect();
149 }
150
151 }
152
153 @Override
154 protected void releaseAction() {
155 super.releaseAction();
156
157 programsToSave = null;
158 reloadedPrograms = null;
159 }
160
161 }