1 package fr.ifremer.dali.ui.swing.content.extraction;
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 com.google.common.collect.Lists;
27 import fr.ifremer.dali.dto.system.extraction.ExtractionDTO;
28 import fr.ifremer.dali.ui.swing.action.AbstractDaliSaveAction;
29 import fr.ifremer.dali.ui.swing.content.extraction.list.ExtractionsRowModel;
30 import fr.ifremer.quadrige3.ui.swing.model.AbstractBeanUIModel;
31 import org.apache.commons.collections4.CollectionUtils;
32
33 import java.util.Collection;
34 import java.util.List;
35 import java.util.stream.Collectors;
36
37 import static org.nuiton.i18n.I18n.t;
38
39
40
41
42 public class SaveAction extends AbstractDaliSaveAction<ExtractionUIModel, ExtractionUI, ExtractionUIHandler> {
43
44 private Collection<? extends ExtractionDTO> extractionsToSave;
45
46
47
48
49
50
51 public SaveAction(final ExtractionUIHandler handler) {
52 super(handler, false);
53 }
54
55
56 @Override
57 public boolean prepareAction() throws Exception {
58 if (!super.prepareAction()) {
59 return false;
60 }
61
62 if (!getModel().isValid()) {
63
64
65 displayErrorMessage(t("dali.action.save.errors.title"), t("dali.action.save.errors.remove"));
66
67
68 return false;
69 }
70
71
72 extractionsToSave = getUI().getExtractionsTable().getModel().getRows().stream().filter(ExtractionsRowModel::isDirty).collect(Collectors.toList());
73
74 return !CollectionUtils.isEmpty(extractionsToSave);
75
76 }
77
78
79 @Override
80 public void doAction() throws Exception {
81
82
83 getContext().getExtractionService().saveExtractions(extractionsToSave);
84 }
85
86
87 @Override
88 protected List<AbstractBeanUIModel> getModelsToModify() {
89 List<AbstractBeanUIModel> models = Lists.newArrayList();
90 models.add(getModel().getExtractionsTableUIModel());
91 models.add(getModel().getExtractionFiltersUIModel());
92 models.add(getModel().getExtractionConfigUIModel());
93 return models;
94 }
95
96
97 @Override
98 public void postSuccessAction() {
99
100 getHandler().reloadComboBox();
101
102 sendMessage(t("dali.action.save.extractions.success", extractionsToSave.size()));
103
104 super.postSuccessAction();
105 }
106
107
108 @Override
109 protected void releaseAction() {
110 super.releaseAction();
111
112 extractionsToSave = null;
113 }
114 }