This is an automated email from the git hooks/post-receive script. New commit to branch feature/8055 in repository tutti. See http://git.codelutin.com/tutti.git commit 5d0b271c9bfd285f0c85505b34304d396a09746b Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 10 10:37:45 2016 +0100 on vérifie que la strate est dans les strates disponibles avant d'essayer de la retirer et de retirer ses fils. Si elle n'y est pas (ce qui arrive au lancement de l'ecran) alors on la retire pas (fixes #8055) --- .../content/protocol/EditProtocolUIModel.java | 14 ++++----- .../protocol/zones/ZoneEditorUIHandler.java | 34 ++++++++++++++-------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java index f55436c..6f62652 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java @@ -1241,12 +1241,12 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, StrataUIModel strata = subStrata.getStrata(); strata.removeSubstrata(subStrata); - StrataUIModel availableStrata = getStrata(strata); - if (availableStrata == null) { - availableStrata = new StrataUIModel(strata.getLocation()); - addAvailableStrata(availableStrata); + Optional<StrataUIModel> availableStrata = getStrata(strata); + if (!availableStrata.isPresent()) { + availableStrata = Optional.of(new StrataUIModel(strata.getLocation())); + addAvailableStrata(availableStrata.get()); } - availableStrata.addSubstrata(subStrata); + availableStrata.get().addSubstrata(subStrata); if (strata.isSubstrataEmpty()) { strata.getZone().removeStrata(strata); @@ -1259,8 +1259,8 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, * @param strata * @return the strata from the available stratas which equals the strata in parameters */ - public StrataUIModel getStrata(StrataUIModel strata) { - return availableStratas.stream().filter(s -> s != null && s.equals(strata)).findFirst().orElse(null); + public Optional<StrataUIModel> getStrata(StrataUIModel strata) { + return availableStratas.stream().filter(s -> s != null && s.equals(strata)).findFirst(); } protected List<StrataUIModel> copyAvailableStratas() { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java index c8b6616..e3a6a71 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIHandler.java @@ -56,6 +56,8 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -360,27 +362,35 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo .map(strata -> (StrataUIModel) strata) .collect(Collectors.toSet())); + Collection<StrataUIModel> strataToRemove = new HashSet<>(); zonesToAdd.stream() .map(ZoneUIModel::getStrata) .flatMap(Collection::stream) .map(strata -> (StrataUIModel) strata) .forEach(strata -> { - if (strata.getSubstrata().isEmpty()) { - getModel().removeAvailableStrata(strata); - - } else { - StrataUIModel availableStrata = getModel().getStrata(strata); - availableStrata.removeAllSubstrata(strata.getSubstrata() - .stream() - .map(subStrata -> (SubStrataUIModel) subStrata) - .collect(Collectors.toSet())); - - if (availableStrata.isSubstrataEmpty()) { - getModel().removeAvailableStrata(availableStrata); + + Optional<StrataUIModel> availableStrata = getModel().getStrata(strata); + // if the strata is available, then remove it from the available strata (idem for the substrata + if (availableStrata.isPresent()) { + + if (strata.getSubstrata().isEmpty()) { + getModel().removeAvailableStrata(availableStrata.get()); + + } else { + availableStrata.get().removeAllSubstrata(strata.getSubstrata() + .stream() + .map(subStrata -> (SubStrataUIModel) subStrata) + .collect(Collectors.toSet())); + + if (availableStrata.get().isSubstrataEmpty()) { + getModel().removeAvailableStrata(availableStrata.get()); + } } } }); + strataToRemove.forEach(strata -> strata.getZone().removeStrata(strata)); + zonesTreeModel.removeZones(zonesToRemove); zonesTreeModel.addZones(zonesToAdd); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.