02/26: Filtrage sur le type de modèle à utiliser pour sélectionner les marées disponibles
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 b3e25ab0c529ae32ef046ed614bb27ca28c48901 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Oct 27 10:10:29 2016 +0200 Filtrage sur le type de modèle à utiliser pour sélectionner les marées disponibles --- .../application/swing/ui/admin/AdminUIModel.java | 30 +++++++++++ .../swing/ui/storage/tabs/DataSelectionModel.java | 63 ++++++++++++++++++++-- 2 files changed, 89 insertions(+), 4 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java index c4898de..f512ad2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java @@ -31,6 +31,7 @@ import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.application.swing.ui.admin.consolidate.ConsolidateModel; import fr.ird.observe.application.swing.ui.admin.export.ExportModel; import fr.ird.observe.application.swing.ui.admin.report.ReportModel; +import fr.ird.observe.application.swing.ui.admin.report.ReportType; import fr.ird.observe.application.swing.ui.admin.save.SaveLocalModel; import fr.ird.observe.application.swing.ui.admin.synchronize.data.DataSynchroModel; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ReferentialSynchronizeMode; @@ -333,6 +334,19 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } + if (newStep == AdminStep.SELECT_DATA && containsOperation(AdminStep.REPORT)) { + + // on remplit le modèle de sélection uniquement avec le bon type de marées + ReportModel reportModel = getReportModel(); + ReportType reportType = reportModel.getReportType(); + boolean loadSeineTrip = ReportType.PS == reportType; + + ObserveSwingDataSource dataSource = getSafeLocalSource(true); + populateSelectionModel(dataSource, loadSeineTrip); + return; + + } + // on remplit le modèle de sélection if (log.isDebugEnabled()) { log.debug("Will refill selectionModel [" + newStep + "] : " + selectModel); @@ -1424,6 +1438,22 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } + public void populateSelectionModel(ObserveSwingDataSource source, boolean tripSeine) { + try { + DataSelectionModel.populate(getSelectionDataModel(), source, tripSeine); + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("could not populate selected model", e); + } + } finally { + + // on notifie que le modèle de sélection a changé + // (il faut donc recalculé l'arbre de sélection) + firePropertyChange(SELECTION_MODEL_CHANGED_PROPERTY_NAME, getSelectionDataModel()); + } + } + protected void computeExistingTrips(ObserveSwingDataSource source) { List<DataReference<?>> existingTrip = Lists.newArrayList(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/DataSelectionModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/DataSelectionModel.java index 97198c2..7b9ab3a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/DataSelectionModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/DataSelectionModel.java @@ -22,7 +22,7 @@ package fr.ird.observe.application.swing.ui.storage.tabs; import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; @@ -54,6 +54,8 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; +import static com.google.common.collect.Lists.newArrayList; + /** * Un modèle pour représenter la sélection de données. * @@ -75,7 +77,7 @@ public class DataSelectionModel implements Serializable { for (ReferentialReference<ProgramDto> program : programSet) { - List<DataReference> referenceHelper = Lists.newArrayList(); + List<DataReference> referenceHelper = newArrayList(); if (ProgramHelper.isProgramSeine(program)) { @@ -96,6 +98,59 @@ public class DataSelectionModel implements Serializable { } + public static void populate(DataSelectionModel model, ObserveSwingDataSource source, boolean tripSeine) { + + Preconditions.checkState(source.isOpen()); + + Map<ReferentialReference<ProgramDto>, List<DataReference>> datas = Maps.newHashMap(); + + Set<ReferentialReference<ProgramDto>> programSet = source.getReferentialReferences(ProgramDto.class); + + ImmutableSet<DataReference> allTrips; + if (tripSeine) { + TripSeineService tripSeineService = source.newTripSeineService(); + allTrips = (ImmutableSet) tripSeineService.getAllTripSeine().getReferences(); + + } else { + TripLonglineService tripLonglineService = source.newTripLonglineService(); + allTrips = (ImmutableSet) tripLonglineService.getAllTripLongline().getReferences(); + } + + for (ReferentialReference<ProgramDto> program : programSet) { + + List<DataReference> referenceHelper = new ArrayList<>(); + + boolean add = false; + if (tripSeine && ProgramHelper.isProgramSeine(program)) { + + for (DataReference trip : allTrips) { + String programId = (String) trip.getPropertyValue(TripSeineDto.PROPERTY_PROGRAM + "Id"); + if (program.getId().equals(programId)) { + referenceHelper.add(trip); + } + } + add = true; + + } else if (!tripSeine && ProgramHelper.isProgramLongline(program)) { + + for (DataReference trip : allTrips) { + String programId = (String) trip.getPropertyValue(TripSeineDto.PROPERTY_PROGRAM + "Id"); + if (program.getId().equals(programId)) { + referenceHelper.add(trip); + } + } + add = true; + } + + if (add) { + populate(program, referenceHelper, datas); + } + + } + model.setDatas(datas); + + } + protected static void populate(ReferentialReference<ProgramDto> program, List<DataReference> trips, Map<ReferentialReference<ProgramDto>, List<DataReference>> datas) { @@ -229,7 +284,7 @@ public class DataSelectionModel implements Serializable { public boolean containsData(ReferentialReference<ProgramDto> program, DataReference trip) { List<DataReference> datas = getDatas(program.getId()); - return datas!=null && datas.contains(trip); + return datas != null && datas.contains(trip); } public Set<DataReference> getSelectedData() { @@ -252,7 +307,7 @@ public class DataSelectionModel implements Serializable { if (datas.get(p).contains(referenceDto)) { List<DataReference> referenceHelper = result.get(p); if (referenceHelper == null) { - referenceHelper = Lists.newArrayList(); + referenceHelper = newArrayList(); result.put(p, referenceHelper); } referenceHelper.add(referenceDto); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm