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.protocol.SpeciesProtocol;
28 import fr.ifremer.tutti.service.protocol.ProtocolImportExportService;
29 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel;
30 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI;
31 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler;
32 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel;
33 import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
34 import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport;
35 import org.apache.commons.logging.Log;
36 import org.apache.commons.logging.LogFactory;
37
38 import java.io.File;
39 import java.util.List;
40 import java.util.stream.Collectors;
41
42 import static org.nuiton.i18n.I18n.t;
43
44
45
46
47
48
49
50 public class ExportProtocolBenthosAction extends LongActionSupport<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> {
51
52
53 private static final Log log =
54 LogFactory.getLog(ExportProtocolBenthosAction.class);
55
56 private File file;
57
58 public ExportProtocolBenthosAction(EditProtocolUIHandler handler) {
59 super(handler, true);
60 }
61
62 @Override
63 public boolean prepareAction() throws Exception {
64
65 boolean doAction = super.prepareAction();
66
67 if (doAction) {
68
69
70 file = saveFile(
71 getModel().getName() + "-benthos",
72 "csv",
73 t("tutti.editProtocol.title.choose.benthosExportFile"),
74 t("tutti.editProtocol.action.exportProtocolBenthosFile"),
75 "^.*\\.csv", t("tutti.common.file.csv")
76 );
77 doAction = file != null;
78 }
79 return doAction;
80 }
81
82 @Override
83 public void releaseAction() {
84 file = null;
85 super.releaseAction();
86 }
87
88 @Override
89 public void doAction() throws Exception {
90 Preconditions.checkNotNull(file);
91 if (log.isInfoEnabled()) {
92 log.info("Will export protocol benthos to file: " + file);
93 }
94
95 EditProtocolUIModel model = getModel();
96
97
98
99 List<SpeciesProtocol> protocols = Lists.newArrayList();
100 protocols.addAll(model.getBenthosRow()
101 .stream()
102 .filter(AbstractTuttiBeanUIModel::isValid)
103 .map(EditProtocolSpeciesRowModel::toEntity)
104 .collect(Collectors.toList()));
105
106
107 ProtocolImportExportService service =
108 getContext().getTuttiProtocolImportExportService();
109
110 service.exportProtocolBenthos(file,
111 protocols,
112 model.getAllCaracteristic(),
113 model.getAllReferentSpeciesByTaxonId());
114
115 sendMessage(t("tutti.flash.info.species.exported.from.protocol",
116 file));
117 }
118 }