Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 7e6a822d by Tony CHEMIT at 2018-09-20T20:40:35Z fix a missing decorator - - - - - 4ff135c9 by Tony CHEMIT at 2018-09-20T20:41:25Z Suppression de la configuration d'ajout de référentiels dans les deux actions de synchronisation de données + réusinage du code commun aux deux actions - - - - - 13 changed files: - client/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/admin/export/ExportModel.java - client/src/main/java/fr/ird/observe/client/ui/admin/export/ExportUI.jaxx - client/src/main/java/fr/ird/observe/client/ui/admin/export/ExportUI.jcss - client/src/main/java/fr/ird/observe/client/ui/admin/export/ExportUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java - client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroUI.jaxx - client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroUI.jcss - client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroUIHandler.java - client/src/main/resources/i18n/client_en_GB.properties - client/src/main/resources/i18n/client_es_ES.properties - client/src/main/resources/i18n/client_fr_FR.properties - dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIHandler.java ===================================== @@ -25,10 +25,16 @@ import fr.ird.observe.client.ObserveRunner; import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.db.ObserveSwingDataSource; import fr.ird.observe.client.ui.admin.resume.ShowResumeUI; +import fr.ird.observe.client.ui.content.ref.usage.UsageForDisplayUI; +import fr.ird.observe.client.ui.util.ProgressModel; +import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.dto.I18nEnumHelper; import fr.ird.observe.dto.decoration.DecoratorService; +import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.dto.reference.DataDtoReference; +import fr.ird.observe.dto.reference.DtoReference; +import fr.ird.observe.dto.reference.ReferentialDtoReference; import fr.ird.observe.dto.referential.ProgramReference; import fr.ird.observe.services.service.BabModelVersionException; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; @@ -36,14 +42,23 @@ import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.data.DeleteTripResult; import fr.ird.observe.services.service.data.ExportTripResult; import fr.ird.observe.services.service.data.ImportTripResult; +import fr.ird.observe.services.service.referential.MissingReferentialRequest; +import fr.ird.observe.services.service.referential.MissingReferentialResult; +import fr.ird.observe.services.service.referential.ReferentialService; +import fr.ird.observe.spi.map.ImmutableSetDtoMap; +import fr.ird.observe.spi.map.ImmutableSetStringMap; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardState; import org.nuiton.util.StringUtil; +import javax.swing.JOptionPane; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.Collection; +import java.util.Set; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.n; @@ -65,7 +80,7 @@ public class AdminTabUIHandler<U extends AdminTabUI> { protected AdminUI parentUI; /** Service de decoration. */ - private DecoratorService decoratorService; + protected DecoratorService decoratorService; public void beforeInit(U ui) { this.ui = ui; @@ -181,12 +196,13 @@ public class AdminTabUIHandler<U extends AdminTabUI> { } protected void logExportResult(String i18nKey, + String sourceLabel, ExportTripResult tripResult, ReferentialReferenceDecorator programDecorator, ProgramReference program, DataDtoReference trip) { - String message = sendLogResultMessage(i18nKey, programDecorator, program, trip, tripResult.getTime()); + String message = sendLogResultMessage(i18nKey, sourceLabel, programDecorator, program, trip, tripResult.getTime()); if (log.isInfoEnabled()) { log.info(message); } @@ -196,6 +212,7 @@ public class AdminTabUIHandler<U extends AdminTabUI> { protected void logImportResult(String importI18nKey, String deleteI18nKey, + String sourceLabel, ImportTripResult tripResult, ReferentialReferenceDecorator programDecorator, ProgramReference program, @@ -203,7 +220,7 @@ public class AdminTabUIHandler<U extends AdminTabUI> { if (tripResult.isDeleted()) { - String message = sendLogResultMessage(deleteI18nKey, programDecorator, program, trip, tripResult.getDeleteTime()); + String message = sendLogResultMessage(deleteI18nKey, sourceLabel, programDecorator, program, trip, tripResult.getDeleteTime()); if (log.isInfoEnabled()) { log.info(message); } @@ -212,7 +229,7 @@ public class AdminTabUIHandler<U extends AdminTabUI> { if (tripResult.isImported()) { - String message = sendLogResultMessage(importI18nKey, programDecorator, program, trip, tripResult.getImportTime()); + String message = sendLogResultMessage(importI18nKey, sourceLabel, programDecorator, program, trip, tripResult.getImportTime()); if (log.isInfoEnabled()) { log.info(message); } @@ -222,12 +239,13 @@ public class AdminTabUIHandler<U extends AdminTabUI> { } protected void logDeleteResult(String deleteI18nKey, + String sourceLabel, DeleteTripResult tripResult, ReferentialReferenceDecorator programDecorator, ProgramReference program, DataDtoReference trip) { - String message = sendLogResultMessage(deleteI18nKey, programDecorator, program, trip, tripResult.getTime()); + String message = sendLogResultMessage(deleteI18nKey, sourceLabel, programDecorator, program, trip, tripResult.getTime()); if (log.isInfoEnabled()) { log.info(message); } @@ -235,7 +253,7 @@ public class AdminTabUIHandler<U extends AdminTabUI> { } protected String sendLogResultMessage(String i18nKey, - ReferentialReferenceDecorator programDecorator, + String sourceLabel, ReferentialReferenceDecorator programDecorator, ProgramReference program, DataDtoReference trip, long time) { @@ -244,9 +262,60 @@ public class AdminTabUIHandler<U extends AdminTabUI> { String programStr = programDecorator.toString(program); String tripStr = decoratorService.getDataReferenceDecorator(trip.getReferenceType()).toString(trip); String timeStr = StringUtil.convertTime(time); - String message = StringUtils.leftPad(timeStr, 20) + " - " + t(i18nKey, programStr, tripStr); + String message = StringUtils.leftPad(timeStr, 20) + " - " + t(i18nKey, sourceLabel, programStr, tripStr); sendMessage(message); return message; } + protected WizardState prepareCopy(ProgressModel progressModel, ObserveSwingDataSource centralSource, String centralSourceLabel, ObserveSwingDataSource targetSource, String targetSourceLabel, Collection<String> idsToCopy) { + + progressModel.incrementsCurrentStep(); + + ReferentialService targetReferentialService = targetSource.getReferentialService(); + ImmutableSetStringMap targetSourceReferential = targetReferentialService.getReferentialIds(); + MissingReferentialRequest missingReferentialRequest = MissingReferentialRequest.of(targetSourceReferential, idsToCopy.toArray(new String[0])); + MissingReferentialResult missingReferentialResult = centralSource.getReferentialService().computeMissingReferential(missingReferentialRequest); + + progressModel.incrementsCurrentStep(); + + if (missingReferentialResult == null) { + progressModel.incrementsCurrentStep(); + return WizardState.SUCCESSED; + } + + // there is some referential to add to target source + + String message = t("observe.message.show.usage.for.missingReferentials2", centralSourceLabel, targetSourceLabel); + + ImmutableSetDtoMap<ReferentialDtoReference> usages = centralSource.getReferentialMap(missingReferentialResult.getMissingIds()); + UsageForDisplayUI usagesUI = UsageForDisplayUI.build(message, usages); + + int response = UIHelper.askUser(null, + t("observe.title.can.not.export.data2", targetSourceLabel), + usagesUI, + JOptionPane.WARNING_MESSAGE, + new Object[]{ + t("observe.choice.confirm.insert"), + t("observe.choice.cancel")}, + 0); + + if (response != 0) { + return WizardState.CANCELED; + } + + log.info(String.format("Base «%s» - Insertion des référentiels manquants.", targetSourceLabel)); + + for (Class<? extends ReferentialDtoReference> key : usages.referentialReferenceTypes()) { + Set<? extends ReferentialDtoReference> references = usages.get(key); + String type = t(ObserveI18nDecoratorHelper.getTypePluralI18nKey(key)); + sendMessage(t("observe.actions.exportData.message.add.missing.referentials2", targetSourceLabel, references.size(), type)); + Decorator decorator = decoratorService.getReferenceDecorator(key); + for (DtoReference reference : references) { + sendMessage(t("observe.actions.exportData.message.add.missing.referential", decorator.toString(reference))); + } + } + progressModel.incrementsCurrentStep(); + targetReferentialService.insertMissingReferential(missingReferentialResult.getSqlCode()); + return WizardState.SUCCESSED; + } } ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/export/ExportModel.java ===================================== @@ -61,7 +61,6 @@ public class ExportModel extends AdminActionModel { protected ObserveSwingDataSource centralSource; - protected boolean insertMissingReferentials; private final ProgressModel progressModel = new ProgressModel(); public ExportModel() { @@ -129,15 +128,6 @@ public class ExportModel extends AdminActionModel { } - public boolean isInsertMissingReferentials() { - return insertMissingReferentials; - } - - public void setInsertMissingReferentials(boolean insertMissingReferentials) { - this.insertMissingReferentials = insertMissingReferentials; - firePropertyChange("insertMissingReferential", null, insertMissingReferentials); - } - public boolean validate(AdminUIModel uiModel) { return uiModel.validate(AdminStep.SELECT_DATA) && uiModel.getStepState(step) == WizardState.SUCCESSED; } ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/export/ExportUI.jaxx ===================================== @@ -64,9 +64,6 @@ 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'/> ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/export/ExportUI.jcss ===================================== @@ -46,8 +46,3 @@ columnHeaderView:{trips.getTableHeader()}; verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; } - -#insertMissingReferentials { - text:"observe.action.export.requiredInsertMissingReferentials"; - selected:{stepModel.isInsertMissingReferentials()}; -} ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/export/ExportUIHandler.java ===================================== @@ -6,15 +6,15 @@ * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the + * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public + * + * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% @@ -27,46 +27,35 @@ import fr.ird.observe.client.ui.ObserveKeyStrokes; import fr.ird.observe.client.ui.admin.AdminStep; import fr.ird.observe.client.ui.admin.AdminTabUIHandler; import fr.ird.observe.client.ui.admin.AdminUIModel; +import fr.ird.observe.client.ui.admin.config.ConfigModel; import fr.ird.observe.client.ui.admin.config.ConfigUI; -import fr.ird.observe.client.ui.content.ref.usage.UsageForDisplayUI; import fr.ird.observe.client.ui.tree.selection.SelectionTreeModel; import fr.ird.observe.client.ui.util.ProgressModel; import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.dto.data.longline.TripLonglineReference; import fr.ird.observe.dto.data.seine.TripSeineReference; import fr.ird.observe.dto.decoration.DecoratorService; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; -import fr.ird.observe.dto.reference.DtoReference; -import fr.ird.observe.dto.reference.ReferentialDtoReference; import fr.ird.observe.dto.referential.ProgramReference; import fr.ird.observe.services.service.data.ExportTripRequest; import fr.ird.observe.services.service.data.ExportTripResult; import fr.ird.observe.services.service.data.ImportTripRequest; import fr.ird.observe.services.service.data.ImportTripResult; import fr.ird.observe.services.service.data.TripManagementService; -import fr.ird.observe.services.service.referential.MissingReferentialRequest; -import fr.ird.observe.services.service.referential.MissingReferentialResult; -import fr.ird.observe.services.service.referential.ReferentialService; -import fr.ird.observe.spi.map.ImmutableSetDtoMap; -import fr.ird.observe.spi.map.ImmutableSetStringMap; import org.apache.commons.collections4.CollectionUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.runtime.spi.UIHandler; import org.nuiton.jaxx.runtime.swing.editor.MyDefaultCellEditor; import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardState; -import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Date; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.n; @@ -157,18 +146,14 @@ public class ExportUIHandler extends AdminTabUIHandler<ExportUI> implements UIHa } } - public void doPrepareAction() { - + void doPrepareAction() { addAdminWorker(ui.getPrepareAction().getToolTipText(), this::doPrepareAction0); } public void doStartAction() { - int[] rows = ui.getTripsModel().getSelected(); ui.getModel().getExportModel().setExportDataSelectedIndex(rows); - addAdminWorker(ui.getStartAction().getToolTipText(), this::doStartAction0); - } private WizardState doPrepareAction0() throws Exception { @@ -232,8 +217,9 @@ public class ExportUIHandler extends AdminTabUIHandler<ExportUI> implements UIHa AdminUIModel model = ui.getModel(); ExportModel stepModel = model.getExportModel(); - - boolean insertMissingReferentials = stepModel.isInsertMissingReferentials(); + ConfigModel configModel = model.getConfigModel(); + String sourceSourceLabel = configModel.getLocalSourceModel().getLabelWithUrl().substring(configModel.getLocalSourceModel().getLabel().length()); + String centralSourceLabel = configModel.getCentralSourceModel().getLabelWithUrl().substring(configModel.getCentralSourceModel().getLabel().length()); // on filtre les marées sélectionnées pour export List<TripEntry> tripEntries = stepModel.getSelectedTrips(); @@ -243,10 +229,7 @@ public class ExportUIHandler extends AdminTabUIHandler<ExportUI> implements UIHa DecoratorService decoratorService = getDecoratorService(); ReferentialReferenceDecorator<ProgramReference> programDecorator = decoratorService.getReferentialReferenceDecorator(ProgramReference.class); - int stepCount = 2 + 2 * tripEntries.size(); - if (insertMissingReferentials) { - stepCount++; - } + int stepCount = 4 + 2 * tripEntries.size(); ProgressModel progressModel = stepModel.getProgressModel(); progressModel.setStepsCount(stepCount); @@ -261,71 +244,11 @@ public class ExportUIHandler extends AdminTabUIHandler<ExportUI> implements UIHa TripManagementService centralTripManagementService = centralDataSource.getTripManagementService(); - ReferentialService centralReferentialService = centralDataSource.getReferentialService(); - - // chargement du référentiel de la base centrale - if (log.isInfoEnabled()) { - log.info("Chargement du réferentiel de la base centrale."); - } - ImmutableSetStringMap centralSourceReferential = centralReferentialService.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)."); - } - MissingReferentialRequest missingReferentialRequest = MissingReferentialRequest.of(centralSourceReferential, tripIds.toArray(new String[0])); - MissingReferentialResult result = - localDataSource.getReferentialService().computeMissingReferential(missingReferentialRequest); - - if (!insertMissingReferentials && result != null) { - - // l'export n'est pas possible - UIHelper.displayWarning(t("observe.title.can.not.export.data"), t("observe.actions.exportData.error.missingReferentialsId")); - sendMessage(t("observe.actions.exportData.error.missingReferentialsId")); - return WizardState.CANCELED; - } - - if (insertMissingReferentials && result != null) { - - String message = t("observe.message.show.usage.for.missingReferentials"); - - ImmutableSetDtoMap<ReferentialDtoReference> usages = localDataSource.getReferentialMap(result.getMissingIds()); - UsageForDisplayUI usagesUI = UsageForDisplayUI.build(message, usages); - - int reponse = UIHelper.askUser(null, - t("observe.title.can.not.export.data"), - usagesUI, - JOptionPane.WARNING_MESSAGE, - new Object[]{ - t("observe.choice.confirm.insert"), - t("observe.choice.cancel")}, - 0); - - if (reponse != 0) { - - return WizardState.CANCELED; - } - - // 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."); - } - - for (Class<? extends ReferentialDtoReference> key : usages.referentialReferenceTypes()) { - Set<? extends ReferentialDtoReference> references = usages.get(key); - String type = t(ObserveI18nDecoratorHelper.getTypePluralI18nKey(key)); - sendMessage(t("observe.actions.exportData.message.add.missing.referentials", type, references.size())); - Decorator decorator = decoratorService.getReferenceDecorator(key); - for (DtoReference reference : references) { - sendMessage(t("observe.actions.exportData.message.add.missing.referential", decorator.toString(reference))); - } - } - - progressModel.incrementsCurrentStep(); - centralReferentialService.insertMissingReferential(result.getSqlCode()); - + WizardState result = prepareCopy(progressModel, localDataSource, sourceSourceLabel, centralDataSource, centralSourceLabel, tripIds); + if (WizardState.CANCELED.equals(result)) { + return result; } for (TripEntry tripEntry : tripEntries) { @@ -333,7 +256,8 @@ public class ExportUIHandler extends AdminTabUIHandler<ExportUI> implements UIHa progressModel.incrementsCurrentStep(); ExportTripRequest exportTripRequest = new ExportTripRequest(false, tripEntry.getProgramId(), tripEntry.getTripId()); ExportTripResult exportTripResult = localTripManagementService.exportTrip(exportTripRequest); - logExportResult(n("observe.actions.exportData.message.result.export.trip"), + logExportResult(n("observe.actions.synchro.data.result.export.trip"), + sourceSourceLabel, exportTripResult, programDecorator, tripEntry.getProgram(), @@ -342,8 +266,9 @@ public class ExportUIHandler extends AdminTabUIHandler<ExportUI> implements UIHa progressModel.incrementsCurrentStep(); ImportTripRequest importTripRequest = new ImportTripRequest(exportTripResult); ImportTripResult importTripResult = centralTripManagementService.importTrip(importTripRequest); - logImportResult(n("observe.actions.exportData.message.result.import.trip"), - n("observe.actions.exportData.message.result.delete.trip"), + logImportResult(n("observe.actions.synchro.data.result.import.trip"), + n("observe.actions.synchro.data.result.delete.trip"), + centralSourceLabel, importTripResult, programDecorator, tripEntry.getProgram(), ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java ===================================== @@ -64,7 +64,7 @@ public class DataSynchroModel extends AdminActionModel { /** les données sélectionnées sur le panneau de droite. */ protected SelectionTreeModel rightSelectionDataModel; - protected boolean insertMissingReferentials; + protected final DefaultListModel<DataSynchronizeTaskSupport> tasks; private final ProgressModel progressModel = new ProgressModel(); @@ -131,14 +131,6 @@ public class DataSynchroModel extends AdminActionModel { return rightSelectionDataModel; } - public boolean isInsertMissingReferentials() { - return insertMissingReferentials; - } - - public void setInsertMissingReferentials(boolean insertMissingReferentials) { - this.insertMissingReferentials = insertMissingReferentials; - } - public void populateLeftSelectionModel() { populateSelectionModel(leftSource, leftSelectionDataModel, LEFT_SELECTION_MODEL_CHANGED_PROPERTY_NAME); } ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroUI.jaxx ===================================== @@ -49,9 +49,6 @@ </Table> </JPanel> <JPanel id='NEED_FIX_content'> - <JCheckBox id="insertMissingReferentials" constraints='BorderLayout.NORTH' - onStateChanged='getStepModel().setInsertMissingReferentials(((JCheckBox)event.getSource()).isSelected())'/> - <JSplitPane id="contentSplitPane" constraints='BorderLayout.CENTER'> <Table id='contentNorth' fill="both" weighty="1"> <row> ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroUI.jcss ===================================== @@ -45,11 +45,6 @@ mnemonic:Q; } -#insertMissingReferentials { - text:"observe.action.export.requiredInsertMissingReferentials"; - selected:{stepModel.isInsertMissingReferentials()}; -} - #leftTree { minimumSize:{UIHelper.newMinDimension()}; font-size:11; ===================================== client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroUIHandler.java ===================================== @@ -33,17 +33,12 @@ import fr.ird.observe.client.ui.admin.synchronize.data.task.CopyToRightDataSynch import fr.ird.observe.client.ui.admin.synchronize.data.task.DataSynchronizeTaskSupport; import fr.ird.observe.client.ui.admin.synchronize.data.task.DeleteFromLeftDataSynchronizeTask; import fr.ird.observe.client.ui.admin.synchronize.data.task.DeleteFromRightDataSynchronizeTask; -import fr.ird.observe.client.ui.content.ref.usage.UsageForDisplayUI; import fr.ird.observe.client.ui.tree.selection.SelectionTree; import fr.ird.observe.client.ui.tree.selection.SelectionTreeModel; import fr.ird.observe.client.ui.util.ProgressModel; -import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.dto.decoration.DecoratorService; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.dto.reference.DataDtoReference; -import fr.ird.observe.dto.reference.DtoReference; -import fr.ird.observe.dto.reference.ReferentialDtoReference; import fr.ird.observe.dto.referential.ProgramReference; import fr.ird.observe.services.service.data.DeleteTripRequest; import fr.ird.observe.services.service.data.DeleteTripResult; @@ -52,19 +47,12 @@ import fr.ird.observe.services.service.data.ExportTripResult; import fr.ird.observe.services.service.data.ImportTripRequest; import fr.ird.observe.services.service.data.ImportTripResult; import fr.ird.observe.services.service.data.TripManagementService; -import fr.ird.observe.services.service.referential.MissingReferentialRequest; -import fr.ird.observe.services.service.referential.MissingReferentialResult; -import fr.ird.observe.services.service.referential.ReferentialService; -import fr.ird.observe.spi.map.ImmutableSetDtoMap; -import fr.ird.observe.spi.map.ImmutableSetStringMap; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.runtime.spi.UIHandler; import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardState; import javax.swing.DefaultListModel; -import javax.swing.JOptionPane; import javax.swing.border.TitledBorder; import java.awt.Color; import java.util.LinkedHashSet; @@ -84,6 +72,8 @@ import static org.nuiton.i18n.I18n.t; public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> implements UIHandler<DataSynchroUI> { private static final Logger log = LogManager.getLogger(DataSynchroUIHandler.class); + private String leftSourceLabel; + private String rightSourceLabel; @Override public void afterInit(DataSynchroUI ui) { @@ -143,7 +133,7 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple addAdminWorker(getUi().getStartAction().getToolTipText(), this::doStartAction0); } - public void addCopyToLeftTasks() { + void addCopyToLeftTasks() { SelectionTreeModel rightSelectionDataModel = getStepModel().getRightSelectionDataModel(); SelectionTreeModel leftSelectionDataModel = getStepModel().getLeftSelectionDataModel(); Map<ProgramReference, List<DataDtoReference<?, ?>>> selectedDataByProgram = rightSelectionDataModel.getSelectedDataByProgram(); @@ -160,7 +150,7 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple } } - public void addCopyToRightTasks() { + void addCopyToRightTasks() { SelectionTreeModel leftSelectionDataModel = getStepModel().getLeftSelectionDataModel(); SelectionTreeModel rightSelectionDataModel = getStepModel().getRightSelectionDataModel(); Map<ProgramReference, List<DataDtoReference<?, ?>>> selectedDataByProgram = leftSelectionDataModel.getSelectedDataByProgram(); @@ -177,7 +167,7 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple } } - public void addDeleteFromLeftTasks() { + void addDeleteFromLeftTasks() { SelectionTreeModel selectionDataModel = getStepModel().getLeftSelectionDataModel(); Map<ProgramReference, List<DataDtoReference<?, ?>>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); selectionDataModel.removeAllSelectedData(); @@ -189,7 +179,7 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple } } - public void addDeleteFromRightTasks() { + void addDeleteFromRightTasks() { SelectionTreeModel selectionDataModel = getStepModel().getRightSelectionDataModel(); Map<ProgramReference, List<DataDtoReference<?, ?>>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); selectionDataModel.removeAllSelectedData(); @@ -201,7 +191,24 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple } } - public void doExecuteAction() { + public String getLeftSourceLabel() { + if (leftSourceLabel == null) { + ConfigModel configModel = getModel().getConfigModel(); + leftSourceLabel = configModel.getLocalSourceModel().getLabelWithUrl().substring(configModel.getLocalSourceModel().getLabel().length()); + } + return leftSourceLabel; + } + + public String getRightSourceLabel() { + if (rightSourceLabel == null) { + ConfigModel configModel = getModel().getConfigModel(); + rightSourceLabel = configModel.getCentralSourceModel().getLabelWithUrl().substring(configModel.getCentralSourceModel().getLabel().length()); + } + return rightSourceLabel; + } + + void doExecuteAction() { + leftSourceLabel = rightSourceLabel = null; addAdminWorker(getUi().getStartAction().getToolTipText(), this::doExecuteAction0); } @@ -211,6 +218,9 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple DataSynchroModel stepModel = getStepModel(); ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); + String leftSourceLabel = getLeftSourceLabel(); + String rightSourceLabel = getRightSourceLabel(); + ConfigModel configModel = getModel().getConfigModel(); ObserveSwingDataSource leftSource = configModel.getSafeLocalSource(true); @@ -220,10 +230,9 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple stepModel.setRightSource(rightSource); stepModel.populateLeftSelectionModel(); - String leftLabelWithUrl = configModel.getLocalSourceModel().getLabelWithUrl(); - sendMessage(t("observe.actions.synchro.data.message.data.loaded", leftLabelWithUrl)); + sendMessage(t("observe.actions.synchro.data.message.data.loaded", leftSourceLabel)); - TitledBorder leftBorder = new TitledBorder(leftLabelWithUrl); + TitledBorder leftBorder = new TitledBorder(leftSourceLabel); boolean leftCanWriteData = configModel.getLocalSourceModel().getDataSourceInformation().canWriteData(); leftBorder.setTitleColor(leftCanWriteData ? Color.GREEN : Color.RED); tabUI.getLeftTreePane().setBorder(leftBorder); @@ -234,10 +243,9 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple configUI.getLocalSourceConfig().setBorder(leftBorder); stepModel.populateRightSelectionModel(); - String rightLabelWithUrl = configModel.getCentralSourceModel().getLabelWithUrl(); - sendMessage(t("observe.actions.synchro.data.message.data.loaded", rightLabelWithUrl)); + sendMessage(t("observe.actions.synchro.data.message.data.loaded", rightSourceLabel)); - TitledBorder rightBorder = new TitledBorder(rightLabelWithUrl); + TitledBorder rightBorder = new TitledBorder(rightSourceLabel); boolean rightCanWriteData = configModel.getCentralSourceModel().getDataSourceInformation().canWriteData(); rightBorder.setTitleColor(rightCanWriteData ? Color.GREEN : Color.RED); tabUI.getRightTreePane().setBorder(rightBorder); @@ -254,9 +262,11 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple private WizardState doExecuteAction0() { ObserveSwingDataSource leftSource = getStepModel().getLeftSource(); - ObserveSwingDataSource rightSource = getStepModel().getRightSource(); + String leftSourceLabel = getLeftSourceLabel(); + String rightSourceLabel = getRightSourceLabel(); + DefaultListModel<DataSynchronizeTaskSupport> tasks = getStepModel().getTasks(); int size = tasks.size(); @@ -289,131 +299,19 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple progressModel.setStepsCount(stepsCount); DecoratorService decoratorService = getDecoratorService(); - boolean insertMissingReferentials = getStepModel().isInsertMissingReferentials(); if (copyToLeft) { - // generate add missing referential to left - - progressModel.incrementsCurrentStep(); - - ReferentialService leftReferentialService = leftSource.getReferentialService(); - ImmutableSetStringMap leftSourceReferential = leftReferentialService.getReferentialIds(); - MissingReferentialRequest leftMissingReferentialRequest = MissingReferentialRequest.of(leftSourceReferential, idsToCopyToLeft.toArray(new String[0])); - MissingReferentialResult leftMissingReferentialResult = - rightSource.getReferentialService().computeMissingReferential(leftMissingReferentialRequest); - - progressModel.incrementsCurrentStep(); - - if (!insertMissingReferentials && leftMissingReferentialResult != null) { - - // l'export n'est pas possible - UIHelper.displayWarning(t("observe.title.can.not.export.data.left"), t("observe.actions.exportData.error.missingReferentialsId.left")); - sendMessage(t("observe.actions.exportData.error.missingReferentialsId.left")); - return WizardState.CANCELED; - } - - if (leftMissingReferentialResult == null) { - progressModel.incrementsCurrentStep(); - } else { - - // there is some referential to add to left source - - String message = t("observe.message.show.usage.for.missingReferentials.left"); - - ImmutableSetDtoMap<ReferentialDtoReference> usages = rightSource.getReferentialMap(leftMissingReferentialResult.getMissingIds()); - UsageForDisplayUI usagesUI = UsageForDisplayUI.build(message, usages); - - int reponse = UIHelper.askUser(null, - t("observe.title.can.not.export.data.left"), - usagesUI, - JOptionPane.WARNING_MESSAGE, - new Object[]{ - t("observe.choice.confirm.insert"), - t("observe.choice.cancel")}, - 0); - - if (reponse != 0) { - - return WizardState.CANCELED; - } - - // insertion des référentiels manquants dans la base centrale - log.info("Insertion dans la base de gauche des référentiels manquants."); - - for (Class<? extends ReferentialDtoReference> key : usages.referentialReferenceTypes()) { - Set<? extends ReferentialDtoReference> references = usages.get(key); - String type = t(ObserveI18nDecoratorHelper.getTypePluralI18nKey(key)); - sendMessage(t("observe.actions.exportData.message.add.missing.referentials.left", references.size(), type)); - Decorator decorator = decoratorService.getReferenceDecorator(key); - for (DtoReference reference : references) { - sendMessage(t("observe.actions.exportData.message.add.missing.referential", decorator.toString(reference))); - } - } - progressModel.incrementsCurrentStep(); - leftReferentialService.insertMissingReferential(leftMissingReferentialResult.getSqlCode()); + WizardState result = prepareCopy(progressModel, rightSource, rightSourceLabel, leftSource, leftSourceLabel, idsToCopyToLeft); + if (WizardState.CANCELED.equals(result)) { + return result; } } if (copyToRight) { - // generate add missing referential to right - - progressModel.incrementsCurrentStep(); - - ReferentialService rightReferentialService = rightSource.getReferentialService(); - ImmutableSetStringMap rightSourceReferential = rightReferentialService.getReferentialIds(); - MissingReferentialRequest rightMissingReferentialRequest = MissingReferentialRequest.of(rightSourceReferential, idsToCopyToRight.toArray(new String[0])); - MissingReferentialResult rightMissingReferentialResult = - leftSource.getReferentialService().computeMissingReferential(rightMissingReferentialRequest); - - progressModel.incrementsCurrentStep(); - - if (!insertMissingReferentials && rightMissingReferentialResult != null) { - - // l'export n'est pas possible - UIHelper.displayWarning(t("observe.title.can.not.export.data.right"), t("observe.actions.exportData.error.missingReferentialsId.right")); - sendMessage(t("observe.actions.exportData.error.missingReferentialsId.right")); - return WizardState.CANCELED; - } - - if (rightMissingReferentialResult == null) { - progressModel.incrementsCurrentStep(); - } else { - - // there is some referential to add to left source - - String message = t("observe.message.show.usage.for.missingReferentials.right"); - - ImmutableSetDtoMap<ReferentialDtoReference> usages = leftSource.getReferentialMap(rightMissingReferentialResult.getMissingIds()); - UsageForDisplayUI usagesUI = UsageForDisplayUI.build(message, usages); - - int reponse = UIHelper.askUser(null, - t("observe.title.can.not.export.data.right"), - usagesUI, - JOptionPane.WARNING_MESSAGE, - new Object[]{ - t("observe.choice.confirm.insert"), - t("observe.choice.cancel")}, - 0); - - if (reponse != 0) { - - return WizardState.CANCELED; - } - - log.info("Insertion dans la base de droite des référentiels manquants."); - - for (Class<? extends ReferentialDtoReference> key : usages.referentialReferenceTypes()) { - Set<? extends ReferentialDtoReference> references = usages.get(key); - String type = t(ObserveI18nDecoratorHelper.getTypePluralI18nKey(key)); - sendMessage(t("observe.actions.exportData.message.add.missing.referentials.right", references.size(), type)); - Decorator decorator = decoratorService.getReferenceDecorator(key); - for (DtoReference reference : references) { - sendMessage(t("observe.actions.exportData.message.add.missing.referential", decorator.toString(reference))); - } - } - progressModel.incrementsCurrentStep(); - rightReferentialService.insertMissingReferential(rightMissingReferentialResult.getSqlCode()); + WizardState result = prepareCopy(progressModel, leftSource, leftSourceLabel, rightSource, rightSourceLabel, idsToCopyToRight); + if (WizardState.CANCELED.equals(result)) { + return result; } } @@ -427,105 +325,34 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple DataSynchronizeTaskSupport task = tasks.getElementAt(i); ProgramReference program = task.getProgram(); - String programId = program.getId(); - String programStr = programDecorator.toString(program); DataDtoReference trip = task.getTrip(); - String tripId = trip.getId(); - String tripStr = decoratorService.getDataReferenceDecorator(trip.getReferenceType()).toString(trip); progressModel.incrementsCurrentStep(); if (task instanceof DeleteFromLeftDataSynchronizeTask) { - - sendMessage(t("observe.actions.synchro.data.prepare.deleteFromLeftTask", programStr, tripStr)); - - DeleteTripRequest deleteTripRequest = new DeleteTripRequest(programId, tripId); - DeleteTripResult deleteTripResult = leftTripManagementService.deleteTrip(deleteTripRequest); - logDeleteResult(n("observe.actions.synchro.data.result.delete.left.trip"), - deleteTripResult, - programDecorator, - program, - trip); - if (leftSource.isLocal()) { - leftSource.setModified(true); - } + executeDeleteTask(programDecorator, program, trip, + leftSource, leftSourceLabel, leftTripManagementService); continue; - } if (task instanceof DeleteFromRightDataSynchronizeTask) { - - sendMessage(t("observe.actions.synchro.data.prepare.deleteFromRightTask", programStr, tripStr)); - - DeleteTripRequest deleteTripRequest = new DeleteTripRequest(programId, tripId); - DeleteTripResult deleteTripResult = rightTripManagementService.deleteTrip(deleteTripRequest); - logDeleteResult(n("observe.actions.synchro.data.result.delete.right.trip"), - deleteTripResult, - programDecorator, - program, - trip); - if (rightSource.isLocal()) { - rightSource.setModified(true); - } + executeDeleteTask(programDecorator, program, trip, + rightSource, rightSourceLabel, rightTripManagementService); continue; - } if (task instanceof CopyToLeftDataSynchronizeTask) { - - sendMessage(t("observe.actions.synchro.data.prepare.copyToLeftTask", programStr, tripStr)); - - ExportTripRequest exportTripRequest = new ExportTripRequest(!leftSource.isLocal(), programId, tripId); - ExportTripResult exportTripResult = rightTripManagementService.exportTrip(exportTripRequest); - logExportResult(n("observe.actions.synchro.data.result.export.right.trip"), - exportTripResult, - programDecorator, - program, - trip); - - progressModel.incrementsCurrentStep(); - ImportTripRequest importTripRequest = new ImportTripRequest(exportTripResult); - ImportTripResult importTripResult = leftTripManagementService.importTrip(importTripRequest); - logImportResult(n("observe.actions.synchro.data.result.import.left.trip"), - n("observe.actions.synchro.data.result.delete.left.trip"), - importTripResult, - programDecorator, - program, - trip); - - if (leftSource.isLocal()) { - leftSource.setModified(true); - } + executeCopyTask(progressModel, programDecorator, program, trip, + rightSource, rightSourceLabel, rightTripManagementService, + leftSource, leftSourceLabel, leftTripManagementService); continue; - } if (task instanceof CopyToRightDataSynchronizeTask) { - - sendMessage(t("observe.actions.synchro.data.prepare.copyToRightTask", programStr, tripStr)); - - ExportTripRequest exportTripRequest = new ExportTripRequest(!rightSource.isLocal(), programId, tripId); - ExportTripResult exportTripResult = leftTripManagementService.exportTrip(exportTripRequest); - logExportResult(n("observe.actions.synchro.data.result.export.left.trip"), - exportTripResult, - programDecorator, - program, - trip); - - progressModel.incrementsCurrentStep(); - ImportTripRequest importTripRequest = new ImportTripRequest(exportTripResult); - ImportTripResult importTripResult = rightTripManagementService.importTrip(importTripRequest); - logImportResult(n("observe.actions.synchro.data.result.import.right.trip"), - n("observe.actions.synchro.data.result.delete.right.trip"), - importTripResult, - programDecorator, - program, - trip); - if (rightSource.isLocal()) { - rightSource.setModified(true); - } - + executeCopyTask(progressModel, programDecorator, program, trip, + leftSource, leftSourceLabel, leftTripManagementService, + rightSource, rightSourceLabel, rightTripManagementService); } } @@ -534,4 +361,71 @@ public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> imple } + private void executeDeleteTask(ReferentialReferenceDecorator<ProgramReference> programDecorator, + ProgramReference program, DataDtoReference trip, + ObserveSwingDataSource targetSource, String targetSourceLabel, TripManagementService targetTripManagementService) { + + String programId = program.getId(); + String programStr = programDecorator.toString(program); + + String tripId = trip.getId(); + @SuppressWarnings("unchecked") + String tripStr = decoratorService.getDataReferenceDecorator(trip.getReferenceType()).toString(trip); + + + sendMessage(t("observe.actions.synchro.data.prepare.deleteTask", targetSourceLabel, programStr, tripStr)); + + DeleteTripRequest deleteTripRequest = new DeleteTripRequest(programId, tripId); + DeleteTripResult deleteTripResult = targetTripManagementService.deleteTrip(deleteTripRequest); + logDeleteResult(n("observe.actions.synchro.data.result.delete.trip"), + targetSourceLabel, + deleteTripResult, + programDecorator, + program, + trip); + if (targetSource.isLocal()) { + targetSource.setModified(true); + } + + } + + private void executeCopyTask(ProgressModel progressModel, + ReferentialReferenceDecorator<ProgramReference> programDecorator, + ProgramReference program, DataDtoReference trip, + ObserveSwingDataSource centralSource, String centralSourceLabel, TripManagementService centralTripManagementService, + ObserveSwingDataSource targetSource, String targetSourceLabel, TripManagementService targetTripManagementService) { + + String programId = program.getId(); + String programStr = programDecorator.toString(program); + String tripId = trip.getId(); + @SuppressWarnings("unchecked") + String tripStr = decoratorService.getDataReferenceDecorator(trip.getReferenceType()).toString(trip); + + sendMessage(t("observe.actions.synchro.data.prepare.copyToTask", targetSourceLabel, programStr, tripStr)); + + ExportTripRequest exportTripRequest = new ExportTripRequest(!targetSource.isLocal(), programId, tripId); + ExportTripResult exportTripResult = centralTripManagementService.exportTrip(exportTripRequest); + logExportResult(n("observe.actions.synchro.data.result.export.trip"), + centralSourceLabel, + exportTripResult, + programDecorator, + program, + trip); + + progressModel.incrementsCurrentStep(); + ImportTripRequest importTripRequest = new ImportTripRequest(exportTripResult); + ImportTripResult importTripResult = targetTripManagementService.importTrip(importTripRequest); + logImportResult(n("observe.actions.synchro.data.result.import.trip"), + n("observe.actions.synchro.data.result.delete.trip"), + targetSourceLabel, + importTripResult, + programDecorator, + program, + trip); + + if (targetSource.isLocal()) { + targetSource.setModified(true); + } + } + } ===================================== client/src/main/resources/i18n/client_en_GB.properties ===================================== @@ -155,8 +155,7 @@ observe.actions.exportData.error.missingReferentialsId.left=Can't export data, t observe.actions.exportData.error.missingReferentialsId.right=Can't export data, there is some missing referentials in right source and you did not select insert option. observe.actions.exportData.message.add.missing.referential=\t%s observe.actions.exportData.message.add.missing.referentials=Insert %s missing referentials of type «%s» -observe.actions.exportData.message.add.missing.referentials.left=Insert %s missing referentials of type «%s» in left source -observe.actions.exportData.message.add.missing.referentials.right=Insert %s missing referentials of type «%s» in right source +observe.actions.exportData.message.add.missing.referentials2=Database «%s» - Insert %s missing referentials of type «%s» observe.actions.exportData.message.not.possible=Export is not possible (see above messages) observe.actions.exportData.message.operation.needFix=Select data to export. observe.actions.exportData.message.prepare.data=Prepare data to export... @@ -206,17 +205,12 @@ observe.actions.synchro.data.deleteFromLeft.tip=Delete selected trip(s) from lef observe.actions.synchro.data.deleteFromRight.tip=Delete selected trip(s) from right database observe.actions.synchro.data.description=Advanced data management observe.actions.synchro.data.launch.operation=Get data fro databases -observe.actions.synchro.data.message.data.loaded=%s - Data loaded -observe.actions.synchro.data.prepare.copyToLeftTask=Register operation copy to left database\: %s - %s -observe.actions.synchro.data.prepare.copyToRightTask=Register operation copy to right database\: %s - %s -observe.actions.synchro.data.prepare.deleteFromLeftTask=Register operation delete from left database\: %s - %s -observe.actions.synchro.data.prepare.deleteFromRightTask=Register operation delete from right database\: %s - %s -observe.actions.synchro.data.result.delete.left.trip=Trip %s - %s was removed from left database. -observe.actions.synchro.data.result.delete.right.trip=Trip %s - %s was removed from right database. -observe.actions.synchro.data.result.export.left.trip=Trip %s - %s was exported from left database. -observe.actions.synchro.data.result.export.right.trip=Trip %s - %s was exported from right database. -observe.actions.synchro.data.result.import.left.trip=Trip %s - %s was imported into left database. -observe.actions.synchro.data.result.import.right.trip=Trip %s - %s was imported into right database. +observe.actions.synchro.data.message.data.loaded=Database «%s» - Data loaded +observe.actions.synchro.data.prepare.copyToTask=Database «%s» - Register operation copy to database\: %s - %s +observe.actions.synchro.data.prepare.deleteTask=Database «%s» - Register operation delete from database\: %s - %s +observe.actions.synchro.data.result.delete.trip=Database «%s» - Trip %s - %s was removed from database. +observe.actions.synchro.data.result.export.trip=Database «%s» - Trip %s - %s was exported from database. +observe.actions.synchro.data.result.import.trip=Database «%s» - Trip %s - %s was imported into database. observe.actions.synchro.data.task.copyToLeft=Copy to left database\: <i>%s</i> - «<b>%s</b>» observe.actions.synchro.data.task.copyToRight=Copy to right database\: <i>%s</i> - «<b>%s</b>» observe.actions.synchro.data.task.deleteFromLeft=Delete from left database\: <i>%s</i> - «<b>%s</b>» @@ -1316,8 +1310,7 @@ observe.message.show.usage.for.desactivated=Referential %1$s "%2$s" will be disa observe.message.show.usage.for.desactivated2=Some data are using this referential, see following reference observe.message.show.usage.for.desactivated3=Those data need to use another enabled referential to be saved. observe.message.show.usage.for.missingReferentials=There is some referentials present in local source but not in centrale one. -observe.message.show.usage.for.missingReferentials.left=There is some referentials present in right source but not in left one. -observe.message.show.usage.for.missingReferentials.right=There is some referentials present in left source but not in right one. +observe.message.show.usage.for.missingReferentials2=There is some referentials present in «%s» source but not in the «%s» one. observe.message.show.usages=List of usage of referential %1$s\: '%2$s' observe.message.table.editBean.modified=Current entry is modifed and valid. observe.message.table.editBean.modified.but.invalid=Current entry is modified but not valid. @@ -1473,8 +1466,7 @@ observe.storage.useServerStorage.description=Please configure connexion to remot observe.title.about=About observe.title.can.not.delete.referentiel=Impossible to delete a referentiel data... observe.title.can.not.export.data=Could not export data -observe.title.can.not.export.data.left=Could not export data to left source -observe.title.can.not.export.data.right=Could not export data to right source +observe.title.can.not.export.data2=Could not export data to «%s» source observe.title.can.not.export.obstuna=Could not export obstuna data... observe.title.choose.db.dump=Choose a database backup observe.title.choose.db.dump.directory=Chhose directory of backup ===================================== client/src/main/resources/i18n/client_es_ES.properties ===================================== @@ -155,14 +155,13 @@ observe.actions.exportData.error.missingReferentialsId.left=Il existe des réfé observe.actions.exportData.error.missingReferentialsId.right=Il existe des référentiels dans la base de droite non présente en base centrale, mais vous n'avez pas activé l'option d'insertion automatique. \#TODO observe.actions.exportData.message.add.missing.referential=\t%s observe.actions.exportData.message.add.missing.referentials=Insertion de %s référentiels de type «%s» \#TODO -observe.actions.exportData.message.add.missing.referentials.left=Insertion de %s référentiels de type «%s» dans la base de gauche\#TODO -observe.actions.exportData.message.add.missing.referentials.right=Insertion de %s référentiels de type «%s» dans la base de droite\#TODO +observe.actions.exportData.message.add.missing.referentials2=Base «%s» - Insertion de %s référentiels de type «%s»\#TODO observe.actions.exportData.message.not.possible=La exportación no es posible (vea el mensaje anterior). observe.actions.exportData.message.operation.needFix=Seleccione las mareas a exportar. observe.actions.exportData.message.prepare.data=Preparación de los datos a exportar... -observe.actions.exportData.message.result.delete.trip=La marea %s - %s fue eliminada de la base central -observe.actions.exportData.message.result.export.trip=La marea %s - %s fue exportada de la base locale -observe.actions.exportData.message.result.import.trip=La marea %s - %s fue importada en la base central +observe.actions.exportData.message.result.delete.trip=Base «%s» - La marea %s - %s fue eliminada. +observe.actions.exportData.message.result.export.trip=Base «%s» - La marea %s - %s fue exportada. +observe.actions.exportData.message.result.import.trip=Base «%s» - La marea %s - %s fue importada. observe.actions.exportData.table.exist.label=E observe.actions.exportData.table.exist.label.tip=Marea ya está presente en la base de datos remota observe.actions.exportData.table.program.label=Programa @@ -206,17 +205,12 @@ observe.actions.synchro.data.deleteFromLeft.tip=Eliminar la ou las mareas selecc observe.actions.synchro.data.deleteFromRight.tip=Eliminar la ou las mareas seleccionada(s) de la base de la derecha observe.actions.synchro.data.description=Gestión avanzada de los datos de los usuarios observe.actions.synchro.data.launch.operation=Recuperar los datos de las fuentes de datos -observe.actions.synchro.data.message.data.loaded=%s - Datos recuperadas. -observe.actions.synchro.data.prepare.copyToLeftTask=Preparación de la copia en la base de la izquierda \: %s - %s -observe.actions.synchro.data.prepare.copyToRightTask=Preparación de la copia en la base de la derecha \: %s - %s -observe.actions.synchro.data.prepare.deleteFromLeftTask=Preparación de la eliminación de la base de la izquierda \: %s - %s -observe.actions.synchro.data.prepare.deleteFromRightTask=Preparación de la eliminación de la base de la derecha \: %s - %s -observe.actions.synchro.data.result.delete.left.trip=Eliminación de la marea %s - %s en la base de la izquierda realizada. -observe.actions.synchro.data.result.delete.right.trip=Eliminación de la marea %s - %s en la base de la derecha realizada. -observe.actions.synchro.data.result.export.left.trip=Exportación de la marea %s - %s desde la base de la izquierda realizada. -observe.actions.synchro.data.result.export.right.trip=Exportación de la marea %s - %s desde la base de la derecha realizada. -observe.actions.synchro.data.result.import.left.trip=Inserción de la marea %s - %s en la base de la izquierda realizada. -observe.actions.synchro.data.result.import.right.trip=Inserción de la marea %s - %s en la base de la derecha realizada. +observe.actions.synchro.data.message.data.loaded=Base «%s» - Datos recuperadas. +observe.actions.synchro.data.prepare.copyToTask=Base «%s» - Preparación de la copia \: %s - %s +observe.actions.synchro.data.prepare.deleteTask=Base «%s» - Preparación de la eliminación de la base \: %s - %s +observe.actions.synchro.data.result.delete.trip=Base «%s» - Eliminación de la marea %s - %s en la base. +observe.actions.synchro.data.result.export.trip=Base «%s» - Exportación de la marea %s - %s desde la base. +observe.actions.synchro.data.result.import.trip=Base «%s» - Inserción de la marea %s - %s en la base. observe.actions.synchro.data.task.copyToLeft=Copiar en la base de la izquierda \: <i>%s</i> - «<b>%s</b>» observe.actions.synchro.data.task.copyToRight=Copiar en la base de la derecha \: <i>%s</i> - «<b>%s</b>» observe.actions.synchro.data.task.deleteFromLeft=Eliminar en la base de la izquierda \: <i>%s</i> - «<b>%s</b>» @@ -1316,8 +1310,7 @@ observe.message.show.usage.for.desactivated=El referencial %1$s "%2$s" se desact observe.message.show.usage.for.desactivated2=Los objetos están usando actualmente las referencias que se enumeran a continuación.. observe.message.show.usage.for.desactivated3=Estos objetos deben usar otro referencial (no desactivado) para poder actualizarse. observe.message.show.usage.for.missingReferentials=Il existe des référentiels présents dans la base locale mais non présents dans la base centrale. \#TODO -observe.message.show.usage.for.missingReferentials.left=Il existe des référentiels présents dans la base de droite mais non présents dans la base de gauche. -observe.message.show.usage.for.missingReferentials.right=Il existe des référentiels présents dans la base de gauche mais non présents dans la base droite. +observe.message.show.usage.for.missingReferentials2=There is some referentials present in «%s» source but not in the «%s» one. observe.message.show.usages=Listas de usos de referenciales %1$s \: '%2$s' observe.message.table.editBean.modified=El registro actual se ha modificado y es válido. observe.message.table.editBean.modified.but.invalid=El registro actual se ha modificado pero no es válido. @@ -1473,8 +1466,7 @@ observe.storage.useServerStorage.description=Configure su conexión al servidor observe.title.about=A proposito de ObServe... observe.title.can.not.delete.referentiel=Impossible eliminar un referencial en proceso de utilización... observe.title.can.not.export.data=Impossible d'exporter les données vers la base centrale... \#TODO -observe.title.can.not.export.data.left=Impossible d'exporter les données vers la base de gauche... \#TODO -observe.title.can.not.export.data.right=Impossible d'exporter les données vers la base de droite... \#TODO +observe.title.can.not.export.data2=Impossible d'exporter les données vers la base «%s»... \#TODO observe.title.can.not.export.obstuna=Impossible exportar los datos de obstuna... observe.title.choose.db.dump=Seleccionar una copia de seguridad de base local observe.title.choose.db.dump.directory=Seleccionar e directorio de destinación de la copia de seguridad ===================================== client/src/main/resources/i18n/client_fr_FR.properties ===================================== @@ -155,14 +155,13 @@ observe.actions.exportData.error.missingReferentialsId.left=Il existe des réfé observe.actions.exportData.error.missingReferentialsId.right=Il existe des référentiels dans la base de droite non présente en base centrale, mais vous n'avez pas activé l'option d'insertion automatique. observe.actions.exportData.message.add.missing.referential=\t%s observe.actions.exportData.message.add.missing.referentials=Insertion de %s référentiels de type «%s» -observe.actions.exportData.message.add.missing.referentials.left=Insertion de %s référentiels de type «%s» dans la base de gauche -observe.actions.exportData.message.add.missing.referentials.right=Insertion de %s référentiels de type «%s» dans la base de droite +observe.actions.exportData.message.add.missing.referentials2=Source «%s» - Insertion de %s référentiels de type «%s» observe.actions.exportData.message.not.possible=L'opération d'export n'est pas possible (voir les messages précédents). observe.actions.exportData.message.operation.needFix=Veuillez sélectionner les marées à exporter. observe.actions.exportData.message.prepare.data=Préparation des données à exporter... -observe.actions.exportData.message.result.delete.trip=La marée %s - %s a été supprimée de la base centrale -observe.actions.exportData.message.result.export.trip=La marée %s - %s a été exportée depuis la base locale -observe.actions.exportData.message.result.import.trip=La marée %s - %s a été importée dans la base centrale +observe.actions.exportData.message.result.delete.trip=Source «%s» - La marée %s - %s a été supprimée de la base centrale +observe.actions.exportData.message.result.export.trip=Source «%s» - La marée %s - %s a été exportée depuis la base locale +observe.actions.exportData.message.result.import.trip=Source «%s» - La marée %s - %s a été importée dans la base centrale observe.actions.exportData.table.exist.label=E observe.actions.exportData.table.exist.label.tip=Marée déjà présente sur la base distante observe.actions.exportData.table.program.label=Programme @@ -206,17 +205,12 @@ observe.actions.synchro.data.deleteFromLeft.tip=Supprimer la ou les marées sél observe.actions.synchro.data.deleteFromRight.tip=Supprimer la ou les marées sélectionnée(s) de la base de droite observe.actions.synchro.data.description=Gestion avancée des données utilisateurs observe.actions.synchro.data.launch.operation=Récupérer les données des sources de données -observe.actions.synchro.data.message.data.loaded=%s - Données récupérées. -observe.actions.synchro.data.prepare.copyToLeftTask=Préparation de la recopie vers la base de gauche \: %s - %s -observe.actions.synchro.data.prepare.copyToRightTask=Préparation de la recopie vers la base de droite \: %s - %s -observe.actions.synchro.data.prepare.deleteFromLeftTask=Préparation de la suppression de la base de gauche \: %s - %s -observe.actions.synchro.data.prepare.deleteFromRightTask=Préparation de la suppression de la base de droite \: %s - %s -observe.actions.synchro.data.result.delete.left.trip=Suppression de la marée %s - %s dans la base de gauche effectuée. -observe.actions.synchro.data.result.delete.right.trip=Suppression de la marée %s - %s dans la base de droite effectuée. -observe.actions.synchro.data.result.export.left.trip=Export de la marée %s - %s depuis la base de gauche effectuée. -observe.actions.synchro.data.result.export.right.trip=Export de la marée %s - %s depuis la base de droite effectuée. -observe.actions.synchro.data.result.import.left.trip=Insertion de la marée %s - %s dans la base de gauche effectuée. -observe.actions.synchro.data.result.import.right.trip=Insertion de la marée %s - %s dans la base de droite effectuée. +observe.actions.synchro.data.message.data.loaded=Source «%s» - Données récupérées. +observe.actions.synchro.data.prepare.copyToTask=Source «%s» - Préparation de la recopie \: %s - %s +observe.actions.synchro.data.prepare.deleteTask=Source «%s» - Préparation de la suppression \: %s - %s +observe.actions.synchro.data.result.delete.trip=Source «%s» - Suppression de la marée %s - %s effectuée. +observe.actions.synchro.data.result.export.trip=Source «%s» - Export de la marée %s - %s effectuée. +observe.actions.synchro.data.result.import.trip=Source «%s» - Insertion de la marée %s - %s effectuée. observe.actions.synchro.data.task.copyToLeft=Copier vers la base de gauche \: <i>%s</i> - «<b>%s</b>» observe.actions.synchro.data.task.copyToRight=Copier vers la base de droite \: <i>%s</i> - «<b>%s</b>» observe.actions.synchro.data.task.deleteFromLeft=Supprimer de la base de gauche \: <i>%s</i> - «<b>%s</b>» @@ -1316,8 +1310,7 @@ observe.message.show.usage.for.desactivated=Le référentiel %1$s "%2$s" va êtr observe.message.show.usage.for.desactivated2=Des objets utilisent actuellement cet entité dont les références sont citées plus bas. observe.message.show.usage.for.desactivated3=Ces objets devront utiliser un autre référentiel (non désactivé) pour pouvoir être mis à jour. observe.message.show.usage.for.missingReferentials=Il existe des référentiels présents dans la base locale mais non présents dans la base centrale. -observe.message.show.usage.for.missingReferentials.left=Il existe des référentiels présents dans la base de droite mais non présents dans la base de gauche. -observe.message.show.usage.for.missingReferentials.right=Il existe des référentiels présents dans la base de gauche mais non présents dans la base droite. +observe.message.show.usage.for.missingReferentials2=Il existe des référentiels présents dans la base «%s» mais non présents dans la base «%s». observe.message.show.usages=Listes des utilisations du référentiel %1$s \: '%2$s' observe.message.table.editBean.modified=L'entrée en cours d'édition a été modifiée et est valide. observe.message.table.editBean.modified.but.invalid=L'entrée en cours d'édition a été modifiée, mais n'est pas valide. @@ -1473,8 +1466,7 @@ observe.storage.useServerStorage.description=Veuillez configurer votre connexion observe.title.about=A propos d'ObServe... observe.title.can.not.delete.referentiel=Impossible de supprimer un référentiel en cours d'utilisation... observe.title.can.not.export.data=Impossible d'exporter les données vers la base centrale... -observe.title.can.not.export.data.left=Impossible d'exporter les données vers la base de gauche... -observe.title.can.not.export.data.right=Impossible d'exporter les données vers la base de droite... +observe.title.can.not.export.data2=Impossible d'exporter les données vers la base «%s»... observe.title.can.not.export.obstuna=Impossible d'exporter des données d'obstuna... observe.title.choose.db.dump=Choisir une sauvegarder de base locale observe.title.choose.db.dump.directory=Choisir le répertoire de destination de la sauvegarde ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java ===================================== @@ -57,6 +57,7 @@ import fr.ird.observe.dto.data.longline.SizeMeasureDto; import fr.ird.observe.dto.data.longline.SizeMeasureReference; import fr.ird.observe.dto.data.longline.TdrDto; import fr.ird.observe.dto.data.longline.TdrReference; +import fr.ird.observe.dto.data.longline.TripLonglineActivityDto; import fr.ird.observe.dto.data.longline.TripLonglineReference; import fr.ird.observe.dto.data.longline.WeightMeasureDto; import fr.ird.observe.dto.data.longline.WeightMeasureReference; @@ -361,6 +362,8 @@ public class DecoratorService extends DecoratorProvider { "${timeStamp}$td/%1$tm/%1$tY %1$tH:%1$tM##${vesselActivityLongline/label}$s", "${timeStamp}$td/%1$tm/%1$tY %1$tH:%1$tM##${vesselActivityLonglineLabel}$s", " - "); + + registerObserveDecorator(TripLonglineActivityDto.class, "${timeStamp}$td/%1$tm/%1$tY %1$tH:%1$t", " - "); } @Override View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/4f6ea307b1f060d966b99ef88ff... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/4f6ea307b1f060d966b99ef88ff... You're receiving this email because of your account on gitlab.com.