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.util.AbstractTuttiBeanUIModel;
30 import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport;
31 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel;
32 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI;
33 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler;
34 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel;
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 ExportProtocolSpeciesAction extends LongActionSupport<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> {
51
52
53 private static final Log log =
54 LogFactory.getLog(ExportProtocolSpeciesAction.class);
55
56 private File file;
57
58 public ExportProtocolSpeciesAction(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() + "-species",
72 "csv",
73 t("tutti.editProtocol.title.choose.speciesExportFile"),
74 t("tutti.editProtocol.action.exportProtocolSpeciesFile"),
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 species to file: " + file);
93 }
94
95 EditProtocolUIModel model = getModel();
96
97
98
99 List<SpeciesProtocol> protocols = Lists.newArrayList();
100 protocols.addAll(model.getSpeciesRow()
101 .stream()
102 .filter(AbstractTuttiBeanUIModel::isValid)
103 .map(EditProtocolSpeciesRowModel::toEntity)
104 .collect(Collectors.toList()));
105
106 ProtocolImportExportService service = getContext().getTuttiProtocolImportExportService();
107
108 service.exportProtocolSpecies(file,
109 protocols,
110 model.getAllCaracteristic(),
111 model.getAllReferentSpeciesByTaxonId());
112
113 sendMessage(t("tutti.flash.info.species.exported.from.protocol", file));
114 }
115 }