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 fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow;
27 import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
28 import fr.ifremer.tutti.service.protocol.ProtocolCaracteristicsImportExportService;
29 import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolCaracteristicsRowModel;
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.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.Collections;
39 import java.util.List;
40
41 import static org.nuiton.i18n.I18n.t;
42
43
44
45
46
47
48
49 public class ImportProtocolCaracteristicAction extends LongActionSupport<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> {
50
51
52 private static final Log log =
53 LogFactory.getLog(ImportProtocolCaracteristicAction.class);
54
55 private File file;
56 protected TuttiProtocol protocol;
57
58 public ImportProtocolCaracteristicAction(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 = chooseFile(
71 t("tutti.editProtocol.title.choose.caracteristicImportFile"),
72 t("tutti.editProtocol.action.importProtocolCaracteristicFile"),
73 "^.*\\.csv", t("tutti.common.file.csv")
74 );
75
76 doAction = file != null;
77 }
78 return doAction;
79 }
80
81 @Override
82 public void releaseAction() {
83 file = null;
84 super.releaseAction();
85 }
86
87 @Override
88 public void doAction() throws Exception {
89 Preconditions.checkNotNull(file);
90 if (log.isInfoEnabled()) {
91 log.info("Will import protocol caracteristic file: " + file);
92 }
93
94 EditProtocolUIModel model = getModel();
95
96
97 protocol = model.toEntity();
98
99 ProtocolCaracteristicsImportExportService service = getContext().getProtocolCaracteristicsImportExportService();
100
101 service.importProtocolCaracteristic(file, protocol, model.getAllCaracteristic());
102
103 }
104
105 @Override
106 public void postSuccessAction() {
107
108 super.postSuccessAction();
109
110 handler.addDoubleListListeners();
111
112 try {
113
114 getModel().fromEntity(protocol);
115 } finally {
116 handler.removeDoubleListListeners();
117 }
118
119 List<CaracteristicMappingRow> caracteristicMapping = protocol.getCaracteristicMapping();
120 List<EditProtocolCaracteristicsRowModel> caracteristicsRowModels = getHandler().toProtocolCaracteristicRows(caracteristicMapping);
121 getModel().setCaracteristicMappingRows(Collections.emptyList());
122 getModel().setCaracteristicMappingRows(caracteristicsRowModels);
123 getHandler().getCaracteristicMappingTableModel().setRows(caracteristicsRowModels);
124
125 sendMessage(t("tutti.flash.info.caracteristic.imported.in.protocol", file));
126
127 }
128
129 }