This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 1b633a425f4ff406834e23885a7dddce8735b62a Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Oct 26 16:12:07 2016 +0200 Chargement des toutes les marées (sinon on ne peut pas en connaitre le nombre par programme) --- .../swing/ui/tree/ObserveTreeHelper.java | 48 ++++++++++++++++++++++ .../loadors/ProgramLonglineNodeChildLoador.java | 10 +++++ .../tree/loadors/ProgramSeineNodeChildLoador.java | 10 +++++ .../swing/ui/tree/node/ProgramLonglineNode.java | 16 +++++++- .../swing/ui/tree/node/ProgramSeineNode.java | 15 ++++++- 5 files changed, 97 insertions(+), 2 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveTreeHelper.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveTreeHelper.java index 5adfc9b..4487406 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveTreeHelper.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveTreeHelper.java @@ -21,7 +21,11 @@ */ package fr.ird.observe.application.swing.ui.tree; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; +import com.google.common.collect.Multimaps; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; @@ -38,6 +42,8 @@ import fr.ird.observe.application.swing.ui.tree.loadors.RootNodeChildLoador; import fr.ird.observe.application.swing.ui.tree.loadors.RoutesNodeChildLoador; import fr.ird.observe.application.swing.ui.tree.node.AbstrctReferenceNodeSupport; import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; +import fr.ird.observe.application.swing.ui.tree.node.ProgramLonglineNode; +import fr.ird.observe.application.swing.ui.tree.node.ProgramSeineNode; import fr.ird.observe.application.swing.ui.tree.renderer.AbstractObserveTreeCellRenderer; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.IdDto; @@ -68,6 +74,7 @@ import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import java.util.Arrays; +import java.util.Enumeration; import java.util.List; import java.util.Objects; import java.util.Set; @@ -135,6 +142,47 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { DefaultTreeModel model = createModel(node); node.populateChilds(getBridge(), provider); + + if (source.canReadData()) { + // on va charger en une seule fois tous les nœuds des marées + ImmutableSet<DataReference<TripSeineDto>> tripsSeine = source.newTripSeineService().getAllTripSeine().getReferences(); + if (log.isInfoEnabled()) { + log.info("[PS] Loaded " + tripsSeine.size() + " trip(s)."); + } + ImmutableSet<DataReference<TripLonglineDto>> tripsLongline = source.newTripLonglineService().getAllTripLongline().getReferences(); + if (log.isInfoEnabled()) { + log.info("[LL] Loaded " + tripsLongline.size() + " trip(s)."); + } + ImmutableListMultimap<String, DataReference<TripSeineDto>> tripsSeineByProgramId = Multimaps.index(tripsSeine, r -> (String) r.getPropertyValue(TripSeineDto.PROPERTY_PROGRAM + "Id")); + ImmutableListMultimap<String, DataReference<TripLonglineDto>> tripsLonglineByProgramId = Multimaps.index(tripsLongline, r -> (String) r.getPropertyValue(TripSeineDto.PROPERTY_PROGRAM + "Id")); + + Enumeration<ObserveNode> children = node.children(); + while (children.hasMoreElements()) { + ObserveNode observeNode = children.nextElement(); + if (observeNode instanceof ProgramSeineNode) { + ProgramSeineNode programNode = (ProgramSeineNode) observeNode; + String programId = programNode.getEntity().getId(); + ImmutableList<DataReference<TripSeineDto>> trips = tripsSeineByProgramId.get(programId); + if (CollectionUtils.isNotEmpty(trips)) { + if (log.isInfoEnabled()) { + log.info("[PS] Add " + trips.size() + " trips to " + programNode); + } + programNode.populateChilds(trips, getBridge(), provider); + } + } + if (observeNode instanceof ProgramLonglineNode) { + ProgramLonglineNode programNode = (ProgramLonglineNode) observeNode; + String programId = programNode.getEntity().getId(); + ImmutableList<DataReference<TripLonglineDto>> trips = tripsLonglineByProgramId.get(programId); + if (CollectionUtils.isNotEmpty(trips)) { + if (log.isInfoEnabled()) { + log.info("[LL] Add " + trips.size() + " trips to " + programNode); + } + programNode.populateChilds(trips, getBridge(), provider); + } + } + } + } return model; } finally { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/loadors/ProgramLonglineNodeChildLoador.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/loadors/ProgramLonglineNodeChildLoador.java index 93a1516..8febb26 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/loadors/ProgramLonglineNodeChildLoador.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/loadors/ProgramLonglineNodeChildLoador.java @@ -22,6 +22,7 @@ package fr.ird.observe.application.swing.ui.tree.loadors; * #L% */ +import com.google.common.collect.ImmutableList; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; @@ -51,6 +52,7 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Data private static final long serialVersionUID = 1L; private boolean addChilds; + private ImmutableList<DataReference<TripLonglineDto>> trips; public ProgramLonglineNodeChildLoador() { super(TripLonglineDto.class); @@ -83,6 +85,10 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Data result = new ArrayList<>((Collection) selectionModel.getDatas(parentId)); + } else if (trips != null) { + + result = new ArrayList<>(trips); + } else { TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); @@ -112,5 +118,9 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Data } + public void setTrips(ImmutableList<DataReference<TripLonglineDto>> trips) { + this.trips = trips; + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/loadors/ProgramSeineNodeChildLoador.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/loadors/ProgramSeineNodeChildLoador.java index dde953e..c4d178f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/loadors/ProgramSeineNodeChildLoador.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/loadors/ProgramSeineNodeChildLoador.java @@ -21,6 +21,7 @@ */ package fr.ird.observe.application.swing.ui.tree.loadors; +import com.google.common.collect.ImmutableList; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.application.swing.ui.tree.node.ObserveNode; @@ -50,6 +51,7 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<DataRef private static final long serialVersionUID = 1L; private boolean addChilds; + private ImmutableList<DataReference<TripSeineDto>> trips; public ProgramSeineNodeChildLoador() { super(TripSeineDto.class); @@ -78,6 +80,10 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<DataRef result = new ArrayList<>((Collection) selectionModel.getDatas(parentId)); + } else if (trips != null) { + + result = new ArrayList<>(trips); + } else { TripSeineService tripSeineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); @@ -106,4 +112,8 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<DataRef } + public void setTrips(ImmutableList<DataReference<TripSeineDto>> trips) { + this.trips = trips; + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ProgramLonglineNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ProgramLonglineNode.java index 48d8266..97300f8 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ProgramLonglineNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ProgramLonglineNode.java @@ -22,13 +22,18 @@ package fr.ird.observe.application.swing.ui.tree.node; * #L% */ +import com.google.common.collect.ImmutableList; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.tree.ObserveDataProvider; +import fr.ird.observe.application.swing.ui.tree.ObserveTreeBridge; import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; +import fr.ird.observe.application.swing.ui.tree.loadors.ProgramLonglineNodeChildLoador; +import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.constants.GearType; +import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.service.ReferentialService; -import fr.ird.observe.application.swing.ui.tree.loadors.ProgramLonglineNodeChildLoador; /** * Created on 4/9/15. @@ -54,4 +59,13 @@ public class ProgramLonglineNode extends ReferentialReferenceNodeSupport<Program ReferentialService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newReferentialService(); return service.loadReference(ProgramDto.class, getId()); } + + public void populateChilds(ImmutableList<DataReference<TripLonglineDto>> trips, ObserveTreeBridge bridge, ObserveDataProvider provider) { + ((ProgramLonglineNodeChildLoador) childLoador).setTrips(trips); + try { + populateChilds(bridge, provider); + } finally { + ((ProgramLonglineNodeChildLoador) childLoador).setTrips(null); + } + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ProgramSeineNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ProgramSeineNode.java index 49d9e0a..ab13cd2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ProgramSeineNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/node/ProgramSeineNode.java @@ -22,13 +22,18 @@ package fr.ird.observe.application.swing.ui.tree.node; * #L% */ +import com.google.common.collect.ImmutableList; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.tree.ObserveDataProvider; +import fr.ird.observe.application.swing.ui.tree.ObserveTreeBridge; import fr.ird.observe.application.swing.ui.tree.ObserveTreeHelper; +import fr.ird.observe.application.swing.ui.tree.loadors.ProgramSeineNodeChildLoador; +import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.constants.GearType; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.services.service.ReferentialService; -import fr.ird.observe.application.swing.ui.tree.loadors.ProgramSeineNodeChildLoador; /** * Created on 4/9/15. @@ -53,4 +58,12 @@ public class ProgramSeineNode extends ReferentialReferenceNodeSupport<ProgramDto return service.loadReference(ProgramDto.class, getId()); } + public void populateChilds(ImmutableList<DataReference<TripSeineDto>> trips, ObserveTreeBridge bridge, ObserveDataProvider provider) { + ((ProgramSeineNodeChildLoador) childLoador).setTrips(trips); + try { + populateChilds(bridge, provider); + } finally { + ((ProgramSeineNodeChildLoador) childLoador).setTrips(null); + } + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.