1 package fr.ifremer.tutti.ui.swing.content.protocol;
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.ImmutableMap;
27 import com.google.common.collect.Lists;
28 import com.google.common.collect.Maps;
29 import com.google.common.collect.Multimap;
30 import com.google.common.collect.Multimaps;
31 import fr.ifremer.tutti.persistence.entities.TuttiEntities;
32 import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
33 import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow;
34 import fr.ifremer.tutti.persistence.entities.protocol.MaturityCaracteristic;
35 import fr.ifremer.tutti.persistence.entities.protocol.MaturityCaracteristics;
36 import fr.ifremer.tutti.persistence.entities.protocol.OperationFieldMappingRow;
37 import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
38 import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
39 import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols;
40 import fr.ifremer.tutti.persistence.entities.protocol.Zone;
41 import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
42 import fr.ifremer.tutti.persistence.entities.referential.Species;
43 import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorRowModel;
44 import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.AvailableStratasTreeModel;
45 import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZonesTreeModel;
46 import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.node.StrataNode;
47 import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.node.SubStrataNode;
48 import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.node.ZoneNode;
49 import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
50 import org.apache.commons.collections4.CollectionUtils;
51 import org.apache.commons.lang3.StringUtils;
52 import org.apache.commons.lang3.mutable.MutableInt;
53 import org.nuiton.util.beans.Binder;
54 import org.nuiton.util.beans.BinderFactory;
55
56 import java.beans.PropertyChangeEvent;
57 import java.beans.PropertyChangeListener;
58 import java.util.ArrayList;
59 import java.util.Collection;
60 import java.util.HashMap;
61 import java.util.LinkedHashMap;
62 import java.util.LinkedList;
63 import java.util.List;
64 import java.util.Map;
65 import java.util.Objects;
66 import java.util.Optional;
67 import java.util.Set;
68 import java.util.stream.Collectors;
69
70
71
72
73
74 public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, EditProtocolUIModel> implements TuttiProtocol {
75
76 private static final long serialVersionUID = 1L;
77
78 public static final String PROPERTY_CARACTERISTIC_MAPPING_ROWS = "caracteristicMappingRows";
79
80 public static final String PROPERTY_OPERATION_FIELD_MAPPING_ROWS = "operationFieldMappingRows";
81
82 public static final String PROPERTY_SPECIES_ROW = "speciesRow";
83
84 public static final String PROPERTY_BENTHOS_ROW = "benthosRow";
85
86 public static final String PROPERTY_REMOVE_SPECIES_ENABLED = "removeSpeciesEnabled";
87
88 public static final String PROPERTY_REMOVE_BENTHOS_ENABLED = "removeBenthosEnabled";
89
90 public static final String PROPERTY_REMOVE_CARACTERISTIC_MAPPING_ENABLED = "removeCaracteristicMappingEnabled";
91
92 public static final String PROPERTY_MOVE_UP_CARACTERISTIC_MAPPING_ENABLED = "moveUpCaracteristicMappingEnabled";
93
94 public static final String PROPERTY_MOVE_DOWN_CARACTERISTIC_MAPPING_ENABLED = "moveDownCaracteristicMappingEnabled";
95
96 public static final String PROPERTY_IMPORTED = "imported";
97
98 public static final String PROPERTY_CLONED = "cloned";
99
100 public static final String PROPERTY_CLEANED = "cleaned";
101
102 public static final String PROPERTY_CPS_ROWS = "cpsRows";
103
104 public static final String PROPERTY_MODIFYING_ZONES = "modifyingZones";
105
106 public static final String PROPERTY_MATURITY_PMFM_ID = "maturityPmfmId";
107
108
109
110
111
112
113 protected final TuttiProtocol editObject = TuttiProtocols.newTuttiProtocol();
114 private final SampleCategoryModel sampleCategoryModel;
115
116
117
118
119
120
121 protected boolean imported;
122
123
124
125
126
127
128 protected boolean cloned;
129
130
131
132
133
134
135 protected boolean cleaned;
136
137
138
139
140
141
142 protected boolean removeSpeciesEnabled;
143
144
145
146
147
148
149 protected boolean removeBenthosEnabled;
150
151 protected boolean removeCaracteristicMappingEnabled;
152
153 protected boolean moveUpCaracteristicMappingEnabled;
154
155 protected boolean moveDownCaracteristicMappingEnabled;
156
157 protected List<Species> allSpecies;
158
159 protected List<Species> allSynonyms;
160
161 protected Multimap<String, Species> allSpeciesByTaxonId;
162
163 protected Map<String, Species> allReferentSpeciesByTaxonId;
164
165 protected List<Caracteristic> caracteristics;
166
167 protected Map<String, Caracteristic> allCaracteristic;
168
169
170
171
172
173
174 protected List<String> maturityPmfmId;
175
176
177
178
179
180
181
182 protected final LinkedHashMap<String, MaturityCaracteristic> maturityCaracteristicsById = new LinkedHashMap<>();
183
184 protected LinkedHashMap<Caracteristic, EditProtocolCaracteristicsRowModel> caracteristicMappingRows =
185 new LinkedHashMap<>();
186
187 protected List<EditProtocolOperationFieldsRowModel> operationFieldMappingRows =
188 new ArrayList<>();
189
190
191
192
193
194
195 protected Map<String, MutableInt> numberOfRowsByColumn = new HashMap<>();
196
197 protected List<EditProtocolSpeciesRowModel> speciesRow;
198
199 protected List<EditProtocolSpeciesRowModel> benthosRow;
200
201 protected List<CalcifiedPiecesSamplingEditorRowModel> cpsRows;
202
203 protected final ZonesTreeModel zonesTreeModel = new ZonesTreeModel();
204
205 protected final AvailableStratasTreeModel availableStratasTreeModel = new AvailableStratasTreeModel();
206
207 protected static Binder<EditProtocolUIModel, TuttiProtocol> toBeanBinder =
208 BinderFactory.newBinder(EditProtocolUIModel.class,
209 TuttiProtocol.class);
210
211 protected static Binder<TuttiProtocol, EditProtocolUIModel> fromBeanBinder =
212 BinderFactory.newBinder(TuttiProtocol.class, EditProtocolUIModel.class);
213
214 private boolean modifyingZones;
215
216
217
218
219 private final CaracteristicsCount lengthStepPmfmUsed = new CaracteristicsCount();
220
221
222
223
224 private final CaracteristicsCount maturityPmfmUsed = new CaracteristicsCount();
225
226 public EditProtocolUIModel(SampleCategoryModel sampleCategoryModel) {
227 super(fromBeanBinder, toBeanBinder);
228 this.sampleCategoryModel = sampleCategoryModel;
229
230
231 addPropertyChangeListener(PROPERTY_MATURITY_CARACTERISTICS, new PropertyChangeListener() {
232
233 @Override
234 public void propertyChange(PropertyChangeEvent evt) {
235 List<MaturityCaracteristic> newValue = (List<MaturityCaracteristic>) evt.getNewValue();
236
237 EditProtocolUIModel.this.setMaturityPmfmId(newValue.stream().map(MaturityCaracteristic::getId).collect(Collectors.toList()));
238
239 LinkedHashMap<String, MaturityCaracteristic> newMap = new LinkedHashMap<>();
240 newValue.forEach(maturityCaracteristic -> newMap.put(maturityCaracteristic.getId(), maturityCaracteristic));
241 EditProtocolUIModel.this.setMaturityCaracteristicsById(newMap);
242 }
243 });
244
245
246 addPropertyChangeListener(PROPERTY_MATURITY_PMFM_ID, new PropertyChangeListener() {
247
248 @Override
249 public void propertyChange(PropertyChangeEvent evt) {
250 List<String> newValue = (List<String>) evt.getNewValue();
251 LinkedHashMap<String, MaturityCaracteristic> newMap = new LinkedHashMap<>();
252 newValue.forEach(maturityPmfmId -> newMap.put(maturityPmfmId,
253 maturityCaracteristicsById.getOrDefault(maturityPmfmId,
254 MaturityCaracteristics.newMaturityCaracteristic(maturityPmfmId))));
255 EditProtocolUIModel.this.setMaturityCaracteristicsById(newMap);
256 }
257 });
258 }
259
260 public CaracteristicsCount getLengthStepPmfmUsed() {
261 return lengthStepPmfmUsed;
262 }
263
264 public CaracteristicsCount getMaturityPmfmUsed() {
265 return maturityPmfmUsed;
266 }
267
268 public EditProtocolSpeciesRowModel newRow() {
269 EditProtocolSpeciesRowModel result = new EditProtocolSpeciesRowModel();
270
271 List<Integer> mandatoryIds = Lists.newArrayList(sampleCategoryModel.getSamplingOrder());
272
273 mandatoryIds.remove(0);
274 result.setMandatorySampleCategoryId(mandatoryIds);
275
276 result.setWeightEnabled(true);
277 result.setValid(true);
278
279 result.addPropertyChangeListener(EditProtocolSpeciesRowModel.PROPERTY_LENGTH_STEP_PMFM,
280 evt -> {
281
282 if (evt.getOldValue() != null) {
283 lengthStepPmfmUsed.removeCaracteristic((Caracteristic) evt.getOldValue());
284 }
285 if (evt.getNewValue() == null) {
286
287 EditProtocolSpeciesRowModel rowModel = (EditProtocolSpeciesRowModel) evt.getSource();
288 rowModel.setRtpMale(null);
289 rowModel.setRtpFemale(null);
290 rowModel.setRtpUndefined(null);
291
292 } else {
293 lengthStepPmfmUsed.addCaracteristic((Caracteristic) evt.getNewValue());
294 }
295
296 });
297
298 result.addPropertyChangeListener(EditProtocolSpeciesRowModel.PROPERTY_MATURITY_PMFM,
299 evt -> {
300
301 if (evt.getOldValue() != null) {
302 maturityPmfmUsed.removeCaracteristic((Caracteristic) evt.getOldValue());
303 }
304 if (evt.getNewValue() != null) {
305 maturityPmfmUsed.addCaracteristic((Caracteristic) evt.getNewValue());
306 }
307 });
308
309 return result;
310 }
311
312 @Override
313 protected TuttiProtocol newEntity() {
314 return TuttiProtocols.newTuttiProtocol();
315 }
316
317 protected List<Zone> incomingZones = new LinkedList<>();
318
319 @Override
320 public void fromEntity(TuttiProtocol entity) {
321 fromBeanBinder.copyExcluding(entity, this, PROPERTY_ZONE);
322
323
324 incomingZones.clear();
325 if (!entity.isZoneEmpty()) {
326 incomingZones.addAll(entity.getZone());
327 }
328 }
329
330 public List<Zone> getIncomingZones() {
331 return incomingZones;
332 }
333
334 @Override
335 public TuttiProtocol toEntity() {
336 TuttiProtocol result = TuttiProtocols.newTuttiProtocol();
337 toBeanBinder.copyExcluding(this, result, PROPERTY_ZONE, PROPERTY_MATURITY_CARACTERISTICS);
338
339
340 Set<Zone> zones = zonesTreeModel.getZones();
341 result.setZone(zones);
342
343 Collection<EditProtocolCaracteristicsRowModel> protocolCaracteristicMappingRows = getCaracteristicMappingRows();
344 List<CaracteristicMappingRow> caracteristicMappingRows = new ArrayList<>();
345 for (EditProtocolCaracteristicsRowModel row : protocolCaracteristicMappingRows) {
346 if (row.isValid()) {
347 caracteristicMappingRows.add(row.toEntity());
348 }
349 }
350 result.setCaracteristicMapping(caracteristicMappingRows);
351
352 List<EditProtocolOperationFieldsRowModel> protocolOperationFieldMappingRows = getOperationFieldMappingRows();
353 List<OperationFieldMappingRow> operationFieldMappingRows = new ArrayList<>();
354 for (EditProtocolOperationFieldsRowModel row : protocolOperationFieldMappingRows) {
355 if (StringUtils.isNotBlank(row.getField()) && StringUtils.isNotBlank(row.getImportColumn())
356 && row.isValid()) {
357 operationFieldMappingRows.add(row.toEntity());
358 }
359 }
360 result.setOperationFieldMapping(operationFieldMappingRows);
361
362
363 Multimap<EditProtocolSpeciesRowModel, CalcifiedPiecesSamplingEditorRowModel> cpsRowsBySpecies =
364 Multimaps.index(getCpsRows(), CalcifiedPiecesSamplingEditorRowModel::getProtocolSpecies);
365
366
367 List<SpeciesProtocol> speciesProtocols = Lists.newArrayList();
368
369 for (EditProtocolSpeciesRowModel row : getSpeciesRow()) {
370 if (row.isValid()) {
371 SpeciesProtocol protocol = row.toEntity();
372 speciesProtocols.add(protocol);
373
374 Collection<CalcifiedPiecesSamplingEditorRowModel> cpsRows = cpsRowsBySpecies.get(row);
375 protocol.setCalcifiedPiecesSamplingDefinition(cpsRows.stream()
376 .map(CalcifiedPiecesSamplingEditorRowModel::toEntity)
377 .collect(Collectors.toList()));
378 }
379 }
380 result.setSpecies(speciesProtocols);
381
382 List<SpeciesProtocol> benthosProtocols = Lists.newArrayList();
383
384 for (EditProtocolSpeciesRowModel row : getBenthosRow()) {
385 if (row.isValid()) {
386 SpeciesProtocol protocol = row.toEntity();
387 benthosProtocols.add(protocol);
388
389 Collection<CalcifiedPiecesSamplingEditorRowModel> cpsRows = cpsRowsBySpecies.get(row);
390 protocol.setCalcifiedPiecesSamplingDefinition(cpsRows.stream()
391 .map(CalcifiedPiecesSamplingEditorRowModel::toEntity)
392 .collect(Collectors.toList()));
393 }
394 }
395 result.setBenthos(benthosProtocols);
396
397 result.setMaturityCaracteristics(new ArrayList<>(maturityCaracteristicsById.values()));
398
399 return result;
400 }
401
402 public ZonesTreeModel getZonesTreeModel() {
403 return zonesTreeModel;
404 }
405
406 public AvailableStratasTreeModel getAvailableStratasTreeModel() {
407 return availableStratasTreeModel;
408 }
409
410 public void setLengthClassesPmfm(List<Caracteristic> lengthClassesPmfm) {
411 List<String> ids = Lists.newArrayList(TuttiEntities.collecIds(lengthClassesPmfm));
412 setLengthClassesPmfmId(ids);
413 }
414
415 public void setIndividualObservationPmfm(List<Caracteristic> individualObservationPmfm) {
416 List<String> ids = TuttiEntities.collecIds(individualObservationPmfm);
417 setIndividualObservationPmfmId(ids);
418 }
419
420 public void setMaturityPmfm(List<Caracteristic> maturityPmfm) {
421 List<String> ids = Lists.newArrayList(TuttiEntities.collecIds(maturityPmfm));
422 setMaturityPmfmId(ids);
423 }
424
425 public Collection<EditProtocolCaracteristicsRowModel> getCaracteristicMappingRows() {
426 return caracteristicMappingRows.values();
427 }
428
429 public void addCaracteristicMappingRow(EditProtocolCaracteristicsRowModel newRow) {
430 caracteristicMappingRows.put(newRow.getPsfm(), newRow);
431 firePropertyChange(PROPERTY_CARACTERISTIC_MAPPING_ROWS, null, getCaracteristicMappingRows());
432 }
433
434 public void removeCaracteristicMappingRows(Collection<EditProtocolCaracteristicsRowModel> rowsToRemove) {
435 for (EditProtocolCaracteristicsRowModel row : rowsToRemove) {
436 caracteristicMappingRows.remove(row.getPsfm());
437 }
438 firePropertyChange(PROPERTY_CARACTERISTIC_MAPPING_ROWS, null, getCaracteristicMappingRows());
439 }
440
441 public void setCaracteristicMappingRows(List<EditProtocolCaracteristicsRowModel> caracteristicMappingRows) {
442 this.caracteristicMappingRows = new LinkedHashMap<>(
443 Maps.uniqueIndex(caracteristicMappingRows, EditProtocolCaracteristicsRowModel::getPsfm)
444 );
445 firePropertyChange(PROPERTY_CARACTERISTIC_MAPPING_ROWS, null, caracteristicMappingRows);
446 }
447
448 public boolean isCaracteristicUsedInMapping(Caracteristic caracteristic) {
449 return caracteristicMappingRows.containsKey(caracteristic);
450 }
451
452 public Collection<Caracteristic> getUsedCaracteristics() {
453 return caracteristicMappingRows.keySet();
454 }
455
456 public List<EditProtocolOperationFieldsRowModel> getOperationFieldMappingRows() {
457 return operationFieldMappingRows;
458 }
459
460 public void setOperationFieldMappingRows(List<EditProtocolOperationFieldsRowModel> operationFieldMappingRows) {
461 Object oldValue = getOperationFieldMappingRows();
462 this.operationFieldMappingRows = operationFieldMappingRows;
463 firePropertyChange(PROPERTY_OPERATION_FIELD_MAPPING_ROWS, oldValue, operationFieldMappingRows);
464 }
465
466 public List<EditProtocolSpeciesRowModel> getSpeciesRow() {
467 return speciesRow;
468 }
469
470 public void setSpeciesRow(List<EditProtocolSpeciesRowModel> speciesRow) {
471 Object oldValue = getSpeciesRow();
472 this.speciesRow = speciesRow;
473 firePropertyChange(PROPERTY_SPECIES_ROW, oldValue, speciesRow);
474 }
475
476 public List<EditProtocolSpeciesRowModel> getBenthosRow() {
477 return benthosRow;
478 }
479
480 public void setBenthosRow(List<EditProtocolSpeciesRowModel> benthosRow) {
481 Object oldValue = getBenthosRow();
482 this.benthosRow = benthosRow;
483 firePropertyChange(PROPERTY_BENTHOS_ROW, oldValue, benthosRow);
484 }
485
486 public Optional<EditProtocolSpeciesRowModel> getProtocolSpeciesRowForSpecies(Species species) {
487 List<EditProtocolSpeciesRowModel> allRows = new ArrayList<>();
488 if (speciesRow != null) {
489 allRows.addAll(speciesRow);
490 }
491 if (benthosRow != null) {
492 allRows.addAll(benthosRow);
493 }
494 return allRows.stream().filter(row -> row.getSpecies().equals(species)).findFirst();
495 }
496
497 public List<CalcifiedPiecesSamplingEditorRowModel> getCpsRows() {
498 return cpsRows;
499 }
500
501 public void setCpsRows(List<CalcifiedPiecesSamplingEditorRowModel> cpsRows) {
502 Object oldValue = getCpsRows();
503 this.cpsRows = cpsRows;
504 firePropertyChange(PROPERTY_CPS_ROWS, oldValue, cpsRows);
505 }
506
507 public boolean isRemoveSpeciesEnabled() {
508 return removeSpeciesEnabled;
509 }
510
511 public void setRemoveSpeciesEnabled(boolean removeSpeciesEnabled) {
512 this.removeSpeciesEnabled = removeSpeciesEnabled;
513 firePropertyChange(PROPERTY_REMOVE_SPECIES_ENABLED, null, removeSpeciesEnabled);
514 }
515
516 public boolean isRemoveBenthosEnabled() {
517 return removeBenthosEnabled;
518 }
519
520 public void setRemoveBenthosEnabled(boolean removeBenthosEnabled) {
521 this.removeBenthosEnabled = removeBenthosEnabled;
522 firePropertyChange(PROPERTY_REMOVE_BENTHOS_ENABLED, null, removeBenthosEnabled);
523 }
524
525 public boolean isRemoveCaracteristicMappingEnabled() {
526 return removeCaracteristicMappingEnabled;
527 }
528
529 public void setRemoveCaracteristicMappingEnabled(boolean removeCaracteristicMappingEnabled) {
530 this.removeCaracteristicMappingEnabled = removeCaracteristicMappingEnabled;
531 firePropertyChange(PROPERTY_REMOVE_CARACTERISTIC_MAPPING_ENABLED, null, removeCaracteristicMappingEnabled);
532 }
533
534 public boolean isMoveUpCaracteristicMappingEnabled() {
535 return moveUpCaracteristicMappingEnabled;
536 }
537
538 public void setMoveUpCaracteristicMappingEnabled(boolean moveUpCaracteristicMappingEnabled) {
539 this.moveUpCaracteristicMappingEnabled = moveUpCaracteristicMappingEnabled;
540 firePropertyChange(PROPERTY_MOVE_UP_CARACTERISTIC_MAPPING_ENABLED, null, moveUpCaracteristicMappingEnabled);
541 }
542
543 public boolean isMoveDownCaracteristicMappingEnabled() {
544 return moveDownCaracteristicMappingEnabled;
545 }
546
547 public void setMoveDownCaracteristicMappingEnabled(boolean moveDownCaracteristicMappingEnabled) {
548 this.moveDownCaracteristicMappingEnabled = moveDownCaracteristicMappingEnabled;
549 firePropertyChange(PROPERTY_MOVE_DOWN_CARACTERISTIC_MAPPING_ENABLED, null, moveDownCaracteristicMappingEnabled);
550 }
551
552 public boolean isImported() {
553 return imported;
554 }
555
556 public void setImported(boolean imported) {
557 Object oldValue = isImported();
558 this.imported = imported;
559 firePropertyChange(PROPERTY_IMPORTED, oldValue, imported);
560 }
561
562 public boolean isCloned() {
563 return cloned;
564 }
565
566 public void setCloned(boolean cloned) {
567 Object oldValue = isCloned();
568 this.cloned = cloned;
569 firePropertyChange(PROPERTY_CLONED, oldValue, cloned);
570 }
571
572 public boolean isCleaned() {
573 return cleaned;
574 }
575
576 public void setCleaned(boolean cleaned) {
577 Object oldValue = isCleaned();
578 this.cleaned = cleaned;
579 firePropertyChange(PROPERTY_CLEANED, oldValue, cleaned);
580 }
581
582 public List<Species> getAllSpecies() {
583 return allSpecies;
584 }
585
586 public void setAllSpecies(List<Species> allSpecies) {
587 this.allSpecies = allSpecies;
588 if (allReferentSpeciesByTaxonId != null && allSpecies != null) {
589 allSynonyms = Lists.newArrayList(allSpecies);
590 allSynonyms.removeAll(allReferentSpeciesByTaxonId.values());
591 }
592 }
593
594 public Multimap<String, Species> getAllSpeciesByTaxonId() {
595 return allSpeciesByTaxonId;
596 }
597
598 public Collection<Species> getAllSynonyms(String taxonId) {
599 return allSpeciesByTaxonId.get(taxonId);
600 }
601
602 public void setAllSpeciesByTaxonId(Multimap<String, Species> allSpeciesByTaxonId) {
603 this.allSpeciesByTaxonId = allSpeciesByTaxonId;
604 }
605
606 public List<Species> getAllSynonyms() {
607 return allSynonyms;
608 }
609
610 public Map<String, Species> getAllReferentSpeciesByTaxonId() {
611 return allReferentSpeciesByTaxonId;
612 }
613
614 public void setAllReferentSpeciesByTaxonId(Map<String, Species> allReferentSpeciesByTaxonId) {
615 this.allReferentSpeciesByTaxonId = allReferentSpeciesByTaxonId;
616 if (allReferentSpeciesByTaxonId != null && allSpecies != null) {
617 allSynonyms = Lists.newArrayList(allSpecies);
618
619 for (Species species : allReferentSpeciesByTaxonId.values()) {
620 allSynonyms.remove(species);
621 }
622 }
623 }
624
625 public List<Caracteristic> getCaracteristics() {
626 return caracteristics;
627 }
628
629 public void setCaracteristics(List<Caracteristic> caracteristics) {
630 this.caracteristics = caracteristics;
631 }
632
633 public Map<String, Caracteristic> getAllCaracteristic() {
634 return allCaracteristic;
635 }
636
637 public void setAllCaracteristic(Map<String, Caracteristic> allCaracteristic) {
638 this.allCaracteristic = allCaracteristic;
639 }
640
641
642
643
644
645 @Override
646 public String getName() {
647 return editObject.getName();
648 }
649
650 @Override
651 public void setName(String name) {
652 Object oldValue = getName();
653 editObject.setName(name);
654 firePropertyChange(PROPERTY_NAME, oldValue, name);
655 }
656
657 @Override
658 public String getComment() {
659 return editObject.getComment();
660 }
661
662 @Override
663 public void setComment(String comment) {
664 Object oldValue = getComment();
665 editObject.setComment(comment);
666 firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
667 }
668
669 @Override
670 public String getProgramId() {
671 return editObject.getProgramId();
672 }
673
674 @Override
675 public void setProgramId(String programId) {
676 Object oldValue = getProgramId();
677 editObject.setProgramId(programId);
678 firePropertyChange(PROPERTY_PROGRAM_ID, oldValue, programId);
679 }
680
681 @Override
682 public List<String> getLengthClassesPmfmId() {
683 return editObject.getLengthClassesPmfmId();
684 }
685
686 @Override
687 public void setLengthClassesPmfmId(List<String> lengthClassesPmfmId) {
688 editObject.setLengthClassesPmfmId(lengthClassesPmfmId);
689
690 firePropertyChange(PROPERTY_LENGTH_CLASSES_PMFM_ID, null, lengthClassesPmfmId);
691 }
692
693 @Override
694 public List<String> getIndividualObservationPmfmId() {
695 return editObject.getIndividualObservationPmfmId();
696 }
697
698 @Override
699 public void setIndividualObservationPmfmId(List<String> individualObservationPmfmId) {
700 editObject.setIndividualObservationPmfmId(individualObservationPmfmId);
701 firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_PMFM_ID, null, individualObservationPmfmId);
702 }
703
704 public List<String> getMaturityPmfmId() {
705 return maturityPmfmId;
706 }
707
708 public void setMaturityPmfmId(List<String> maturityPmfmId) {
709 this.maturityPmfmId = maturityPmfmId;
710 firePropertyChange(PROPERTY_MATURITY_PMFM_ID, null, maturityPmfmId);
711 }
712
713 @Override
714 public List<CaracteristicMappingRow> getCaracteristicMapping() {
715 return editObject.getCaracteristicMapping();
716 }
717
718 @Override
719 public void setCaracteristicMapping(List<CaracteristicMappingRow> caracteristicMapping) {
720 editObject.setCaracteristicMapping(caracteristicMapping);
721 firePropertyChange(PROPERTY_CARACTERISTIC_MAPPING, null, caracteristicMapping);
722 }
723
724 @Override
725 public CaracteristicMappingRow getCaracteristicMapping(int index) {
726 return editObject.getCaracteristicMapping(index);
727 }
728
729 @Override
730 public boolean isCaracteristicMappingEmpty() {
731 return editObject.isCaracteristicMappingEmpty();
732 }
733
734 @Override
735 public int sizeCaracteristicMapping() {
736 return editObject.sizeCaracteristicMapping();
737 }
738
739 @Override
740 public void addCaracteristicMapping(CaracteristicMappingRow caracteristicMapping) {
741 editObject.addCaracteristicMapping(caracteristicMapping);
742 }
743
744 @Override
745 public void addAllCaracteristicMapping(Collection<CaracteristicMappingRow> caracteristicMapping) {
746 editObject.addAllCaracteristicMapping(caracteristicMapping);
747 }
748
749 @Override
750 public boolean removeCaracteristicMapping(CaracteristicMappingRow caracteristicMapping) {
751 return editObject.removeCaracteristicMapping(caracteristicMapping);
752 }
753
754 @Override
755 public boolean removeAllCaracteristicMapping(Collection<CaracteristicMappingRow> caracteristicMapping) {
756 return editObject.removeAllCaracteristicMapping(caracteristicMapping);
757 }
758
759 @Override
760 public boolean containsCaracteristicMapping(CaracteristicMappingRow caracteristicMapping) {
761 return editObject.containsCaracteristicMapping(caracteristicMapping);
762 }
763
764 @Override
765 public boolean containsAllCaracteristicMapping(Collection<CaracteristicMappingRow> caracteristicMapping) {
766 return editObject.containsAllCaracteristicMapping(caracteristicMapping);
767 }
768
769 @Override
770 public String getIndividualObservationPmfmId(int index) {
771 return editObject.getIndividualObservationPmfmId(index);
772 }
773
774 @Override
775 public boolean isIndividualObservationPmfmIdEmpty() {
776 return editObject.isIndividualObservationPmfmIdEmpty();
777 }
778
779 @Override
780 public int sizeIndividualObservationPmfmId() {
781 return editObject.sizeIndividualObservationPmfmId();
782 }
783
784 @Override
785 public void addIndividualObservationPmfmId(String individualObservationPmfmId) {
786 editObject.addIndividualObservationPmfmId(individualObservationPmfmId);
787 }
788
789 @Override
790 public void addAllIndividualObservationPmfmId(Collection<String> individualObservationPmfmId) {
791 editObject.addAllIndividualObservationPmfmId(individualObservationPmfmId);
792 }
793
794 @Override
795 public boolean removeIndividualObservationPmfmId(String individualObservationPmfmId) {
796 return editObject.removeIndividualObservationPmfmId(individualObservationPmfmId);
797 }
798
799 @Override
800 public boolean removeAllIndividualObservationPmfmId(Collection<String> individualObservationPmfmId) {
801 return editObject.removeAllIndividualObservationPmfmId(individualObservationPmfmId);
802 }
803
804 @Override
805 public boolean containsIndividualObservationPmfmId(String individualObservationPmfmId) {
806 return editObject.containsIndividualObservationPmfmId(individualObservationPmfmId);
807 }
808
809 @Override
810 public boolean containsAllIndividualObservationPmfmId(Collection<String> individualObservationPmfmId) {
811 return editObject.containsAllIndividualObservationPmfmId(individualObservationPmfmId);
812 }
813
814 @Override
815 public String getLengthClassesPmfmId(int index) {
816 return editObject.getLengthClassesPmfmId(index);
817 }
818
819 @Override
820 public boolean isLengthClassesPmfmIdEmpty() {
821 return editObject.isLengthClassesPmfmIdEmpty();
822 }
823
824 @Override
825 public int sizeLengthClassesPmfmId() {
826 return editObject.sizeLengthClassesPmfmId();
827 }
828
829 @Override
830 public void addLengthClassesPmfmId(String lengthClassesPmfmId) {
831 editObject.addLengthClassesPmfmId(lengthClassesPmfmId);
832
833 firePropertyChange(PROPERTY_LENGTH_CLASSES_PMFM_ID, null, getLengthClassesPmfmId());
834 }
835
836 @Override
837 public void addAllLengthClassesPmfmId(Collection<String> lengthClassesPmfmId) {
838 editObject.addAllLengthClassesPmfmId(lengthClassesPmfmId);
839
840 firePropertyChange(PROPERTY_LENGTH_CLASSES_PMFM_ID, null, getLengthClassesPmfmId());
841 }
842
843 @Override
844 public boolean removeLengthClassesPmfmId(String lengthClassesPmfmId) {
845 boolean result = editObject.removeLengthClassesPmfmId(lengthClassesPmfmId);
846
847 firePropertyChange(PROPERTY_LENGTH_CLASSES_PMFM_ID, null, getLengthClassesPmfmId());
848 return result;
849 }
850
851 @Override
852 public boolean removeAllLengthClassesPmfmId(Collection<String> lengthClassesPmfmId) {
853 boolean result = editObject.removeAllLengthClassesPmfmId(lengthClassesPmfmId);
854
855 firePropertyChange(PROPERTY_LENGTH_CLASSES_PMFM_ID, null, getLengthClassesPmfmId());
856 return result;
857 }
858
859 @Override
860 public boolean containsLengthClassesPmfmId(String lengthClassesPmfmId) {
861 return editObject.containsLengthClassesPmfmId(lengthClassesPmfmId);
862 }
863
864 @Override
865 public boolean containsAllLengthClassesPmfmId(Collection<String> lengthClassesPmfmId) {
866 return editObject.containsAllLengthClassesPmfmId(lengthClassesPmfmId);
867 }
868
869 @Override
870 public void addAllMaturityCaracteristics(Collection<MaturityCaracteristic> maturityCaracteristics) {
871 editObject.addAllMaturityCaracteristics(maturityCaracteristics);
872 firePropertyChanged(PROPERTY_MATURITY_CARACTERISTICS, null, getMaturityCaracteristics());
873 }
874
875 @Override
876 public MaturityCaracteristic getMaturityCaracteristics(int index) {
877 return editObject.getMaturityCaracteristics(index);
878 }
879
880 @Override
881 public boolean isMaturityCaracteristicsEmpty() {
882 return editObject.isMaturityCaracteristicsEmpty();
883 }
884
885 @Override
886 public int sizeMaturityCaracteristics() {
887 return editObject.sizeMaturityCaracteristics();
888 }
889
890 @Override
891 public void addMaturityCaracteristics(MaturityCaracteristic maturityCaracteristics) {
892 editObject.addMaturityCaracteristics(maturityCaracteristics);
893 firePropertyChanged(PROPERTY_MATURITY_CARACTERISTICS, null, getMaturityCaracteristics());
894 }
895
896 @Override
897 public boolean removeMaturityCaracteristics(MaturityCaracteristic maturityCaracteristics) {
898 boolean result = editObject.removeMaturityCaracteristics(maturityCaracteristics);
899 firePropertyChanged(PROPERTY_MATURITY_CARACTERISTICS, null, getMaturityCaracteristics());
900 return result;
901 }
902
903 @Override
904 public boolean removeAllMaturityCaracteristics(Collection<MaturityCaracteristic> maturityCaracteristics) {
905 boolean result = editObject.removeAllMaturityCaracteristics(maturityCaracteristics);
906 firePropertyChanged(PROPERTY_MATURITY_CARACTERISTICS, null, getMaturityCaracteristics());
907 return result;
908 }
909
910 @Override
911 public boolean containsMaturityCaracteristics(MaturityCaracteristic maturityCaracteristics) {
912 return editObject.containsMaturityCaracteristics(maturityCaracteristics);
913 }
914
915 @Override
916 public boolean containsAllMaturityCaracteristics(Collection<MaturityCaracteristic> maturityCaracteristics) {
917 return editObject.containsAllMaturityCaracteristics(maturityCaracteristics);
918 }
919
920 @Override
921 public List<MaturityCaracteristic> getMaturityCaracteristics() {
922 return editObject.getMaturityCaracteristics();
923 }
924
925 @Override
926 public void setMaturityCaracteristics(List<MaturityCaracteristic> maturityCaracteristics) {
927 editObject.setMaturityCaracteristics(maturityCaracteristics);
928 firePropertyChanged(PROPERTY_MATURITY_CARACTERISTICS, null, maturityCaracteristics);
929 }
930
931 @Override
932 public SpeciesProtocol getSpecies(int index) {
933 return editObject.getSpecies(index);
934 }
935
936 @Override
937 public boolean isSpeciesEmpty() {
938 return editObject.isSpeciesEmpty();
939 }
940
941 @Override
942 public int sizeSpecies() {
943 return editObject.sizeSpecies();
944 }
945
946 @Override
947 public void addSpecies(SpeciesProtocol species) {
948 editObject.addSpecies(species);
949 }
950
951 @Override
952 public void addAllSpecies(Collection<SpeciesProtocol> species) {
953 editObject.addAllSpecies(species);
954 }
955
956 @Override
957 public boolean removeSpecies(SpeciesProtocol species) {
958 return editObject.removeSpecies(species);
959 }
960
961 @Override
962 public boolean removeAllSpecies(Collection<SpeciesProtocol> species) {
963 return editObject.removeAllSpecies(species);
964 }
965
966 @Override
967 public boolean containsSpecies(SpeciesProtocol species) {
968 return editObject.containsSpecies(species);
969 }
970
971 @Override
972 public boolean containsAllSpecies(Collection<SpeciesProtocol> species) {
973 return editObject.containsAllSpecies(species);
974 }
975
976 @Override
977 public List<SpeciesProtocol> getSpecies() {
978 return editObject.getSpecies();
979 }
980
981 @Override
982 public void setSpecies(List<SpeciesProtocol> species) {
983 editObject.setSpecies(species);
984 }
985
986 @Override
987 public SpeciesProtocol getBenthos(int index) {
988 return editObject.getBenthos(index);
989 }
990
991 @Override
992 public boolean isBenthosEmpty() {
993 return editObject.isBenthosEmpty();
994 }
995
996 @Override
997 public int sizeBenthos() {
998 return editObject.sizeBenthos();
999 }
1000
1001 @Override
1002 public void addBenthos(SpeciesProtocol benthos) {
1003 editObject.addBenthos(benthos);
1004 }
1005
1006 @Override
1007 public void addAllBenthos(Collection<SpeciesProtocol> benthos) {
1008 editObject.addAllBenthos(benthos);
1009 }
1010
1011 @Override
1012 public boolean removeBenthos(SpeciesProtocol benthos) {
1013 return editObject.removeBenthos(benthos);
1014 }
1015
1016 @Override
1017 public boolean removeAllBenthos(Collection<SpeciesProtocol> benthos) {
1018 return editObject.removeAllBenthos(benthos);
1019 }
1020
1021 @Override
1022 public boolean containsBenthos(SpeciesProtocol benthos) {
1023 return editObject.containsBenthos(benthos);
1024 }
1025
1026 @Override
1027 public boolean containsAllBenthos(Collection<SpeciesProtocol> benthos) {
1028 return editObject.containsAllBenthos(benthos);
1029 }
1030
1031 @Override
1032 public List<SpeciesProtocol> getBenthos() {
1033 return editObject.getBenthos();
1034 }
1035
1036 @Override
1037 public void setBenthos(List<SpeciesProtocol> benthos) {
1038 editObject.setBenthos(benthos);
1039 }
1040
1041 @Override
1042 public Integer getVersion() {
1043 return editObject.getVersion();
1044 }
1045
1046 @Override
1047 public void setVersion(Integer version) {
1048 editObject.setVersion(version);
1049 }
1050
1051 @Override
1052 public String getImportColumns(int index) {
1053 return editObject.getImportColumns(index);
1054 }
1055
1056 @Override
1057 public boolean isImportColumnsEmpty() {
1058 return editObject.isImportColumnsEmpty();
1059 }
1060
1061 @Override
1062 public int sizeImportColumns() {
1063 return editObject.sizeImportColumns();
1064 }
1065
1066 @Override
1067 public void addImportColumns(String importColumns) {
1068 editObject.addImportColumns(importColumns);
1069 firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns());
1070 }
1071
1072 @Override
1073 public void addAllImportColumns(Collection<String> importColumns) {
1074 editObject.addAllImportColumns(importColumns);
1075 firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns());
1076 }
1077
1078 @Override
1079 public boolean removeImportColumns(String importColumns) {
1080 boolean removeImportColumns = editObject.removeImportColumns(importColumns);
1081 firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns());
1082 return removeImportColumns;
1083 }
1084
1085 @Override
1086 public boolean removeAllImportColumns(Collection<String> importColumns) {
1087 boolean removeAllImportColumns = editObject.removeAllImportColumns(importColumns);
1088 firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns());
1089 return removeAllImportColumns;
1090 }
1091
1092 @Override
1093 public boolean containsImportColumns(String importColumns) {
1094 return editObject.containsImportColumns(importColumns);
1095 }
1096
1097 @Override
1098 public boolean containsAllImportColumns(Collection<String> importColumns) {
1099 return editObject.containsAllImportColumns(importColumns);
1100 }
1101
1102 @Override
1103 public Collection<String> getImportColumns() {
1104 return editObject.getImportColumns();
1105 }
1106
1107 @Override
1108 public void setImportColumns(Collection<String> importColumns) {
1109 editObject.setImportColumns(importColumns);
1110 firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns());
1111 }
1112
1113 @Override
1114 public void setOperationFieldMapping(Collection<OperationFieldMappingRow> operationFieldMapping) {
1115 editObject.setOperationFieldMapping(operationFieldMapping);
1116 firePropertyChanged(TuttiProtocol.PROPERTY_OPERATION_FIELD_MAPPING, null, getOperationFieldMapping());
1117 }
1118
1119 public boolean isAvailableStratas() {
1120 return getAvailableStratasTreeModel().isAvailableStratas();
1121 }
1122
1123 public void setAvailableStratas(boolean availableStratas) {
1124 }
1125
1126 @Override
1127 public Collection<Zone> getZone() {
1128
1129 return null;
1130 }
1131
1132 @Override
1133 public void setZone(Collection<Zone> zones) {
1134
1135 }
1136
1137 @Override
1138 public Zone getZone(int index) {
1139
1140 return null;
1141 }
1142
1143 @Override
1144 public boolean isZoneEmpty() {
1145
1146
1147 return true;
1148 }
1149
1150 @Override
1151 public int sizeZone() {
1152
1153 return 0;
1154 }
1155
1156 @Override
1157 public void addZone(Zone zone) {
1158
1159 }
1160
1161 @Override
1162 public void addAllZone(Collection<Zone> zones) {
1163
1164 }
1165
1166 @Override
1167 public boolean removeZone(Zone zone) {
1168
1169 return false;
1170 }
1171
1172 @Override
1173 public boolean removeAllZone(Collection<Zone> zones) {
1174
1175 return false;
1176 }
1177
1178 @Override
1179 public boolean containsZone(Zone zone) {
1180
1181 return false;
1182 }
1183
1184 @Override
1185 public boolean containsAllZone(Collection<Zone> zones) {
1186
1187 return false;
1188 }
1189
1190 @Override
1191 public Collection<OperationFieldMappingRow> getOperationFieldMapping() {
1192 return editObject.getOperationFieldMapping();
1193 }
1194
1195 @Override
1196 public boolean containsAllOperationFieldMapping(Collection<OperationFieldMappingRow> operationFieldMapping) {
1197 return editObject.containsAllOperationFieldMapping(operationFieldMapping);
1198 }
1199
1200 @Override
1201 public boolean containsOperationFieldMapping(OperationFieldMappingRow operationFieldMapping) {
1202 return editObject.containsOperationFieldMapping(operationFieldMapping);
1203 }
1204
1205 @Override
1206 public boolean removeAllOperationFieldMapping(Collection<OperationFieldMappingRow> operationFieldMapping) {
1207 boolean removeAllOperationFieldMapping = editObject.removeAllOperationFieldMapping(operationFieldMapping);
1208 firePropertyChanged(TuttiProtocol.PROPERTY_OPERATION_FIELD_MAPPING, null, getOperationFieldMapping());
1209 return removeAllOperationFieldMapping;
1210 }
1211
1212 @Override
1213 public boolean removeOperationFieldMapping(OperationFieldMappingRow operationFieldMapping) {
1214 boolean removeOperationFieldMapping = editObject.removeOperationFieldMapping(operationFieldMapping);
1215 firePropertyChanged(TuttiProtocol.PROPERTY_OPERATION_FIELD_MAPPING, null, getOperationFieldMapping());
1216 return removeOperationFieldMapping;
1217 }
1218
1219 @Override
1220 public void addAllOperationFieldMapping(Collection<OperationFieldMappingRow> operationFieldMapping) {
1221 editObject.addAllOperationFieldMapping(operationFieldMapping);
1222 firePropertyChanged(TuttiProtocol.PROPERTY_OPERATION_FIELD_MAPPING, null, getOperationFieldMapping());
1223 }
1224
1225 @Override
1226 public void addOperationFieldMapping(OperationFieldMappingRow operationFieldMapping) {
1227 editObject.addOperationFieldMapping(operationFieldMapping);
1228 firePropertyChanged(TuttiProtocol.PROPERTY_OPERATION_FIELD_MAPPING, null, getOperationFieldMapping());
1229 }
1230
1231 @Override
1232 public int sizeOperationFieldMapping() {
1233 return editObject.sizeOperationFieldMapping();
1234 }
1235
1236 @Override
1237 public boolean isOperationFieldMappingEmpty() {
1238 return editObject.isOperationFieldMappingEmpty();
1239 }
1240
1241 @Override
1242 public OperationFieldMappingRow getOperationFieldMapping(int index) {
1243 return editObject.getOperationFieldMapping(index);
1244 }
1245
1246 @Override
1247 public boolean isUseCalcifiedPieceSampling() {
1248 return editObject.isUseCalcifiedPieceSampling();
1249 }
1250
1251 @Override
1252 public void setUseCalcifiedPieceSampling(boolean useCalcifiedPieceSampling) {
1253 boolean oldValue = isUseCalcifiedPieceSampling();
1254 editObject.setUseCalcifiedPieceSampling(useCalcifiedPieceSampling);
1255 firePropertyChanged(TuttiProtocol.PROPERTY_USE_CALCIFIED_PIECE_SAMPLING, oldValue, useCalcifiedPieceSampling);
1256 }
1257
1258 public int numberOfRows(String column) {
1259 int result = 0;
1260 MutableInt mutableInt = numberOfRowsByColumn.get(column);
1261 if (mutableInt != null) {
1262 result = mutableInt.intValue();
1263 }
1264 return result;
1265 }
1266
1267 public void resetNumbersOfRows() {
1268 numberOfRowsByColumn = new HashMap<>();
1269 }
1270
1271 public int incNumberOfRows(String column) {
1272 MutableInt mutableInt = numberOfRowsByColumn.get(column);
1273 if (mutableInt == null) {
1274 mutableInt = new MutableInt(1);
1275 numberOfRowsByColumn.put(column, mutableInt);
1276 } else {
1277 mutableInt.increment();
1278 }
1279 return mutableInt.intValue();
1280
1281 }
1282
1283 public int decNumberOfRows(String column) {
1284 MutableInt mutableInt = numberOfRowsByColumn.get(column);
1285 Preconditions.checkNotNull(mutableInt);
1286 Preconditions.checkArgument(mutableInt.intValue() > 0);
1287 mutableInt.decrement();
1288 return mutableInt.intValue();
1289 }
1290
1291
1292 public void selectStrataNodes(ZoneNode selectedZoneNode, StrataNode sourceStrataNode) {
1293
1294
1295 availableStratasTreeModel.removeNodeFromParent(sourceStrataNode);
1296
1297 String sourceStrataId = sourceStrataNode.getId();
1298
1299
1300 StrataNode targetStrataNode = zonesTreeModel.getOrCreateStrataNode(selectedZoneNode, sourceStrataId);
1301
1302
1303 zonesTreeModel.moveSubStratas(sourceStrataNode, targetStrataNode);
1304
1305 setModify(true);
1306
1307 }
1308
1309 public void selectedSubStraNodes(ZoneNode selectedZoneNode, SubStrataNode sourceSubStrataNode) {
1310
1311 StrataNode sourceStrataNode = sourceSubStrataNode.getParent();
1312
1313
1314 availableStratasTreeModel.removeNodeFromParent(sourceSubStrataNode);
1315
1316 if (sourceStrataNode.isLeaf()) {
1317
1318
1319 availableStratasTreeModel.removeNodeFromParent(sourceStrataNode);
1320
1321 }
1322
1323
1324 StrataNode targetStrataNode = zonesTreeModel.getOrCreateStrataNode(selectedZoneNode, sourceStrataNode.getId());
1325
1326
1327 zonesTreeModel.addNode(targetStrataNode, sourceSubStrataNode);
1328
1329 setModify(true);
1330
1331 }
1332
1333
1334 public void unselectStrataNode(StrataNode sourceStrataNode) {
1335
1336
1337 zonesTreeModel.removeNodeFromParent(sourceStrataNode);
1338
1339
1340 StrataNode targetStrataNode = availableStratasTreeModel.getOrCreateStrataNode(sourceStrataNode.getId());
1341
1342
1343 availableStratasTreeModel.moveSubStratas(sourceStrataNode, targetStrataNode);
1344
1345 setModify(true);
1346
1347 }
1348
1349 public void unselectSubStrataNode(SubStrataNode sourceSubStrataNode) {
1350
1351 StrataNode sourceStrataNode = sourceSubStrataNode.getParent();
1352
1353
1354 zonesTreeModel.removeNodeFromParent(sourceSubStrataNode);
1355
1356 if (sourceStrataNode.isLeaf()) {
1357
1358
1359 zonesTreeModel.removeNodeFromParent(sourceStrataNode);
1360
1361 }
1362
1363
1364 StrataNode targetStrataNode = availableStratasTreeModel.getOrCreateStrataNode(sourceStrataNode.getId());
1365
1366
1367 availableStratasTreeModel.addNode(targetStrataNode, sourceSubStrataNode);
1368
1369 setModify(true);
1370
1371 }
1372
1373 public boolean isModifyingZones() {
1374 return modifyingZones;
1375 }
1376
1377 public void setModifyingZones(boolean modifyingZones) {
1378 Object oldValue = isModifyingZones();
1379 this.modifyingZones = modifyingZones;
1380 firePropertyChange(PROPERTY_MODIFYING_ZONES, oldValue, modifyingZones);
1381 }
1382
1383 public void setLocationLabelCache(ImmutableMap<String, String> locationLabelCache) {
1384 this.zonesTreeModel.setLocationLabelCache(locationLabelCache);
1385 this.availableStratasTreeModel.setLocationLabelCache(locationLabelCache);
1386 }
1387
1388 public Map<String, MaturityCaracteristic> getMaturityCaracteristicsById() {
1389 return maturityCaracteristicsById;
1390 }
1391
1392 public void setMaturityCaracteristicsById(LinkedHashMap<String, MaturityCaracteristic> maturityCaracteristicsById) {
1393 this.maturityCaracteristicsById.clear();
1394 if (maturityCaracteristicsById != null) {
1395 this.maturityCaracteristicsById.putAll(maturityCaracteristicsById);
1396 }
1397 }
1398
1399 public MaturityCaracteristic getMaturityCaracteristic(String id) {
1400 return maturityCaracteristicsById.get(id);
1401 }
1402
1403 public boolean isMaturityValid(Caracteristic maturityCaracteristic) {
1404 Objects.requireNonNull(maturityCaracteristic);
1405 return isMaturityValid(maturityCaracteristic.getId());
1406 }
1407
1408 public boolean isMaturityValid(String maturityCaracteristicId) {
1409 MaturityCaracteristic maturityCaracteristic = maturityCaracteristicsById.get(maturityCaracteristicId);
1410 return maturityCaracteristic != null && CollectionUtils.isNotEmpty(maturityCaracteristic.getMatureStateIds());
1411 }
1412
1413 public boolean areAllMaturitiesValid() {
1414 return maturityPmfmId == null || maturityPmfmId.stream().allMatch(this::isMaturityValid);
1415 }
1416 }