This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 68729dc446233dd16212cfe78a7bfbebdbd4107c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Nov 15 22:48:12 2014 +0100 fixes #6105 vérifier données au dessus du tableau sont bien exportées/importées --- .../action/AbstractExportMultiPostAction.java | 118 ++++++++++--- .../action/AbstractImportMultiPostAction.java | 196 +++++++++++++++++---- .../action/ExportAccidentalMultiPostAction.java | 16 +- .../swing/action/ExportBenthosMultiPostAction.java | 16 +- ...ExportIndividualObservationMultiPostAction.java | 16 +- .../action/ExportMarineLitterMultiPostAction.java | 16 +- .../swing/action/ExportSpeciesMultiPostAction.java | 16 +- .../action/ImportAccidentalMultiPostAction.java | 16 +- .../swing/action/ImportBenthosMultiPostAction.java | 82 ++++----- ...ImportIndividualObservationMultiPostAction.java | 16 +- .../action/ImportMarineLitterMultiPostAction.java | 60 +++---- .../swing/action/ImportSpeciesMultiPostAction.java | 84 ++++----- .../resources/i18n/tutti-ui-swing_en_GB.properties | 5 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 4 + 14 files changed, 441 insertions(+), 220 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractExportMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractExportMultiPostAction.java index 833b1e9..f526abc 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractExportMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractExportMultiPostAction.java @@ -22,16 +22,22 @@ package fr.ifremer.tutti.ui.swing.action; * #L% */ +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import org.jdesktop.beans.AbstractBean; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; +import javax.swing.JOptionPane; import java.io.File; +import static org.nuiton.i18n.I18n.t; + /** * @author kmorin <kmorin@codelutin.com> * @since 2.2 @@ -39,55 +45,127 @@ import java.io.File; public abstract class AbstractExportMultiPostAction<M extends AbstractBean, UI extends TuttiUI<M, ?>, H extends AbstractTuttiUIHandler<M, UI>> extends AbstractTuttiAction<M, UI, H> { - protected File file; + /** + * Do save the catches before export. + */ + private Boolean doSaveCatches; + + /** + * File to export. + */ + private File file; + + /** + * Fishing operation to export. + */ + private FishingOperation fishingOperation; + + protected abstract String getFileExtension(); + + protected abstract String getFileExtensionDescription(); + + protected abstract String getFileChooserTitle(); + + protected abstract String getFileChooserButton(); - protected FishingOperation currentOperation; + protected abstract String getSuccessMessage(File file); - protected MultiPostExportService multiPostImportExportService; + protected abstract void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation); public AbstractExportMultiPostAction(H handler) { super(handler, false); - multiPostImportExportService = getContext().getMultiPostExportService(); } @Override - public boolean prepareAction() throws Exception { + public final boolean prepareAction() throws Exception { boolean doAction = super.prepareAction(); if (doAction) { EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class); - currentOperation = catchesUI.getModel().getFishingOperation(); + EditCatchesUIModel model = catchesUI.getModel(); + + fishingOperation = model.getFishingOperation(); + + boolean canSave = model.isModify() && model.isValid(); + + // ask user to save before export (otherwise some data can't be export) + doSaveCatches = canSave && askToSave(); String extension = getFileExtension(); + // choose file to export - file = saveFile( - decorate(currentOperation, DecoratorService.FILE_NAME_COMPATIBLE), - extension, - getFileChooserTitle(), - getFileChooserButton(), - "^.*\\." + extension, - getFileExtensionDescription() - ); + file = saveFile(decorate(fishingOperation, DecoratorService.FILE_NAME_COMPATIBLE), + extension, + getFileChooserTitle(), + getFileChooserButton(), + "^.*\\." + extension, + getFileExtensionDescription()); + doAction = file != null; + } + return doAction; + } - protected abstract String getFileExtension(); + @Override + public final void doAction() throws Exception { - protected abstract String getFileExtensionDescription(); + if (doSaveCatches) { - protected abstract String getFileChooserTitle(); + setProgressionModel(new ProgressionModel()); + ProgressionModel progressionModel = getProgressionModel(); + progressionModel.setTotal(2); - protected abstract String getFileChooserButton(); + progressionModel.increments("Sauvegarde de la capture"); + + // save catches before export + + EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class); + getActionEngine().runInternalAction(catchesUI.getHandler(), SaveCatchBatchAction.class); + + progressionModel.increments("Lancement de l'export"); + + } + + // do the export + + MultiPostExportService multiPostImportExportService = getContext().getMultiPostExportService(); + + doExport(multiPostImportExportService, file, fishingOperation); + + } @Override - public void releaseAction() { + public final void releaseAction() { file = null; - currentOperation = null; + fishingOperation = null; + doSaveCatches = null; super.releaseAction(); } + @Override + public final void postSuccessAction() { + super.postSuccessAction(); + sendMessage(getSuccessMessage(file)); + } + + protected boolean askToSave() { + String htmlMessage = String.format( + AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.askToSaveCatch.message"), + t("tutti.askToSaveCatchBeforeExport.help")); + int i = JOptionPane.showConfirmDialog( + getHandler().getTopestUI(), + htmlMessage, + t("tutti.askToSaveCatch.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE); + + boolean result = i == JOptionPane.OK_OPTION; + return result; + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractImportMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractImportMultiPostAction.java index 331ccd1..da4f5c2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractImportMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AbstractImportMultiPostAction.java @@ -22,16 +22,26 @@ package fr.ifremer.tutti.ui.swing.action; * #L% */ +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.MultiPostImportLogDialog; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUI; +import org.apache.commons.collections4.MapUtils; import org.jdesktop.beans.AbstractBean; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; +import javax.swing.JOptionPane; +import javax.swing.JTextArea; +import java.awt.Dialog; import java.io.File; +import java.util.Map; + +import static org.nuiton.i18n.I18n.t; /** * @author kmorin <kmorin@codelutin.com> @@ -40,24 +50,40 @@ import java.io.File; public abstract class AbstractImportMultiPostAction<M extends AbstractBean, UI extends TuttiUI<M, ?>, H extends AbstractTuttiUIHandler<M, UI>> extends AbstractTuttiAction<M, UI, H> { - protected File file; + /** + * Save the modified catch before import ? + */ + private Boolean doSaveCatches; + + /** + * Reset modified catches before import ? + */ + private Boolean doResetCatches; + + /** + * File to import. + */ + private File file; + + /** + * Optional data that were not imported. + */ + private Map<String, Object> notImportedData; + + protected abstract String getFileExtension(); + + protected abstract String getFileExtensionDescription(); + + protected abstract String getFileChooserTitle(); + + protected abstract String getFileChooserButton(); - protected EditFishingOperationAction editAction; + protected abstract String getSuccessMessage(File file); - protected MultiPostImportService multiPostImportExportService; + protected abstract Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation); public AbstractImportMultiPostAction(H handler) { super(handler, false); - multiPostImportExportService = getContext().getMultiPostImportService(); - } - - public EditFishingOperationAction getEditAction() { - FishingOperationsUI parentUI = getUI().getParentContainer(FishingOperationsUI.class); - if (editAction == null) { - editAction = getContext().getActionFactory().createLogicAction(parentUI.getHandler(), - EditFishingOperationAction.class); - } - return editAction; } @Override @@ -67,44 +93,150 @@ public abstract class AbstractImportMultiPostAction<M extends AbstractBean, UI e if (doAction) { + EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class); + EditCatchesUIModel model = catchesUI.getModel(); + + boolean canSave = model.isModify() && model.isValid(); + + doResetCatches = doSaveCatches = false; + + if (canSave) { + + // ask user to save before export (otherwise some data can't be export) + + boolean shouldSave = askToSave(); + + if (shouldSave) { + + // save catch before + doSaveCatches = true; + } else { + doResetCatches = true; + } + + } + // choose file to import - file = chooseFile( - getFileChooserTitle(), - getFileChooserButton(), - "^.*\\." + getFileExtension(), - getFileExtensionDescription() - ); - doAction = file != null; - } - return doAction; - } + file = chooseFile(getFileChooserTitle(), + getFileChooserButton(), + "^.*\\." + getFileExtension(), + getFileExtensionDescription()); - protected abstract String getFileExtension(); + doAction = file != null; - protected abstract String getFileExtensionDescription(); + } - protected abstract String getFileChooserTitle(); + return doAction; - protected abstract String getFileChooserButton(); + } @Override - public void releaseAction() { + public final void releaseAction() { file = null; + doSaveCatches = null; + notImportedData = null; super.releaseAction(); } @Override - public void doAction() throws Exception { + public final void doAction() throws Exception { + EditCatchesUI editCatchesUI = getUI().getParentContainer(EditCatchesUI.class); EditCatchesUIModel editCatchesUIModel = editCatchesUI.getModel(); FishingOperation operation = editCatchesUIModel.getFishingOperation(); - importBatches(operation); + if (doSaveCatches) { + + setProgressionModel(new ProgressionModel()); + ProgressionModel progressionModel = getProgressionModel(); + progressionModel.setTotal(2); + + progressionModel.increments("Sauvegarde de la capture"); + + // save catches before import + + getActionEngine().runInternalAction(editCatchesUI.getHandler(), SaveCatchBatchAction.class); + + + } else { + + if (doResetCatches) { + + // reload fishing operation before importing data + + setProgressionModel(new ProgressionModel()); + ProgressionModel progressionModel = getProgressionModel(); + progressionModel.setTotal(2); + + progressionModel.increments("Réinitilisation de la capture"); + + editCatchesUI.getHandler().getCatchBatchMonitor().clearModified(); + + progressionModel.increments("Lancement de l'import"); + + } + + } + + MultiPostImportService multiPostImportExportService = getContext().getMultiPostImportService(); + + notImportedData = importBatches(multiPostImportExportService, file, operation); + + FishingOperationsUI parentUI = getUI().getParentContainer(FishingOperationsUI.class); + EditFishingOperationAction editAction = getActionFactory().createLogicAction(parentUI.getHandler(), + EditFishingOperationAction.class); + editAction.loadCatchBatch(operation); - getEditAction().loadCatchBatch(operation); } - protected abstract void importBatches(FishingOperation operation); + @Override + public final void postSuccessAction() { + + super.postSuccessAction(); + + if (MapUtils.isNotEmpty(notImportedData)) { + + String text = buildNotImportedDataText(notImportedData); + + if (!text.isEmpty()) { + + MultiPostImportLogDialog dialog = new MultiPostImportLogDialog((Dialog) getContext().getActionUI()); + + JTextArea batchList = dialog.getBatchList(); + batchList.setText(text); + dialog.setSize(400, 300); + dialog.setLocationRelativeTo(getContext().getMainUI()); + dialog.setVisible(true); + + } + + + } + + sendMessage(getSuccessMessage(file)); + + } + + protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + throw new IllegalStateException("Override this to use it"); + } + + protected boolean askToSave() { + + String htmlMessage = String.format(AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.askToSaveCatch.message"), + t("tutti.askToSaveCatchBeforeImport.help")); + + int i = JOptionPane.showConfirmDialog(getHandler().getTopestUI(), + htmlMessage, + t("tutti.askToSaveCatch.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE); + + boolean result = i == JOptionPane.OK_OPTION; + return result; + + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportAccidentalMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportAccidentalMultiPostAction.java index 214f939..b966ec2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportAccidentalMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportAccidentalMultiPostAction.java @@ -22,10 +22,14 @@ package fr.ifremer.tutti.ui.swing.action; * #L% */ +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; import fr.ifremer.tutti.ui.swing.content.operation.catches.accidental.AccidentalBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.accidental.AccidentalBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.accidental.AccidentalBatchUIModel; +import java.io.File; + import static org.nuiton.i18n.I18n.t; /** @@ -60,13 +64,15 @@ public class ExportAccidentalMultiPostAction } @Override - public void doAction() throws Exception { - multiPostImportExportService.exportAccidentalCatch(file, currentOperation); + protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { + + multiPostImportExportService.exportAccidentalCatch(file, fishingOperation); + } @Override - public void postSuccessAction() { - super.postSuccessAction(); - sendMessage(t("tutti.editAccidentalBatch.action.exportMultiPost.success", file)); + protected String getSuccessMessage(File file) { + return t("tutti.editAccidentalBatch.action.exportMultiPost.success", file); } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportBenthosMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportBenthosMultiPostAction.java index 209a6b1..f539732 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportBenthosMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportBenthosMultiPostAction.java @@ -22,10 +22,14 @@ package fr.ifremer.tutti.ui.swing.action; * #L% */ +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUIModel; +import java.io.File; + import static org.nuiton.i18n.I18n.t; /** @@ -59,13 +63,15 @@ public class ExportBenthosMultiPostAction extends AbstractExportMultiPostAction< } @Override - public void doAction() throws Exception { - multiPostImportExportService.exportBenthos(file, currentOperation); + protected String getSuccessMessage(File file) { + return t("tutti.editBenthosBatch.action.exportMultiPost.success", file); } @Override - public void postSuccessAction() { - super.postSuccessAction(); - sendMessage(t("tutti.editBenthosBatch.action.exportMultiPost.success", file)); + protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { + + multiPostImportExportService.exportBenthos(file, fishingOperation); + } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportIndividualObservationMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportIndividualObservationMultiPostAction.java index 3a8b3f5..d4573a1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportIndividualObservationMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportIndividualObservationMultiPostAction.java @@ -22,10 +22,14 @@ package fr.ifremer.tutti.ui.swing.action; * #L% */ +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIModel; +import java.io.File; + import static org.nuiton.i18n.I18n.t; /** @@ -60,13 +64,15 @@ public class ExportIndividualObservationMultiPostAction } @Override - public void doAction() throws Exception { - multiPostImportExportService.exportIndividualObservation(file, currentOperation); + protected String getSuccessMessage(File file) { + return t("tutti.editIndividualObservationBatch.action.exportMultiPost.success", file); } @Override - public void postSuccessAction() { - super.postSuccessAction(); - sendMessage(t("tutti.editIndividualObservationBatch.action.exportMultiPost.success", file)); + protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { + + multiPostImportExportService.exportIndividualObservation(file, fishingOperation); + } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportMarineLitterMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportMarineLitterMultiPostAction.java index a15fb87..680cb48 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportMarineLitterMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportMarineLitterMultiPostAction.java @@ -22,10 +22,14 @@ package fr.ifremer.tutti.ui.swing.action; * #L% */ +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUIModel; +import java.io.File; + import static org.nuiton.i18n.I18n.t; /** @@ -59,13 +63,15 @@ public class ExportMarineLitterMultiPostAction extends AbstractExportMultiPostAc } @Override - public void doAction() throws Exception { - multiPostImportExportService.exportMarineLitter(file, currentOperation); + protected String getSuccessMessage(File file) { + return t("tutti.editMarineLitterBatch.action.exportMultiPost.success", file); } @Override - public void postSuccessAction() { - super.postSuccessAction(); - sendMessage(t("tutti.editMarineLitterBatch.action.exportMultiPost.success", file)); + protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { + + multiPostImportExportService.exportMarineLitter(file, fishingOperation); + } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportSpeciesMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportSpeciesMultiPostAction.java index 4ee9f0e..c33b8a5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportSpeciesMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportSpeciesMultiPostAction.java @@ -22,10 +22,14 @@ package fr.ifremer.tutti.ui.swing.action; * #L% */ +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; +import java.io.File; + import static org.nuiton.i18n.I18n.t; /** @@ -59,13 +63,15 @@ public class ExportSpeciesMultiPostAction extends AbstractExportMultiPostAction< } @Override - public void doAction() throws Exception { - multiPostImportExportService.exportSpecies(file, currentOperation); + protected String getSuccessMessage(File file) { + return t("tutti.editSpeciesBatch.action.exportMultiPost.success", file); } @Override - public void postSuccessAction() { - super.postSuccessAction(); - sendMessage(t("tutti.editSpeciesBatch.action.exportMultiPost.success", file)); + protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { + + multiPostImportExportService.exportSpecies(file, fishingOperation); + } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportAccidentalMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportAccidentalMultiPostAction.java index 1f98194..4dfa7b7 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportAccidentalMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportAccidentalMultiPostAction.java @@ -23,10 +23,14 @@ package fr.ifremer.tutti.ui.swing.action; */ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; import fr.ifremer.tutti.ui.swing.content.operation.catches.accidental.AccidentalBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.accidental.AccidentalBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.accidental.AccidentalBatchUIModel; +import java.io.File; +import java.util.Map; + import static org.nuiton.i18n.I18n.t; /** @@ -61,14 +65,16 @@ public class ImportAccidentalMultiPostAction } @Override - protected void importBatches(FishingOperation operation) { - multiPostImportExportService.importAccidentalCatches(file, operation); + protected String getSuccessMessage(File file) { + return t("tutti.editAccidentalBatch.action.importMultiPost.success", file); } @Override - public void postSuccessAction() { - super.postSuccessAction(); + protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { + + multiPostImportExportService.importAccidentalCatches(file, operation); + return null; - sendMessage(t("tutti.editAccidentalBatch.action.importMultiPost.success", file)); } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportBenthosMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportBenthosMultiPostAction.java index 3bf837b..c37a2a1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportBenthosMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportBenthosMultiPostAction.java @@ -26,13 +26,11 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.ui.swing.content.operation.catches.MultiPostImportLogDialog; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUIModel; -import javax.swing.JTextArea; -import java.awt.Dialog; +import java.io.File; import java.util.Collection; import java.util.Map; @@ -44,8 +42,6 @@ import static org.nuiton.i18n.I18n.t; */ public class ImportBenthosMultiPostAction extends AbstractImportMultiPostAction<BenthosBatchUIModel, BenthosBatchUI, BenthosBatchUIHandler> { - protected Map<String, Object> notImportedData; - public ImportBenthosMultiPostAction(BenthosBatchUIHandler handler) { super(handler); } @@ -71,56 +67,46 @@ public class ImportBenthosMultiPostAction extends AbstractImportMultiPostAction< } @Override - public void releaseAction() { - notImportedData = null; - super.releaseAction(); + protected String getSuccessMessage(File file) { + return t("tutti.editBenthosBatch.action.importMultiPost.success", file); } @Override - protected void importBatches(FishingOperation operation) { - notImportedData = multiPostImportExportService.importBenthos(file, operation); + protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { + + Map<String, Object> notImportedData = multiPostImportExportService.importBenthos(file, operation); + return notImportedData; + } @Override - public void postSuccessAction() { - super.postSuccessAction(); - - if (!notImportedData.isEmpty()) { - MultiPostImportLogDialog dialog = new MultiPostImportLogDialog((Dialog) getContext().getActionUI()); - - Collection<BenthosBatch> notImportedBenthosBatches = - (Collection<BenthosBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); - - StringBuffer stringBuffer = new StringBuffer(); - Float totalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT); - if (totalSortedWeight != null) { - stringBuffer.append("- " + t("tutti.multiPostImportLog.totalSortedWeight", totalSortedWeight) + "\n"); - } - - Float inertWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT); - if (inertWeight != null) { - stringBuffer.append("- " + t("tutti.multiPostImportLog.inertWeight", inertWeight) + "\n"); - } - - Float livingNotItemizedWeight = - (Float) notImportedData.get(CatchBatch.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT); - if (livingNotItemizedWeight != null) { - stringBuffer.append("- " + t("tutti.multiPostImportLog.livingNotItemizedWeight", livingNotItemizedWeight) + "\n"); - } - - for (BenthosBatch sb : notImportedBenthosBatches) { - stringBuffer.append("- " + decorate(sb.getSpecies()) + " / " + decorate(sb.getSampleCategoryValue()) + "\n"); - } - - if (stringBuffer.length() > 0) { - JTextArea batchList = dialog.getBatchList(); - batchList.setText(stringBuffer.toString()); - dialog.setSize(400, 300); - dialog.setLocationRelativeTo(getContext().getMainUI()); - dialog.setVisible(true); - } + protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + + Collection<BenthosBatch> notImportedBenthosBatches = + (Collection<BenthosBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); + + StringBuilder builder = new StringBuilder(); + Float totalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT); + if (totalSortedWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.totalSortedWeight", totalSortedWeight)).append("\n"); + } + + Float inertWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT); + if (inertWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.inertWeight", inertWeight)).append("\n"); + } + + Float livingNotItemizedWeight = + (Float) notImportedData.get(CatchBatch.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT); + if (livingNotItemizedWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.livingNotItemizedWeight", livingNotItemizedWeight)).append("\n"); } - sendMessage(t("tutti.editBenthosBatch.action.importMultiPost.success", file)); + for (BenthosBatch sb : notImportedBenthosBatches) { + builder.append("- ").append(decorate(sb.getSpecies())).append(" / ").append(decorate(sb.getSampleCategoryValue())).append("\n"); + } + return builder.toString(); + } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportIndividualObservationMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportIndividualObservationMultiPostAction.java index f5ff36a..df1c978 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportIndividualObservationMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportIndividualObservationMultiPostAction.java @@ -23,10 +23,14 @@ package fr.ifremer.tutti.ui.swing.action; */ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIModel; +import java.io.File; +import java.util.Map; + import static org.nuiton.i18n.I18n.t; /** @@ -61,14 +65,16 @@ public class ImportIndividualObservationMultiPostAction } @Override - protected void importBatches(FishingOperation operation) { - multiPostImportExportService.importIndividualObservation(file, operation); + protected String getSuccessMessage(File file) { + return t("tutti.editIndividualObservationBatch.action.importMultiPost.success", file); } @Override - public void postSuccessAction() { - super.postSuccessAction(); + protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { + + multiPostImportExportService.importIndividualObservation(file, operation); + return null; - sendMessage(t("tutti.editIndividualObservationBatch.action.importMultiPost.success", file)); } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportMarineLitterMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportMarineLitterMultiPostAction.java index 1b722d7..47d73a6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportMarineLitterMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportMarineLitterMultiPostAction.java @@ -26,13 +26,11 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.ui.swing.content.operation.catches.MultiPostImportLogDialog; import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUIModel; -import javax.swing.JTextArea; -import java.awt.Dialog; +import java.io.File; import java.util.Collection; import java.util.Map; @@ -44,8 +42,6 @@ import static org.nuiton.i18n.I18n.t; */ public class ImportMarineLitterMultiPostAction extends AbstractImportMultiPostAction<MarineLitterBatchUIModel, MarineLitterBatchUI, MarineLitterBatchUIHandler> { - protected Map<String, Object> notImportedData; - public ImportMarineLitterMultiPostAction(MarineLitterBatchUIHandler handler) { super(handler); } @@ -71,45 +67,35 @@ public class ImportMarineLitterMultiPostAction extends AbstractImportMultiPostAc } @Override - public void releaseAction() { - notImportedData = null; - super.releaseAction(); + protected String getSuccessMessage(File file) { + return t("tutti.editMarineLitterBatch.action.importMultiPost.success", file); } @Override - protected void importBatches(FishingOperation operation) { - notImportedData = multiPostImportExportService.importMarineLitter(file, operation); + protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { + + Map<String, Object> notImportedData = multiPostImportExportService.importMarineLitter(file, operation); + return notImportedData; + } @Override - public void postSuccessAction() { - super.postSuccessAction(); - - if (!notImportedData.isEmpty()) { - MultiPostImportLogDialog dialog = new MultiPostImportLogDialog((Dialog) getContext().getActionUI()); - - Collection<MarineLitterBatch> notImportedMarineLitterBatches = - (Collection<MarineLitterBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); - - StringBuffer stringBuffer = new StringBuffer(); - Float totalWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT); - if (totalWeight != null) { - stringBuffer.append("- " + t("tutti.multiPostImportLog.totalWeight", totalWeight) + "\n"); - } - - for (MarineLitterBatch mlb : notImportedMarineLitterBatches) { - stringBuffer.append("- " + decorate(mlb.getMarineLitterCategory()) + " / " + decorate(mlb.getMarineLitterSizeCategory()) + "\n"); - } - - if (stringBuffer.length() > 0) { - JTextArea batchList = dialog.getBatchList(); - batchList.setText(stringBuffer.toString()); - dialog.setSize(400, 300); - dialog.setLocationRelativeTo(getContext().getMainUI()); - dialog.setVisible(true); - } + protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + + Collection<MarineLitterBatch> notImportedMarineLitterBatches = + (Collection<MarineLitterBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); + + StringBuilder builder = new StringBuilder(); + Float totalWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT); + if (totalWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.totalWeight", totalWeight)).append("\n"); + } + + for (MarineLitterBatch mlb : notImportedMarineLitterBatches) { + builder.append("- ").append(decorate(mlb.getMarineLitterCategory())).append(" / ").append(decorate(mlb.getMarineLitterSizeCategory())).append("\n"); } - sendMessage(t("tutti.editMarineLitterBatch.action.importMultiPost.success", file)); + return builder.toString(); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportSpeciesMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportSpeciesMultiPostAction.java index ef7317d..1d151f4 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportSpeciesMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportSpeciesMultiPostAction.java @@ -26,13 +26,11 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.ui.swing.content.operation.catches.MultiPostImportLogDialog; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; -import javax.swing.JTextArea; -import java.awt.Dialog; +import java.io.File; import java.util.Collection; import java.util.Map; @@ -44,8 +42,6 @@ import static org.nuiton.i18n.I18n.t; */ public class ImportSpeciesMultiPostAction extends AbstractImportMultiPostAction<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - protected Map<String, Object> notImportedData; - public ImportSpeciesMultiPostAction(SpeciesBatchUIHandler handler) { super(handler); } @@ -71,56 +67,48 @@ public class ImportSpeciesMultiPostAction extends AbstractImportMultiPostAction< } @Override - public void releaseAction() { - notImportedData = null; - super.releaseAction(); + protected String getSuccessMessage(File file) { + return t("tutti.editSpeciesBatch.action.importMultiPost.success", file); } @Override - protected void importBatches(FishingOperation operation) { - notImportedData = multiPostImportExportService.importSpecies(file, operation); + protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { + + Map<String, Object> notImportedData = multiPostImportExportService.importSpecies(file, operation); + return notImportedData; + } @Override - public void postSuccessAction() { - super.postSuccessAction(); - - if (!notImportedData.isEmpty()) { - MultiPostImportLogDialog dialog = new MultiPostImportLogDialog((Dialog) getContext().getActionUI()); - - Collection<SpeciesBatch> notImportedSpeciesBatches = - (Collection<SpeciesBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); - - StringBuffer stringBuffer = new StringBuffer(); - Float totalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT); - if (totalSortedWeight != null) { - stringBuffer.append("- " + t("tutti.multiPostImportLog.totalSortedWeight", totalSortedWeight) + "\n"); - } - - Float inertWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT); - if (inertWeight != null) { - stringBuffer.append("- " + t("tutti.multiPostImportLog.inertWeight", inertWeight) + "\n"); - } - - Float livingNotItemizedWeight = - (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT); - if (livingNotItemizedWeight != null) { - stringBuffer.append("- " + t("tutti.multiPostImportLog.livingNotItemizedWeight", livingNotItemizedWeight) + "\n"); - } - - for (SpeciesBatch sb : notImportedSpeciesBatches) { - stringBuffer.append("- " + decorate(sb.getSpecies()) + " / " + decorate(sb.getSampleCategoryValue()) + "\n"); - } - - if (stringBuffer.length() > 0) { - JTextArea batchList = dialog.getBatchList(); - batchList.setText(stringBuffer.toString()); - dialog.setSize(400, 300); - dialog.setLocationRelativeTo(getContext().getMainUI()); - dialog.setVisible(true); - } + protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + + StringBuilder builder = new StringBuilder(); + + Collection<SpeciesBatch> notImportedSpeciesBatches = + (Collection<SpeciesBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); + + Float totalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT); + if (totalSortedWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.totalSortedWeight", totalSortedWeight)).append("\n"); + } + + Float inertWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT); + if (inertWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.inertWeight", inertWeight)).append("\n"); + } + + Float livingNotItemizedWeight = + (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT); + if (livingNotItemizedWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.livingNotItemizedWeight", livingNotItemizedWeight)).append("\n"); } - sendMessage(t("tutti.editSpeciesBatch.action.importMultiPost.success", file)); + for (SpeciesBatch sb : notImportedSpeciesBatches) { + builder.append("- ").append(decorate(sb.getSpecies())).append(" / ").append(decorate(sb.getSampleCategoryValue())).append("\n"); + } + + return builder.toString(); + } + } diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index cb488eb..6469321 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -33,6 +33,11 @@ tutti.applicationUpdater.updateDone.deleteDirectory.caches.error= tutti.applicationUpdater.updateDone.deleteDirectory.dbConf.error= tutti.applicationUpdater.updateDone.deleteDirectory.enum.error= tutti.applicationUpdater.updateDone.deleteDirectory.i18n.error= +tutti.askToSaveCatch.help= +tutti.askToSaveCatch.message= +tutti.askToSaveCatch.title= +tutti.askToSaveCatchBeforeExport.help= +tutti.askToSaveCatchBeforeImport.help= tutti.attachmentEditor.action.add.mnemonic= tutti.attachmentEditor.action.add.tip= tutti.attachmentEditor.action.closeAttachment.tip= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index 0483eb8..8260850 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -32,6 +32,10 @@ tutti.applicationUpdater.updateDone.deleteDirectory.caches.error=Erreur lors de tutti.applicationUpdater.updateDone.deleteDirectory.dbConf.error=Erreur lors de la suppression du dossier de configuration de base de données tutti.applicationUpdater.updateDone.deleteDirectory.enum.error=Erreur lors de la suppression du dossier d'énumération tutti.applicationUpdater.updateDone.deleteDirectory.i18n.error=Erreur lors de la suppression du dossier d'internationalisation +tutti.askToSaveCatch.message=Des données sur la capture ne sont pas enregistrées +tutti.askToSaveCatch.title=Modifications non enregistrées sur la capture +tutti.askToSaveCatchBeforeExport.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour ne pas enregistrer les modifications</li><li><strong>OK</strong> pour enregistrer les modifications avant d'effectuer l'export</li></ul> +tutti.askToSaveCatchBeforeImport.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour ne pas enregistrer les modifications</li><li><strong>OK</strong> pour enregistrer les modifications avant d'effectuer l'import</li></ul> tutti.attachmentEditor.action.add.mnemonic=A tutti.attachmentEditor.action.add.tip=Ajouter une pièce jointe tutti.attachmentEditor.action.closeAttachment.tip=Fermer la fenêtre des pièces-jointes -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.