This is an automated email from the git hooks/post-receive script. New commit to branch feature/7929_editeur_de_zone in repository tutti. See http://git.codelutin.com/tutti.git commit 08c08a6124f05fd054c22bfaf8c38dcb359ac40e Author: Kevin Morin <morin@codelutin.com> Date: Fri Jan 29 17:12:06 2016 +0100 sauvegarde du protocol (refs #7929) --- .../entities/protocol/TuttiProtocols.java | 3 ++ .../service/ProtocolPersistenceServiceImpl.java | 47 +++++++++++++++++++ .../content/protocol/EditProtocolUIHandler.java | 10 +++- .../content/protocol/EditProtocolUIModel.java | 11 ++++- .../protocol/actions/SaveProtocolAction.java | 12 ++++- .../protocol/zones/ZoneEditorUIHandler.java | 53 +++++++++++++--------- .../content/protocol/zones/ZoneEditorUIModel.java | 23 ++++++---- .../zones/actions/RemoveStratasAction.java | 11 ++++- .../protocol/zones/models/StrataUIModel.java | 18 ++++++++ .../content/protocol/zones/models/ZoneUIModel.java | 18 ++++++++ .../protocol/zones/tree/ZonesTreeModel.java | 8 ++++ 11 files changed, 176 insertions(+), 38 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java index 7f158bd..ed13f53 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java @@ -375,6 +375,9 @@ public class TuttiProtocols extends AbstractTuttiProtocols { SpeciesProtocols.typeOfSpeciesProtocol()); result.setClassTag(CaracteristicMappingRow.class.getSimpleName(), CaracteristicMappingRows.typeOfCaracteristicMappingRow()); + result.setClassTag(Zone.class.getSimpleName(), Zones.typeOfZone()); + result.setClassTag(Strata.class.getSimpleName(), Stratas.typeOfStrata()); + result.setClassTag(SubStrata.class.getSimpleName(), SubStratas.typeOfSubStrata()); result.writeConfig.setAlwaysWriteClassname(false); result.writeConfig.setWriteRootTags(false); return result; diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java index b08a0bd..5cfff98 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java @@ -26,8 +26,14 @@ import com.google.common.collect.Lists; import fr.ifremer.adagio.core.service.technical.CacheService; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocols; +import fr.ifremer.tutti.persistence.entities.protocol.Strata; +import fr.ifremer.tutti.persistence.entities.protocol.Stratas; +import fr.ifremer.tutti.persistence.entities.protocol.SubStrata; +import fr.ifremer.tutti.persistence.entities.protocol.SubStratas; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; +import fr.ifremer.tutti.persistence.entities.protocol.Zone; +import fr.ifremer.tutti.persistence.entities.protocol.Zones; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -186,8 +192,10 @@ public class ProtocolPersistenceServiceImpl extends AbstractPersistenceService i // result.setGearUseFeaturePmfmId(TuttiEntities.getList(bean.getGearUseFeaturePmfmId())); result.setLengthClassesPmfmId(bean.getLengthClassesPmfmId()); result.setCaracteristicMapping(bean.getCaracteristicMapping()); + Binder<SpeciesProtocol, SpeciesProtocol> speciesProtocolBinder = BinderFactory.newBinder(SpeciesProtocol.class); + List<SpeciesProtocol> species = Lists.newArrayList(); if (!bean.isSpeciesEmpty()) { for (SpeciesProtocol speciesProtocol : bean.getSpecies()) { @@ -210,6 +218,45 @@ public class ProtocolPersistenceServiceImpl extends AbstractPersistenceService i } result.setBenthos(benthos); + Binder<Zone, Zone> zoneBinder = BinderFactory.newBinder(Zone.class); + Binder<Strata, Strata> strataBinder = BinderFactory.newBinder(Strata.class); + Binder<SubStrata, SubStrata> subStrataBinder = BinderFactory.newBinder(SubStrata.class); + + List<Zone> zones = Lists.newArrayList(); + if (!bean.isZoneEmpty()) { + for (Zone zone : bean.getZone()) { + Zone z = Zones.newZone(); + zoneBinder.copy(zone, z); + z.setId(UUID.randomUUID().toString()); + zones.add(z); + + List<Strata> stratas = Lists.newArrayList(); + if (!zone.isStrataEmpty()) { + for (Strata strata : zone.getStrata()) { + Strata s = Stratas.newStrata(); + strataBinder.copy(strata, s); + s.setId(UUID.randomUUID().toString()); + stratas.add(s); + + List<SubStrata> subStratas = Lists.newArrayList(); + if (!strata.isSubstrataEmpty()) { + for (SubStrata subStrata : strata.getSubstrata()) { + SubStrata ss = SubStratas.newSubStrata(); + subStrataBinder.copy(subStrata, ss); + ss.setId(UUID.randomUUID().toString()); + subStratas.add(ss); + } + } + + s.setSubstrata(subStratas); + } + } + + z.setStrata(stratas); + } + } + result.setZone(zones); + String id = result.getId(); File file = getProtocolFile(id); 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 f6c14e6..6ae0b2e 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 @@ -40,6 +40,7 @@ import fr.ifremer.tutti.persistence.entities.protocol.OperationFieldMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; +import fr.ifremer.tutti.persistence.entities.protocol.Zone; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; @@ -51,6 +52,7 @@ 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.ZoneEditorUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.SwingUtil; @@ -630,9 +632,13 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } }); - model.setVersion(TuttiProtocols.CURRENT_PROTOCOL_VERSION); + ZoneEditorUIModel zoneEditorUIModel = this.ui.getZoneEditor().getModel(); + zoneEditorUIModel.addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_ZONES, + evt -> getModel().setZone((Collection<Zone>) evt.getNewValue())); + +// listenModelModifiy(zoneEditorUIModel); -// dialog = new SelectSpeciesUI(false, this.ui); + model.setVersion(TuttiProtocols.CURRENT_PROTOCOL_VERSION); } 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 04d6188..2873164 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 @@ -787,6 +787,7 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, @Override public void setZone(Collection<Zone> zones) { editObject.setZone(zones); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); } @Override @@ -807,21 +808,27 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, @Override public void addZone(Zone zone) { editObject.addZone(zone); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); } @Override public void addAllZone(Collection<Zone> zones) { editObject.addAllZone(zones); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); } @Override public boolean removeZone(Zone zone) { - return editObject.removeZone(zone); + boolean result = editObject.removeZone(zone); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); + return result; } @Override public boolean removeAllZone(Collection<Zone> zones) { - return editObject.removeAllZone(zones); + boolean result = editObject.removeAllZone(zones); + firePropertyChanged(TuttiProtocol.PROPERTY_ZONE, null, getZone()); + return result; } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/SaveProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/SaveProtocolAction.java index 9615448..a4cb330 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/SaveProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/SaveProtocolAction.java @@ -28,15 +28,17 @@ import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.OperationFieldMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.protocol.Zone; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.TuttiUIContext; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolCaracteristicsRowModel; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolOperationFieldsRowModel; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.models.ZoneUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -115,6 +117,14 @@ public class SaveProtocolAction extends LongActionSupport<EditProtocolUIModel, E } bean.setBenthos(benthosProtocols); + List<Zone> zones = Lists.newArrayList(); + + for (Zone zone : model.getZone()) { + Zone z = ((ZoneUIModel) zone).toEntity(); + zones.add(z); + } + bean.setZone(zones); + if (log.isDebugEnabled()) { log.debug("protocol id to save: " + bean.getId()); } 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 1e08f5a..e26c8fb 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 @@ -4,6 +4,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; 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.Zone; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; @@ -28,7 +29,6 @@ import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.stream.Collectors; /** @@ -127,8 +127,8 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode getModel().addPropertyChangeListener(ZoneEditorUIModel.PROPERTY_ZONES, evt -> { - List<ZoneUIModel> newZones = (List<ZoneUIModel>) evt.getNewValue(); - List<ZoneUIModel> oldZones = (List<ZoneUIModel>) evt.getOldValue(); + Collection<ZoneUIModel> newZones = (Collection<ZoneUIModel>) evt.getNewValue(); + Collection<ZoneUIModel> oldZones = (Collection<ZoneUIModel>) evt.getOldValue(); Collection<ZoneUIModel> zonesToAdd = new ArrayList<>(newZones); zonesToAdd.removeAll(oldZones); @@ -223,35 +223,44 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode programStratasAndSubstratas.put(test, location); } - Collection<Zone> zones = getDataContext().getProtocol().getZone(); - Collection<Strata> protocolStratas = zones.stream() - .map(zone -> zone.getStrata()) - .flatMap(stratas -> stratas.stream()) - .collect(Collectors.toSet()); + Collection<Zone> zones; - protocolStratas.forEach(strata -> { + TuttiProtocol protocol = getDataContext().getProtocol(); + if (protocol != null) { - TuttiLocation strataLocation = strata.getLocation(); + zones = protocol.getZone(); + Collection<Strata> protocolStratas = zones.stream() + .map(zone -> zone.getStrata()) + .flatMap(stratas -> stratas.stream()) + .collect(Collectors.toSet()); - Collection<TuttiLocation> subStrataLocations = strata.getSubstrata() - .stream() - .map(subStrata -> subStrata.getLocation()) - .collect(Collectors.toSet()); + protocolStratas.forEach(strata -> { - subStrataLocations.forEach(subStrataLocation -> - programStratasAndSubstratas.remove(strataLocation, subStrataLocation)); - }); + TuttiLocation strataLocation = strata.getLocation(); + + Collection<TuttiLocation> subStrataLocations = strata.getSubstrata() + .stream() + .map(subStrata -> subStrata.getLocation()) + .collect(Collectors.toSet()); + + subStrataLocations.forEach(subStrataLocation -> + programStratasAndSubstratas.remove(strataLocation, subStrataLocation)); + }); + + } else { + zones = new HashSet<>(); + } - Collection<StrataUIModel> availableStratas = new ArrayList<>(); + 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); - List<SubStrata> subStratas = subStrataLocations.stream() + Collection<SubStrata> subStratas = subStrataLocations.stream() .map(subStrataLocation -> new SubStrataUIModel(subStrataLocation)) - .collect(Collectors.toList()); + .collect(Collectors.toSet()); strata.setSubstrata(subStratas); availableStratas.add(strata); @@ -259,13 +268,13 @@ public class ZoneEditorUIHandler extends AbstractTuttiUIHandler<ZoneEditorUIMode getModel().setAvailableStratas(availableStratas); - List<ZoneUIModel> zoneModels = zones.stream() + Collection<ZoneUIModel> zoneModels = zones.stream() .map(zone -> { ZoneUIModel zoneUIModel = new ZoneUIModel(); zoneUIModel.fromEntity(zone); return zoneUIModel; }) - .collect(Collectors.toList()); + .collect(Collectors.toSet()); getModel().setZones(zoneModels); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java index 0053939..17ca15a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/ZoneEditorUIModel.java @@ -10,6 +10,7 @@ import org.jdesktop.beans.AbstractSerializableBean; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; /** @@ -25,11 +26,11 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { public static final String PROPERTY_ZONES = "zones"; - protected final List<StrataUIModel> availableStratas = new ArrayList<>(); + protected final Collection<StrataUIModel> availableStratas = new HashSet<>(); - protected final List<ZoneUIModel> zones = new ArrayList<>(); + protected final Collection<ZoneUIModel> zones = new HashSet<>(); - public List<StrataUIModel> getAvailableStratas() { + public Collection<StrataUIModel> getAvailableStratas() { return availableStratas; } @@ -70,27 +71,27 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { } - public List<ZoneUIModel> getZones() { + public Collection<ZoneUIModel> getZones() { return zones; } - public void setZones(List<ZoneUIModel> zones) { - Object oldValue = getZones(); + public void setZones(Collection<ZoneUIModel> zones) { + Object oldValue = new HashSet<>(getZones()); this.zones.clear(); this.zones.addAll(zones); - firePropertyChange(PROPERTY_ZONES, oldValue, zones); + firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); } public void addZone(ZoneUIModel zone) { - Object oldValue = new ArrayList<>(getZones()); + Object oldValue = new HashSet<>(getZones()); zones.add(zone); - firePropertyChange(PROPERTY_ZONES, oldValue, zones); + firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); } public void removeZone(ZoneUIModel zone) { Object oldValue = new ArrayList<>(getZones()); zones.remove(zone); - firePropertyChange(PROPERTY_ZONES, oldValue, zones); + firePropertyChange(PROPERTY_ZONES, oldValue, getZones()); } public void moveStratasToZone(Collection<StrataUIModel> stratas, ZoneUIModel zone) { @@ -121,10 +122,12 @@ public class ZoneEditorUIModel extends AbstractSerializableBean { strata.removeSubstrata(subStrata); Strata zoneStrata = zone.getStrata(strata); + if (zoneStrata == null) { zoneStrata = new StrataUIModel(strata.getLocation()); zone.addStrata(zoneStrata); } + zoneStrata.addSubstrata(subStrata); if (strata.isSubstrataEmpty()) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java index 1b2dcbd..07448a2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/actions/RemoveStratasAction.java @@ -6,6 +6,7 @@ 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.content.protocol.zones.tree.StrataNode; import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.SubStrataNode; +import fr.ifremer.tutti.ui.swing.content.protocol.zones.tree.ZoneNode; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -43,7 +44,15 @@ public class RemoveStratasAction extends SimpleActionSupport<ZoneEditorUI> { Object node = treePath.getLastPathComponent(); - if (node instanceof StrataNode) { + if (node instanceof ZoneNode) { + +// ZoneUIModel zone = ((ZoneNode) node).getZone(); +// if (log.isInfoEnabled()) { +// log.info("remove zone stratas " + zone.getLabel()); +// } +// stratasToRemove.addAll(zone.getStrata()); + + } else if (node instanceof StrataNode) { StrataUIModel strata = ((StrataNode) node).getStrata(); if (log.isInfoEnabled()) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java index d833a93..122d049 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/StrataUIModel.java @@ -38,6 +38,24 @@ public class StrataUIModel extends AbstractTuttiBeanUIModel<Strata, StrataUIMode } @Override + public void fromEntity(Strata entity) { + fromBeanBinder.copyExcluding(entity, this, PROPERTY_SUBSTRATA); + entity.getSubstrata().forEach(subStrata -> { + SubStrataUIModel copy = new SubStrataUIModel(); + copy.fromEntity(subStrata); + addSubstrata(copy); + }); + } + + @Override + public Strata toEntity() { + Strata result = newEntity(); + toBeanBinder.copyExcluding(this, result, PROPERTY_SUBSTRATA); + getSubstrata().forEach(subStrata -> result.addSubstrata(((SubStrataUIModel) subStrata).toEntity())); + return result; + } + + @Override public void addAllSubstrata(Collection<SubStrata> substrata) { Object oldValue = new HashSet<>(getSubstrata()); delegate.addAllSubstrata(substrata); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java index 433bb49..e898b0a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/models/ZoneUIModel.java @@ -27,6 +27,24 @@ public class ZoneUIModel extends AbstractTuttiBeanUIModel<Zone, ZoneUIModel> imp } @Override + public void fromEntity(Zone entity) { + fromBeanBinder.copyExcluding(entity, this, PROPERTY_STRATA); + entity.getStrata().forEach(strata -> { + StrataUIModel copy = new StrataUIModel(); + copy.fromEntity(strata); + addStrata(copy); + }); + } + + @Override + public Zone toEntity() { + Zone result = newEntity(); + toBeanBinder.copyExcluding(this, result, PROPERTY_STRATA); + getStrata().forEach(strata -> result.addStrata(((StrataUIModel) strata).toEntity())); + return result; + } + + @Override public void addAllStrata(Collection<Strata> stratas) { Object oldValue = new HashSet<>(getStrata()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java index a7e9f23..158a167 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/zones/tree/ZonesTreeModel.java @@ -57,6 +57,14 @@ public class ZonesTreeModel extends DefaultTreeModel { ZoneNode zoneNode = new ZoneNode(zone); insertNodeInto(zoneNode, root, root.getChildCount()); + + Set<StrataUIModel> stratasToAdd = zone.getStrata() + .stream() + .map(strata -> (StrataUIModel) strata) + .collect(Collectors.toSet()); + + updateStratas(zoneNode, stratasToAdd, Collections.emptySet()); + }); root.sortChildren(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.