1 package fr.ifremer.tutti.ui.swing.content.protocol.actions;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import com.google.common.base.Preconditions;
26 import com.google.common.collect.Lists;
27 import fr.ifremer.tutti.persistence.entities.referential.Species;
28 import fr.ifremer.tutti.service.pupitri.PupitriExportService;
29 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI;
30 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler;
31 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel;
32 import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
33 import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport;
34 import org.apache.commons.logging.Log;
35 import org.apache.commons.logging.LogFactory;
36
37 import java.io.File;
38 import java.util.List;
39
40 import static org.nuiton.i18n.I18n.t;
41
42
43
44
45
46
47
48 public class ExportPupitriAction extends LongActionSupport<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> {
49
50
51 private static final Log log =
52 LogFactory.getLog(ExportPupitriAction.class);
53
54 private File file;
55
56 public ExportPupitriAction(EditProtocolUIHandler handler) {
57 super(handler, true);
58 }
59
60 @Override
61 public boolean prepareAction() throws Exception {
62
63 boolean doAction = super.prepareAction();
64
65 if (doAction) {
66
67
68 file = saveFile(
69 getModel().getName() + "-pupitri",
70 "csv",
71 t("tutti.editProtocol.title.choose.speciesExportFile"),
72 t("tutti.editProtocol.action.exportProtocolSpeciesFile")
73 );
74 doAction = file != null;
75 }
76 return doAction;
77 }
78
79 @Override
80 public void releaseAction() {
81 file = null;
82 super.releaseAction();
83 }
84
85 @Override
86 public void doAction() throws Exception {
87 Preconditions.checkNotNull(file);
88 if (log.isInfoEnabled()) {
89 log.info("Will export protocol species to file: " + file);
90 }
91
92 EditProtocolUIModel model = getModel();
93
94
95
96 List<Species> speciesList = Lists.newArrayList();
97 model.getSpeciesRow().stream().filter(AbstractTuttiBeanUIModel::isValid).forEach(row -> {
98 Species species = row.getSpecies();
99 species.setSurveyCode(row.getSpeciesSurveyCode());
100 speciesList.add(species);
101 });
102
103
104 PupitriExportService service = getContext().getPupitriExportService();
105 service.exportSpecies(speciesList, file);
106
107 }
108
109 @Override
110 public void postSuccessAction() {
111 super.postSuccessAction();
112 sendMessage(t("tutti.flash.info.species.exported.from.protocol",
113 file));
114 }
115 }