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 97d47806defd6973595b2a0ee6c793e83af99c6e Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Nov 7 12:01:16 2016 +0100 Ajout de la possibilité d'inserer les référentiels manquants lors d'un import en base centrale --- .../swing/ui/admin/export/ExportModel.java | 10 ++++++ .../swing/ui/admin/export/ExportUI.jaxx | 3 ++ .../swing/ui/admin/export/ExportUI.jcss | 5 +++ .../swing/ui/admin/export/ExportUIHandler.java | 36 ++++++++++++++++++++++ .../i18n/application-swing_en_GB.properties | 1 + .../i18n/application-swing_es_ES.properties | 1 + .../i18n/application-swing_fr_FR.properties | 1 + 7 files changed, 57 insertions(+) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportModel.java index 49cd5a6..86064d3 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportModel.java @@ -67,6 +67,8 @@ public class ExportModel extends AdminActionModel { protected ObserveSwingDataSource centralSource; + protected boolean insertMissingReferentials; + public ExportModel() { super(AdminStep.EXPORT_DATA); } @@ -176,4 +178,12 @@ public class ExportModel extends AdminActionModel { } + public boolean isInsertMissingReferentials() { + return insertMissingReferentials; + } + + public void setInsertMissingReferentials(boolean insertMissingReferentials) { + this.insertMissingReferentials = insertMissingReferentials; + firePropertyChange("insertMissingReferentials", null, insertMissingReferentials); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jaxx index 14d61f1..f55dea5 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jaxx @@ -76,6 +76,9 @@ public void updateState(WizardState newState) { <JPanel id='NEED_FIX_content'> + <JCheckBox id="insertMissingReferentials" constraints='BorderLayout.NORTH' + onStateChanged='getStepModel().setInsertMissingReferentials(((JCheckBox)event.getSource()).isSelected())'/> + <!-- la liste des trips --> <JScrollPane id='tripPane' constraints='BorderLayout.CENTER'> <JTable id='trips'/> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jcss index 9f36e0a..db6f799 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jcss @@ -44,3 +44,8 @@ columnHeaderView:{trips.getTableHeader()}; verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; } + +#insertMissingReferentials { + text:"observe.content.export.requiredinsertMissingReferentials"; + selected:{stepModel.isInsertMissingReferentials()}; +} \ No newline at end of file diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUIHandler.java index b850983..dd3fd61 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUIHandler.java @@ -22,6 +22,7 @@ package fr.ird.observe.application.swing.ui.admin.export; import com.google.common.base.Preconditions; +import com.google.common.collect.SetMultimap; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; @@ -38,7 +39,9 @@ import fr.ird.observe.application.swing.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.services.service.trip.ExportTripRequest; import fr.ird.observe.services.service.trip.ExportTripResult; import fr.ird.observe.services.service.trip.ImportTripRequest; @@ -56,6 +59,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -238,6 +242,8 @@ public class ExportUIHandler extends AdminTabUIHandler { ExportModel stepModel = model.getExportModel(); + boolean insertMissingReferentials = stepModel.isInsertMissingReferentials(); + // on filtre les marées sélectionnées pour export List<TripEntry> tripEntries = stepModel.getSelectedTrips(); @@ -254,6 +260,36 @@ public class ExportUIHandler extends AdminTabUIHandler { TripManagementService centralTripManagementService = centralDataSource.newTripManagementService(); + if (insertMissingReferentials) { + + ReferentialService centraltReferentialService = centralDataSource.newReferentialService(); + + // chargement du référentiel de la base centrale + if (log.isInfoEnabled()) { + log.info("Chargement du réferentiel de la base centrale."); + } + SetMultimap<Class<? extends ReferentialDto>, String> centralSourceReferential = + centraltReferentialService.getReferentialIds(); + + List<String> tripIds = tripEntries.stream().map(TripEntry::getTripId).collect(Collectors.toList()); + + // génération du code sql pour les référentiels manquants + if (log.isInfoEnabled()) { + log.info("Chargement de l'enveloppe de référentiels pour les " + tripIds.size() + " marée(s)."); + } + byte[] referentialsShellSqlContent = + localDataSource.newReferentialService().computeMissingReferentials(centralSourceReferential, tripIds.toArray(new String[tripIds.size()])); + + if (referentialsShellSqlContent != null) { + // insertion des référentiels manquants dans la base centrale + if (log.isInfoEnabled()) { + log.info("Insertion dans la base centrale des référentiels manquants."); + } + centraltReferentialService.insertMissingReferentials(referentialsShellSqlContent); + } + + } + for (TripEntry tripEntry : tripEntries) { ExportTripRequest exportTripRequest = new ExportTripRequest(false, tripEntry.getProgramId(), tripEntry.getTripId()); diff --git a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties index 3fafe10..f2e1f89 100644 --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -820,6 +820,7 @@ observe.content.encounter.table.encouterType.tip=Type observe.content.encounter.table.species=Species observe.content.encounter.table.species.tip=Species observe.content.encounter.title=Encounters +observe.content.export.requiredinsertMissingReferentials=Insert into central source missing referentials observe.content.floatingObject.message.creating=Creating a floating object observe.content.floatingObject.message.updating=updating a floating object observe.content.floatingObject.title=DCP diff --git a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties index 4424ee0..c20ccf1 100644 --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -820,6 +820,7 @@ observe.content.encounter.table.encouterType.tip=Tipo del encuentro observe.content.encounter.table.species=Especie observe.content.encounter.table.species.tip=Especie encuentrada observe.content.encounter.title=Encuentros +observe.content.export.requiredinsertMissingReferentials=Insérer les référentiels manquant dans la source centrale. \#TODO observe.content.floatingObject.message.creating=Objeto en proceso de creación. observe.content.floatingObject.message.updating=Se está modificando el objeto flotante actual. observe.content.floatingObject.title=Objeto flotante diff --git a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties index 2e7dc31..b96a1e1 100644 --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -820,6 +820,7 @@ observe.content.encounter.table.encouterType.tip=Type de la rencontre observe.content.encounter.table.species=Espèce observe.content.encounter.table.species.tip=Espèce rencontrée observe.content.encounter.title=Rencontres +observe.content.export.requiredinsertMissingReferentials=Insérer les référentiels manquant dans la source centrale. observe.content.floatingObject.message.creating=L'objet flottant est en cours de création. observe.content.floatingObject.message.updating=L'objet flottant est en cours de modification. observe.content.floatingObject.title=Objet flottant -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.