This is an automated email from the git hooks/post-receive script. New commit to branch feature/7930 in repository tutti. See http://git.codelutin.com/tutti.git commit 6d43c7ae995c1c81bdd85882038f12190e9bd97c Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 8 23:25:45 2016 +0100 Charger le modèle des strates dispnibles plus haut + ne pas reproposer à la sélection des strates et sous-strates déjà dans le protocole --- .../content/protocol/EditProtocolUIHandler.java | 64 ++++++++++++++++++++++ .../content/protocol/EditProtocolUIModel.java | 4 +- .../protocol/zones/ZoneEditorUIHandler.java | 45 ++------------- 3 files changed, 71 insertions(+), 42 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index 0b0f601..4957bf5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -25,6 +25,7 @@ package fr.ifremer.tutti.ui.swing.content.protocol; import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; +import com.google.common.collect.HashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; @@ -38,12 +39,16 @@ import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; import fr.ifremer.tutti.persistence.entities.protocol.OperationFieldMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; +import fr.ifremer.tutti.persistence.entities.protocol.Strata; +import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiDecorator; import fr.ifremer.tutti.ui.swing.content.home.actions.CloneProtocolAction; import fr.ifremer.tutti.ui.swing.content.home.actions.EditProtocolAction; @@ -51,6 +56,8 @@ import fr.ifremer.tutti.ui.swing.content.home.actions.ImportProtocolAction; import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesAbleBatchRowHelper; import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpCellEditor; import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpCellRenderer; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.StrataUIModel; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.SubStrataUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.SwingUtil; @@ -94,9 +101,12 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -283,6 +293,8 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI model.setLengthClassesPmfmId(Lists.<String>newArrayList()); } + model.setProgramId(getDataContext().getProgramId()); + SwingValidator validator = this.ui.getValidator(); listenValidatorValid(validator, model); @@ -593,6 +605,9 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI populateImportColumnTableEditors(); + // init available zones + initAvailableZonesModel(); + // if new protocol can already cancel his creation model.setModify(model.isCreate() || model.isCleaned()); @@ -634,6 +649,55 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } + protected void initAvailableZonesModel() { + + PersistenceService persistenceService = getPersistenceService(); + + TuttiLocation programZone = getDataContext().getProgram().getZone(); + + Multimap<TuttiLocation, TuttiLocation> programStratasAndSubstratas = + HashMultimap.create(persistenceService.getAllFishingOperationStratasAndSubstratas(programZone.getId())); + + Set<TuttiLocation> usedLocations = new LinkedHashSet<>(); + + getModel().getZone().stream().forEach(zone -> { + Collection<Strata> zoneStratas = zone.getStrata(); + + Set<TuttiLocation> locations = zoneStratas.stream().map(Strata::getLocation).collect(Collectors.toSet()); + usedLocations.addAll(locations); + + zoneStratas.stream().map(Strata::getSubstrata).forEach(subStratas -> { + Set<TuttiLocation> locations2 = subStratas.stream().map(SubStrata::getLocation).collect(Collectors.toSet()); + usedLocations.addAll(locations2); + }); + + }); + + // on transforme les données du service en modele d'ui + Collection<StrataUIModel> availableStratas = new HashSet<>(); + programStratasAndSubstratas.keySet().stream().forEach(strataLocation -> { + + Collection<TuttiLocation> subStrataLocations = new HashSet<>(programStratasAndSubstratas.get(strataLocation)); + subStrataLocations.remove(null); + List<SubStrata> subStratas = subStrataLocations.stream() + .filter(tuttiLocation -> !usedLocations.contains(tuttiLocation)) + .map(SubStrataUIModel::new) + .collect(Collectors.toList()); + + + if (!(subStratas.isEmpty() && usedLocations.contains(strataLocation))) { + + // the strata is already consumed + StrataUIModel strata = new StrataUIModel(strataLocation); + strata.setSubstrata(subStratas); + availableStratas.add(strata); + } + + }); + + getModel().setAvailableStratas(availableStratas); + } + @Override protected JComponent getComponentToFocus() { return getUI().getNameField(); 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 a4acbed..5366fa8 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 @@ -196,7 +196,7 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, public void fromEntity(TuttiProtocol entity) { fromBeanBinder.copyExcluding(entity, this, PROPERTY_ZONE); - Collection<Zone> zoneModels = entity.getZone() + List<Zone> zoneModels = entity.getZone() .stream() .map(zone -> { ZoneUIModel zoneUIModel = new ZoneUIModel(); @@ -481,7 +481,7 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, @Override public void setProgramId(String programId) { Object oldValue = getProgramId(); - editObject.setComment(programId); + editObject.setProgramId(programId); firePropertyChange(PROPERTY_PROGRAM_ID, oldValue, programId); } 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 62aa35c..2cde9ca 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 @@ -1,10 +1,5 @@ package fr.ifremer.tutti.ui.swing.content.protocol.zones; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Multimap; -import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.StrataUIModel; import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.SubStrataUIModel; @@ -37,7 +32,6 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collection; -import java.util.HashSet; import java.util.stream.Collectors; /** @@ -231,7 +225,7 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo zonesTreeModel.addTreeModelListener(new TreeModelListener() { @Override - public void treeNodesChanged(TreeModelEvent e) { } + public void treeNodesChanged(TreeModelEvent e) { getModel().setModify(true); } @Override public void treeNodesInserted(TreeModelEvent e) { @@ -264,8 +258,6 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo // get data - initModel(); - JAXXWidgetUtil.expandTree(availableStratasTree); JAXXWidgetUtil.expandTree(zonesTree); } @@ -334,46 +326,19 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIMo } } - protected void initModel() { - PersistenceService persistenceService = getPersistenceService(); - - TuttiLocation programZone = getDataContext().getProgram().getZone(); - - Multimap<TuttiLocation, TuttiLocation> programStratasAndSubstratas = - HashMultimap.create(persistenceService.getAllFishingOperationStratasAndSubstratas(programZone.getId())); - - // on transforme les données du service en modele d'ui - Collection<StrataUIModel> availableStratas = new HashSet<>(); - programStratasAndSubstratas.keySet().forEach(strataLocation -> { - - StrataUIModel strata = new StrataUIModel(strataLocation); - - Collection<TuttiLocation> subStrataLocations = new HashSet<>(programStratasAndSubstratas.get(strataLocation)); - subStrataLocations.remove(null); - Collection<SubStrata> subStratas = subStrataLocations.stream() - .map(subStrataLocation -> new SubStrataUIModel(subStrataLocation)) - .collect(Collectors.toList()); - - strata.setSubstrata(subStratas); - availableStratas.add(strata); - }); - - getModel().setAvailableStratas(availableStratas); - } - protected void updateZonesTreeModel(Collection<ZoneUIModel> zonesToAdd, Collection<ZoneUIModel> zonesToRemove) { JTree zonesTree = getUI().getZonesTree(); ZonesTreeModel zonesTreeModel = (ZonesTreeModel) zonesTree.getModel(); getModel().removeStratasFromZone(zonesToRemove.stream() - .map(zone -> zone.getStrata()) - .flatMap(s -> s.stream()) + .map(ZoneUIModel::getStrata) + .flatMap(Collection::stream) .map(strata -> (StrataUIModel) strata) .collect(Collectors.toSet())); zonesToAdd.stream() - .map(zone -> zone.getStrata()) - .flatMap(s -> s.stream()) + .map(ZoneUIModel::getStrata) + .flatMap(Collection::stream) .map(strata -> (StrataUIModel) strata) .forEach(strata -> { if (strata.getSubstrata().isEmpty()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.