1 package fr.ifremer.dali.ui.swing.content.observation.operation.measurement.grouped;
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 fr.ifremer.dali.ui.swing.action.AbstractDaliAction;
27
28
29
30
31 public class DuplicateOperationMeasurementsAction extends AbstractDaliAction<OperationMeasurementsGroupedTableUIModel, OperationMeasurementsGroupedTableUI, OperationMeasurementsGroupedTableUIHandler> {
32
33
34
35
36 private OperationMeasurementsGroupedRowModel row;
37
38
39
40
41
42
43 public DuplicateOperationMeasurementsAction(final OperationMeasurementsGroupedTableUIHandler handler) {
44 super(handler, false);
45 }
46
47
48 @Override
49 public boolean prepareAction() throws Exception {
50 return super.prepareAction() && getModel().getSelectedRows().size() == 1;
51 }
52
53
54 @Override
55 public void doAction() throws Exception {
56
57
58 final OperationMeasurementsGroupedRowModel rowToDuplicate = getModel().getSelectedRows().iterator().next();
59 if (rowToDuplicate != null) {
60
61 row = new OperationMeasurementsGroupedRowModel(false);
62
63 row.setSamplingOperation(rowToDuplicate.getSamplingOperation());
64 row.setTaxonGroup(rowToDuplicate.getTaxonGroup());
65 row.setTaxon(rowToDuplicate.getTaxon());
66 row.setInputTaxonId(rowToDuplicate.getInputTaxonId());
67 row.setInputTaxonName(rowToDuplicate.getInputTaxonName());
68 row.setComment(rowToDuplicate.getComment());
69 row.setIndividualPmfms(rowToDuplicate.getIndividualPmfms());
70
71 row.setAnalyst(rowToDuplicate.getAnalyst());
72
73 row.setIndividualMeasurements(getContext().getObservationService().duplicateMeasurements(rowToDuplicate.getIndividualMeasurements()));
74
75 }
76 }
77
78
79 @Override
80 public void postSuccessAction() {
81 super.postSuccessAction();
82
83
84 getModel().insertRowAfterSelected(row);
85
86 getHandler().saveMeasurementsInSamplingOperation(row);
87
88
89 if (row.getSamplingOperation() != null) {
90 getModel().firePropertyChanged(OperationMeasurementsGroupedTableUIModel.PROPERTY_SAMPLING_OPERATION, null, row.getSamplingOperation());
91 }
92
93 getHandler().recomputeRowsValidState();
94 getModel().setModify(true);
95
96
97 getHandler().setFocusOnCell(row);
98 }
99 }