branch feature/8055 created (now 5d0b271)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8055 in repository tutti. See http://git.codelutin.com/tutti.git at 5d0b271 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) This branch includes the following new commits: new 5d0b271 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) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: 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) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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>.
participants (1)
-
codelutin.com scm