branch develop updated (77b9ec7 -> 55fe697)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from 77b9ec7 fixes #6077: [TECHNIQUE] Mise à jour de librairies new 68729dc fixes #6105 vérifier données au dessus du tableau sont bien exportées/importées new 32fbe4d fixes #6105 (ajout import/export multipost pour l'écran capture) new 55fe697 fixes #6105 (amélioration du rapport des données non importées - utilisation des unités + meilleur nommage des actions possibles) The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 55fe697b56ab92173bfcd9800aac273e649b3dba Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 16 12:38:42 2014 +0100 fixes #6105 (amélioration du rapport des données non importées - utilisation des unités + meilleur nommage des actions possibles) commit 32fbe4dc334d2c3e32b4b3ea6ad79e4fd0b9ffa2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 16 01:17:59 2014 +0100 fixes #6105 (ajout import/export multipost pour l'écran capture) 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 Summary of changes: .../service/catches/multipost/CatchBatchRow.java | 70 +++++++ .../catches/multipost/CatchBatchRowModel.java | 28 +++ .../catches/multipost/MultiPostConstants.java | 34 ++++ .../catches/multipost/MultiPostExportService.java | 81 +++++--- .../catches/multipost/MultiPostImportService.java | 194 +++++++++++++++--- .../filtered-resources/tutti-help-fr.properties | 27 +-- .../action/AbstractExportMultiPostAction.java | 155 ++++++++++++--- .../action/AbstractImportMultiPostAction.java | 219 +++++++++++++++++---- .../action/ExportAccidentalMultiPostAction.java | 16 +- .../swing/action/ExportBenthosMultiPostAction.java | 16 +- .../swing/action/ExportCatchMultiPostAction.java | 63 ++++++ ...ExportIndividualObservationMultiPostAction.java | 16 +- .../action/ExportMarineLitterMultiPostAction.java | 16 +- .../swing/action/ExportSpeciesMultiPostAction.java | 16 +- .../action/ImportAccidentalMultiPostAction.java | 16 +- .../swing/action/ImportBenthosMultiPostAction.java | 81 ++++---- .../swing/action/ImportCatchMultiPostAction.java | 96 +++++++++ ...ImportIndividualObservationMultiPostAction.java | 16 +- .../action/ImportMarineLitterMultiPostAction.java | 63 +++--- .../swing/action/ImportSpeciesMultiPostAction.java | 82 ++++---- .../content/operation/catches/EditCatchesUI.css | 18 ++ .../content/operation/catches/EditCatchesUI.jaxx | 2 + .../resources/i18n/tutti-ui-swing_en_GB.properties | 33 ++++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 35 +++- 24 files changed, 1086 insertions(+), 307 deletions(-) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRow.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostConstants.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCatchMultiPostAction.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportCatchMultiPostAction.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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>.
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 32fbe4dc334d2c3e32b4b3ea6ad79e4fd0b9ffa2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 16 01:17:59 2014 +0100 fixes #6105 (ajout import/export multipost pour l'écran capture) --- .../service/catches/multipost/CatchBatchRow.java | 70 ++++++++ .../catches/multipost/CatchBatchRowModel.java | 28 +++ .../catches/multipost/MultiPostConstants.java | 34 ++++ .../catches/multipost/MultiPostExportService.java | 81 ++++++--- .../catches/multipost/MultiPostImportService.java | 194 ++++++++++++++++++--- .../filtered-resources/tutti-help-fr.properties | 27 +-- .../action/AbstractExportMultiPostAction.java | 9 +- .../action/AbstractImportMultiPostAction.java | 9 +- .../swing/action/ExportCatchMultiPostAction.java | 63 +++++++ .../swing/action/ImportBenthosMultiPostAction.java | 6 +- .../swing/action/ImportCatchMultiPostAction.java | 99 +++++++++++ .../action/ImportMarineLitterMultiPostAction.java | 6 +- .../swing/action/ImportSpeciesMultiPostAction.java | 6 +- .../content/operation/catches/EditCatchesUI.css | 18 ++ .../content/operation/catches/EditCatchesUI.jaxx | 2 + .../resources/i18n/tutti-ui-swing_en_GB.properties | 23 +++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 18 ++ 17 files changed, 604 insertions(+), 89 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRow.java new file mode 100644 index 0000000..b0b9740 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRow.java @@ -0,0 +1,70 @@ +package fr.ifremer.tutti.service.catches.multipost; + +/** + * Created on 11/15/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.9 + */ +public class CatchBatchRow extends AbstractFishingOperationRow { + + public static final String CATCH_TOTAL_WEIGHT = "catchTotalWeight"; + + public static final String CATCH_TOTAL_REJECTED_WEIGHT = "catchTotalRejectedWeight"; + + public static final String BENTHOS_TOTAL_SORTED_WEIGHT = "benthosTotalSortedWeight"; + + public static final String SPECIES_TOTAL_SORTED_WEIGHT = "speciesTotalSortedWeight"; + + public static final String MARINE_LITTER_TOTAL_WEIGHT = "marineLitterTotalWeight"; + + protected Float benthosTotalSortedWeight; + + protected Float speciesTotalSortedWeight; + + protected Float catchTotalWeight; + + protected Float catchTotalRejectedWeight; + + protected Float marineLitterTotalWeight; + + public Float getBenthosTotalSortedWeight() { + return benthosTotalSortedWeight; + } + + public void setBenthosTotalSortedWeight(Float benthosTotalSortedWeight) { + this.benthosTotalSortedWeight = benthosTotalSortedWeight; + } + + public Float getSpeciesTotalSortedWeight() { + return speciesTotalSortedWeight; + } + + public void setSpeciesTotalSortedWeight(Float speciesTotalSortedWeight) { + this.speciesTotalSortedWeight = speciesTotalSortedWeight; + } + + public Float getCatchTotalWeight() { + return catchTotalWeight; + } + + public void setCatchTotalWeight(Float catchTotalWeight) { + this.catchTotalWeight = catchTotalWeight; + } + + public Float getCatchTotalRejectedWeight() { + return catchTotalRejectedWeight; + } + + public void setCatchTotalRejectedWeight(Float catchTotalRejectedWeight) { + this.catchTotalRejectedWeight = catchTotalRejectedWeight; + } + + public Float getMarineLitterTotalWeight() { + return marineLitterTotalWeight; + } + + public void setMarineLitterTotalWeight(Float marineLitterTotalWeight) { + this.marineLitterTotalWeight = marineLitterTotalWeight; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java new file mode 100644 index 0000000..786e090 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java @@ -0,0 +1,28 @@ +package fr.ifremer.tutti.service.catches.multipost; + +import fr.ifremer.tutti.service.TuttiCsvUtil; + +/** + * Created on 11/15/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.9 + */ +public class CatchBatchRowModel extends AbstractFishingOperationRowModel<CatchBatchRow> { + + public CatchBatchRowModel(char separator) { + super(separator); + + newColumnForImportExport(CatchBatchRow.CATCH_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(CatchBatchRow.CATCH_TOTAL_REJECTED_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(CatchBatchRow.SPECIES_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(CatchBatchRow.BENTHOS_TOTAL_SORTED_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForImportExport(CatchBatchRow.MARINE_LITTER_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + + } + + @Override + public CatchBatchRow newEmptyInstance() { + return new CatchBatchRow(); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostConstants.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostConstants.java new file mode 100644 index 0000000..60b41e3 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostConstants.java @@ -0,0 +1,34 @@ +package fr.ifremer.tutti.service.catches.multipost; + +/** + * Created on 11/16/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.9 + */ +public interface MultiPostConstants { + + String BATCHES_KEY = "batchesKey"; + + String ATTACHMENTS_DIRECTORY = "attachments"; + + String ATTACHMENTS_FILE = "attachments.csv"; + + String CATCH_BATCH_FILE = "catchBatch.csv"; + + String SPECIES_FILE = "species.csv"; + + String BENTHOS_FILE = "benthos.csv"; + + String MARINE_LITTER_FILE = "marineLitter.csv"; + + String INDIVIDUAL_OBSERVATION_FILE = "individualObservation.csv"; + + String ACCIDENTAL_CATCHES_FILE = "accidentalCatches.csv"; + + String FREQUENCIES_FILE = "frequencies.csv"; + + String CARACTERISTIC_FILE = "caracteristics.csv"; + + String WEIGHTS_FILE = "weights.csv"; +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportService.java index feab245..5321623 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportService.java @@ -67,29 +67,7 @@ import static org.nuiton.i18n.I18n.t; * @author tchemit <chemit@codelutin.com> * @since 2.2 */ -public class MultiPostExportService extends AbstractTuttiService { - - public static final String BATCHES_KEY = "batchesKey"; - - protected static final String ATTACHMENTS_DIRECTORY = "attachments"; - - protected static final String ATTACHMENTS_FILE = "attachments.csv"; - - protected static final String SPECIES_FILE = "species.csv"; - - protected static final String BENTHOS_FILE = "benthos.csv"; - - protected static final String MARINE_LITTER_FILE = "marineLitter.csv"; - - protected static final String INDIVIDUAL_OBSERVATION_FILE = "individualObservation.csv"; - - protected static final String ACCIDENTAL_CATCHES_FILE = "accidentalCatches.csv"; - - protected static final String FREQUENCIES_FILE = "frequencies.csv"; - - protected static final String CARACTERISTIC_FILE = "caracteristics.csv"; - - protected static final String WEIGHTS_FILE = "weights.csv"; +public class MultiPostExportService extends AbstractTuttiService implements MultiPostConstants { protected PersistenceService persistenceService; @@ -121,6 +99,39 @@ public class MultiPostExportService extends AbstractTuttiService { } /** + * Export catch batch. + * + * @param file the file to export the batches into + * @param operation the operation to export + */ + public void exportCatchBatch(File file, FishingOperation operation) { + + String operationId = operation.getId(); + if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { + + // export catch batch weights + + CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); + + CatchBatchRow weights = new CatchBatchRow(); + weights.setCatchTotalWeight(catchBatch.getCatchTotalWeight()); + weights.setCatchTotalRejectedWeight(catchBatch.getCatchTotalRejectedWeight()); + weights.setSpeciesTotalSortedWeight(catchBatch.getSpeciesTotalSortedWeight()); + weights.setBenthosTotalSortedWeight(catchBatch.getBenthosTotalSortedWeight()); + weights.setMarineLitterTotalWeight(catchBatch.getMarineLitterTotalWeight()); + + List<AttachmentRow> attachmentRows = Lists.newArrayList(); + addAttachments(catchBatch.getId(), catchBatch.getIdAsInt(), ObjectTypeCode.CATCH_BATCH, attachmentRows); + + exportOperation(weights, operation); + + exportCatchBatch(file, + weights, + attachmentRows); + } + } + + /** * Export species batches. * * @param file the file to export the batches into @@ -466,6 +477,30 @@ public class MultiPostExportService extends AbstractTuttiService { //-- Internal methods --// //------------------------------------------------------------------------// + protected void exportCatchBatch(File file, + CatchBatchRow weights, + List<AttachmentRow> attachmentRows) { + + CatchBatchRowModel csvModel = new CatchBatchRowModel(CSV_SEPARATOR); + + File directory = Files.createTempDir(); + List<File> file2zip = Lists.newArrayList(); + + File weightsFile = new File(directory, CATCH_BATCH_FILE); + file2zip.add(weightsFile); + export(weightsFile, + csvModel, + Lists.newArrayList(weights), + n("tutti.service.multipost.export.weights.error")); + + // export attachments + create final zip + + exportAttachmentsAndCreateZip(file, + directory, + file2zip, + attachmentRows); + } + protected void exportCatches(File file, String batchFile, CatchWeightsRow weights, diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java index 19a54b7..856ec9d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java @@ -89,29 +89,7 @@ import static org.nuiton.i18n.I18n.t; * @author kmorin <kmorin@codelutin.com> * @since 2.2 */ -public class MultiPostImportService extends AbstractTuttiService { - - public static final String BATCHES_KEY = "batchesKey"; - - protected static final String ATTACHMENTS_DIRECTORY = "attachments"; - - protected static final String ATTACHMENTS_FILE = "attachments.csv"; - - protected static final String SPECIES_FILE = "species.csv"; - - protected static final String BENTHOS_FILE = "benthos.csv"; - - protected static final String MARINE_LITTER_FILE = "marineLitter.csv"; - - protected static final String INDIVIDUAL_OBSERVATION_FILE = "individualObservation.csv"; - - protected static final String ACCIDENTAL_CATCHES_FILE = "accidentalCatches.csv"; - - protected static final String FREQUENCIES_FILE = "frequencies.csv"; - - protected static final String CARACTERISTIC_FILE = "caracteristics.csv"; - - protected static final String WEIGHTS_FILE = "weights.csv"; +public class MultiPostImportService extends AbstractTuttiService implements MultiPostConstants { protected PersistenceService persistenceService; @@ -143,6 +121,163 @@ public class MultiPostImportService extends AbstractTuttiService { } //------------------------------------------------------------------------// + //-- Import Catch --// + //------------------------------------------------------------------------// + + /** + * Import catch batch from a satellite post + * + * @param file the file to import the batches from + * @param operation the operation in which to add the batches + * @return the list of the catch weight which have not been imported, because there were concurrent batches + */ + public Map<String, Object> importCatchBatch(final File file, + final FishingOperation operation) { + + Callable<Map<String, Object>> call = new Callable<Map<String, Object>>() { + + @Override + public Map<String, Object> call() throws Exception { + + File tempDir = ApplicationIOUtil.explodeZip( + context.getConfig().getTmpDirectory(), + file, + n("tutti.service.multipost.uncompress.error")); + + //check operation + CatchBatchRowModel weightsModel = new CatchBatchRowModel(MultiPostExportService.CSV_SEPARATOR); + checkSameOperation(tempDir, CATCH_BATCH_FILE, weightsModel, operation); + + final Map<String, Object> notImportedData = Maps.newHashMap(); + + // Import weights + CatchBatch catchBatch = importCatchWeights(tempDir, + operation, + weightsModel, + notImportedData); + + // Import attachments + importAttachments(tempDir, + catchBatch.getIdAsInt(), + ObjectTypeCode.CATCH_BATCH); + + + return notImportedData; + } + }; + + Map<String, Object> result = persistenceService.invoke(call); + return result; + } + + protected CatchBatch importCatchWeights(File file, + FishingOperation operation, + CatchBatchRowModel weightsModel, + Map<String, Object> notImportedData) { + Reader reader = ApplicationIOUtil.newReader( + new File(file, CATCH_BATCH_FILE), + n("tutti.service.multipost.import.weights.error")); + + try { + Import<CatchBatchRow> importer = Import.newImport(weightsModel, reader); + + try { + Iterator<CatchBatchRow> iterator = importer.iterator(); + if (iterator.hasNext()) { + CatchBatchRow row = iterator.next(); + CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operation.getId()); + catchBatch.setFishingOperation(operation); + + if (catchBatch.getCatchTotalWeight() == null) { + catchBatch.setCatchTotalWeight(row.getCatchTotalWeight()); + + } else if (row.getCatchTotalWeight() != null) { + notImportedData.put(CatchBatch.PROPERTY_CATCH_TOTAL_WEIGHT, row.getCatchTotalWeight()); + } + + if (catchBatch.getCatchTotalRejectedWeight() == null) { + catchBatch.setCatchTotalRejectedWeight(row.getCatchTotalRejectedWeight()); + + } else if (row.getCatchTotalRejectedWeight() != null) { + notImportedData.put(CatchBatch.PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT, row.getCatchTotalRejectedWeight()); + } + + if (catchBatch.getSpeciesTotalSortedWeight() == null) { + catchBatch.setSpeciesTotalSortedWeight(row.getSpeciesTotalSortedWeight()); + + } else if (row.getSpeciesTotalSortedWeight() != null) { + notImportedData.put(CatchBatch.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT, row.getSpeciesTotalSortedWeight()); + } + + if (catchBatch.getBenthosTotalSortedWeight() == null) { + catchBatch.setBenthosTotalSortedWeight(row.getBenthosTotalSortedWeight()); + + } else if (row.getBenthosTotalSortedWeight() != null) { + notImportedData.put(CatchBatch.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT, row.getBenthosTotalSortedWeight()); + } + + if (catchBatch.getMarineLitterTotalWeight() == null) { + catchBatch.setMarineLitterTotalWeight(row.getMarineLitterTotalWeight()); + + } else if (row.getMarineLitterTotalWeight() != null) { + notImportedData.put(CatchBatch.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, row.getMarineLitterTotalWeight()); + } + + persistenceService.saveCatchBatch(catchBatch); + + return catchBatch; + } + ApplicationIOUtil.close(importer, "Could not close importer"); + } finally { + IOUtils.closeQuietly(importer); + } + ApplicationIOUtil.close(reader, "Could not close reader"); + } finally { + IOUtils.closeQuietly(reader); + } + + return null; + } + + protected void importAttachments(File directory, + Integer catchBatchId, + ObjectTypeCode objectType) { + + Reader reader = ApplicationIOUtil.newReader( + new File(directory, ATTACHMENTS_FILE), + n("tutti.service.multipost.import.attachments.error")); + + try { + AttachmentRowModel attachmentModel = + new AttachmentRowModel(MultiPostExportService.CSV_SEPARATOR, new File(directory, ATTACHMENTS_DIRECTORY)); + Import<AttachmentRow> importer = Import.newImport(attachmentModel, reader); + + try { + for (AttachmentRow row : importer) { + + Attachment attachment = Attachments.newAttachment(); + attachment.setName(row.getName()); + attachment.setComment(row.getComment()); + attachment.setObjectType(objectType); + + attachment.setObjectId(catchBatchId); + + persistenceService.createAttachment(attachment, row.getFile()); + + } + + ApplicationIOUtil.close(importer, "Could not close importer"); + } finally { + IOUtils.closeQuietly(importer); + } + + ApplicationIOUtil.close(reader, "Could not close reader"); + } finally { + IOUtils.closeQuietly(reader); + } + } + + //------------------------------------------------------------------------// //-- Import Species --// //------------------------------------------------------------------------// @@ -168,7 +303,7 @@ public class MultiPostImportService extends AbstractTuttiService { //check operation CatchWeightsRowModel weightsModel = new CatchWeightsRowModel(MultiPostExportService.CSV_SEPARATOR); - checkSameOperation(tempDir, weightsModel, operation); + checkSameOperation(tempDir, WEIGHTS_FILE, weightsModel, operation); final Map<String, Object> notImportedData = Maps.newHashMap(); @@ -438,7 +573,7 @@ public class MultiPostImportService extends AbstractTuttiService { //check operation CatchWeightsRowModel weightsModel = new CatchWeightsRowModel(MultiPostExportService.CSV_SEPARATOR); - checkSameOperation(tempDir, weightsModel, operation); + checkSameOperation(tempDir, WEIGHTS_FILE, weightsModel, operation); Map<String, Object> notImportedData = Maps.newHashMap(); final Map<String, BenthosBatch> notImportedBatches = Maps.newLinkedHashMap(); @@ -701,7 +836,7 @@ public class MultiPostImportService extends AbstractTuttiService { //check operation MarineLitterWeightRowModel weightModel = new MarineLitterWeightRowModel(MultiPostExportService.CSV_SEPARATOR); - checkSameOperation(tempDir, weightModel, operation); + checkSameOperation(tempDir, WEIGHTS_FILE, weightModel, operation); String operationId = operation.getId(); @@ -870,7 +1005,7 @@ public class MultiPostImportService extends AbstractTuttiService { //check operation FishingOperationRowModel operationModel = new FishingOperationRowModel(MultiPostExportService.CSV_SEPARATOR); - checkSameOperation(tempDir, operationModel, operation); + checkSameOperation(tempDir, WEIGHTS_FILE, operationModel, operation); TuttiDataContext dataContext = context.getDataContext(); List<Species> speciesList = dataContext.getReferentSpecies(); @@ -1022,7 +1157,7 @@ public class MultiPostImportService extends AbstractTuttiService { //check operation FishingOperationRowModel operationModel = new FishingOperationRowModel(MultiPostExportService.CSV_SEPARATOR); - checkSameOperation(tempDir, operationModel, operation); + checkSameOperation(tempDir, WEIGHTS_FILE, operationModel, operation); TuttiDataContext dataContext = context.getDataContext(); List<Species> speciesList = dataContext.getReferentSpecies(); @@ -1186,10 +1321,11 @@ public class MultiPostImportService extends AbstractTuttiService { } protected <FO extends AbstractFishingOperationRow> void checkSameOperation(File directory, + String fileName, AbstractFishingOperationRowModel<FO> fishingOperationRowModel, FishingOperation operation) { Reader reader = ApplicationIOUtil.newReader( - new File(directory, WEIGHTS_FILE), + new File(directory, fileName), n("tutti.service.multipost.import.operation.error")); try { diff --git a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties index 1a853d5..ec3237d 100644 --- a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties +++ b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties @@ -1,28 +1,5 @@ -### -# #%L -# Tutti :: UI -# $Id:$ -# $HeadURL:$ -# %% -# Copyright (C) 2012 - 2014 Ifremer -# %% -# 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 -# 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 -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Thu Oct 23 12:12:24 CEST 2014 +#Sat Nov 15 23:48:54 CET 2014 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -146,6 +123,8 @@ tutti.editCatchBatch.action.exportFishingOperationReport.help=editFishingOperati tutti.editCatchBatch.action.exportFishingOperationReportForSumatra.help=editFishingOperation.html\#captureResumeActions tutti.editCatchBatch.action.exportFishingOperationReportForSumatra2.help=editFishingOperation.html\#captureResumeActions tutti.editCatchBatch.action.exportFishingOperationReportForSumatraV2.help= +tutti.editCatchBatch.action.exportMultiPost.help= +tutti.editCatchBatch.action.importMultiPost.help= tutti.editCatchBatch.action.saveCatchBatch.help=editFishingOperation.html\#captureResumeActions tutti.editCatchBatch.field.benthosTotalSampleSortedWeight.help=editFishingOperation.html\#captureResumeFields tutti.editCatchBatch.field.benthosTotalSortedWeight.help=editFishingOperation.html\#captureResumeFields 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 f526abc..58b48b8 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 @@ -76,6 +76,11 @@ public abstract class AbstractExportMultiPostAction<M extends AbstractBean, UI e super(handler, false); } + protected EditCatchesUI getEditCatchUI() { + EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class); + return catchesUI; + } + @Override public final boolean prepareAction() throws Exception { @@ -83,7 +88,7 @@ public abstract class AbstractExportMultiPostAction<M extends AbstractBean, UI e if (doAction) { - EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class); + EditCatchesUI catchesUI = getEditCatchUI(); EditCatchesUIModel model = catchesUI.getModel(); fishingOperation = model.getFishingOperation(); @@ -124,7 +129,7 @@ public abstract class AbstractExportMultiPostAction<M extends AbstractBean, UI e // save catches before export - EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class); + EditCatchesUI catchesUI = getEditCatchUI(); getActionEngine().runInternalAction(catchesUI.getHandler(), SaveCatchBatchAction.class); progressionModel.increments("Lancement de l'export"); 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 da4f5c2..f13f877 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 @@ -93,7 +93,7 @@ public abstract class AbstractImportMultiPostAction<M extends AbstractBean, UI e if (doAction) { - EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class); + EditCatchesUI catchesUI = getEditCatchUI(); EditCatchesUIModel model = catchesUI.getModel(); boolean canSave = model.isModify() && model.isValid(); @@ -141,7 +141,7 @@ public abstract class AbstractImportMultiPostAction<M extends AbstractBean, UI e @Override public final void doAction() throws Exception { - EditCatchesUI editCatchesUI = getUI().getParentContainer(EditCatchesUI.class); + EditCatchesUI editCatchesUI = getEditCatchUI(); EditCatchesUIModel editCatchesUIModel = editCatchesUI.getModel(); FishingOperation operation = editCatchesUIModel.getFishingOperation(); @@ -239,4 +239,9 @@ public abstract class AbstractImportMultiPostAction<M extends AbstractBean, UI e } + + protected EditCatchesUI getEditCatchUI() { + EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class); + return catchesUI; + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCatchMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCatchMultiPostAction.java new file mode 100644 index 0000000..6a8f34c --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCatchMultiPostAction.java @@ -0,0 +1,63 @@ +package fr.ifremer.tutti.ui.swing.action; + +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.EditCatchesUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; + +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 11/15/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.9 + */ +public class ExportCatchMultiPostAction extends AbstractExportMultiPostAction<EditCatchesUIModel, EditCatchesUI, EditCatchesUIHandler> { + + public ExportCatchMultiPostAction(EditCatchesUIHandler handler) { + super(handler); + } + + @Override + protected EditCatchesUI getEditCatchUI() { + EditCatchesUI catchesUI = getUI(); + return catchesUI; + } + + @Override + protected String getFileExtension() { + return "tuttiCatch"; + } + + @Override + protected String getFileExtensionDescription() { + return t("tutti.common.file.tuttiCatch"); + } + + @Override + protected String getFileChooserTitle() { + return t("tutti.editCatchBatch.action.exportMultiPost.destinationFile.title"); + } + + @Override + protected String getFileChooserButton() { + return t("tutti.editCatchBatch.action.exportMultiPost.destinationFile.button"); + } + + @Override + protected String getSuccessMessage(File file) { + return t("tutti.editCatchBatch.action.exportMultiPost.success", file); + } + + @Override + protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { + + multiPostImportExportService.exportCatchBatch(file, fishingOperation); + + } + +} \ No newline at end of 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 c37a2a1..fbddad2 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 @@ -82,9 +82,6 @@ public class ImportBenthosMultiPostAction extends AbstractImportMultiPostAction< @Override 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) { @@ -102,6 +99,9 @@ public class ImportBenthosMultiPostAction extends AbstractImportMultiPostAction< builder.append("- ").append(t("tutti.multiPostImportLog.livingNotItemizedWeight", livingNotItemizedWeight)).append("\n"); } + Collection<BenthosBatch> notImportedBenthosBatches = + (Collection<BenthosBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); + for (BenthosBatch sb : notImportedBenthosBatches) { builder.append("- ").append(decorate(sb.getSpecies())).append(" / ").append(decorate(sb.getSampleCategoryValue())).append("\n"); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportCatchMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportCatchMultiPostAction.java new file mode 100644 index 0000000..bcbda02 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportCatchMultiPostAction.java @@ -0,0 +1,99 @@ +package fr.ifremer.tutti.ui.swing.action; + +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.EditCatchesUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; + +import java.io.File; +import java.util.Map; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 11/15/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.9 + */ +public class ImportCatchMultiPostAction extends AbstractImportMultiPostAction<EditCatchesUIModel, EditCatchesUI, EditCatchesUIHandler> { + + public ImportCatchMultiPostAction(EditCatchesUIHandler handler) { + super(handler); + } + + @Override + protected String getFileExtension() { + return "tuttiCatch"; + } + + @Override + protected String getFileExtensionDescription() { + return t("tutti.common.file.tuttiCatch"); + } + + @Override + protected String getFileChooserTitle() { + return t("tutti.editCatchBatch.action.importMultiPost.sourceFile.title"); + } + + @Override + protected String getFileChooserButton() { + return t("tutti.editCatchBatch.action.importMultiPost.sourceFile.button"); + } + + @Override + protected String getSuccessMessage(File file) { + return t("tutti.editCatchBatch.action.importMultiPost.success", file); + } + + @Override + protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { + + Map<String, Object> notImportedData = multiPostImportExportService.importCatchBatch(file, operation); + return notImportedData; + + } + + @Override + protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + + StringBuilder builder = new StringBuilder(); + + Float catchTotalWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_CATCH_TOTAL_WEIGHT); + if (catchTotalWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.catchTotalWeight", catchTotalWeight)).append("\n"); + } + + Float catchTotalRejectedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT); + if (catchTotalRejectedWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.catchTotalRejectedWeight", catchTotalRejectedWeight)).append("\n"); + } + + Float speciesTotalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT); + if (speciesTotalSortedWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.speciesTotalSortedWeight", speciesTotalSortedWeight)).append("\n"); + } + + Float benthosTotalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT); + if (benthosTotalSortedWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.benthosTotalSortedWeight", benthosTotalSortedWeight)).append("\n"); + } + + Float marineLitterTotalWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT); + if (marineLitterTotalWeight != null) { + builder.append("- ").append(t("tutti.multiPostImportLog.marineLitterTotalWeight", marineLitterTotalWeight)).append("\n"); + } + + return builder.toString(); + + } + + @Override + protected EditCatchesUI getEditCatchUI() { + EditCatchesUI catchesUI = getUI(); + return catchesUI; + } +} \ No newline at end of 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 47d73a6..2f9fef6 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 @@ -82,15 +82,15 @@ public class ImportMarineLitterMultiPostAction extends AbstractImportMultiPostAc @Override 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"); } + Collection<MarineLitterBatch> notImportedMarineLitterBatches = + (Collection<MarineLitterBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); + for (MarineLitterBatch mlb : notImportedMarineLitterBatches) { builder.append("- ").append(decorate(mlb.getMarineLitterCategory())).append(" / ").append(decorate(mlb.getMarineLitterSizeCategory())).append("\n"); } 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 1d151f4..762a117 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 @@ -84,9 +84,6 @@ public class ImportSpeciesMultiPostAction extends AbstractImportMultiPostAction< 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"); @@ -103,6 +100,9 @@ public class ImportSpeciesMultiPostAction extends AbstractImportMultiPostAction< builder.append("- ").append(t("tutti.multiPostImportLog.livingNotItemizedWeight", livingNotItemizedWeight)).append("\n"); } + Collection<SpeciesBatch> notImportedSpeciesBatches = + (Collection<SpeciesBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); + for (SpeciesBatch sb : notImportedSpeciesBatches) { builder.append("- ").append(decorate(sb.getSpecies())).append(" / ").append(decorate(sb.getSampleCategoryValue())).append("\n"); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css index 5b9de8e..fe28775 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css @@ -361,6 +361,24 @@ ComputableDataEditor { _help: {"tutti.editCatchBatch.action.exportFishingOperationReportForSumatra.help"}; } +#importMultiPostButton { + actionIcon: import; + text: "tutti.editCatchBatch.action.importMultiPost"; + toolTipText: "tutti.editCatchBatch.action.importMultiPost.tip"; + i18nMnemonic: "tutti.editCatchBatch.action.importMultiPost.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.ImportCatchMultiPostAction.class}; + _help: {"tutti.editCatchBatch.action.importMultiPost.help"}; +} + +#exportMultiPostButton { + actionIcon: export; + text: "tutti.editCatchBatch.action.exportMultiPost"; + toolTipText: "tutti.editCatchBatch.action.exportMultiPost.tip"; + i18nMnemonic: "tutti.editCatchBatch.action.exportMultiPost.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.ExportCatchMultiPostAction.class}; + _help: {"tutti.editCatchBatch.action.exportMultiPost.help"}; +} + #saveButton { actionIcon: save; text: "tutti.editCatchBatch.action.saveCatchBatch"; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx index 303b136..f1449ce 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx @@ -102,6 +102,8 @@ public EditCatchesUI(FishingOperationsUI parentUI) { <JToolBar id='catchesCaracteristicsTabToolBar'> <JButton id='exportFishingOperationReportButton'/> <JButton id='exportFishingOperationReportForSumatraButton'/> + <JButton id='importMultiPostButton'/> + <JButton id='exportMultiPostButton'/> <ButtonAttachment id='catchesCaracteristicsAttachmentsButton' constructorParams='getHandler().getContext(), getModel()'/> </JToolBar> 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 6469321..1be41be 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 @@ -94,6 +94,7 @@ tutti.common.file.pdf= tutti.common.file.protocol= tutti.common.file.tuttiAccidental= tutti.common.file.tuttiBenthos= +tutti.common.file.tuttiCatch= tutti.common.file.tuttiIndividualObservation= tutti.common.file.tuttiMarineLitter= tutti.common.file.tuttiSpecies= @@ -569,6 +570,18 @@ tutti.editCatchBatch.action.exportFishingOperationReportForSumatra.tip= tutti.editCatchBatch.action.exportFishingOperationReportForSumatraV2= tutti.editCatchBatch.action.exportFishingOperationReportForSumatraV2.mnemonic= tutti.editCatchBatch.action.exportFishingOperationReportForSumatraV2.tip= +tutti.editCatchBatch.action.exportMultiPost= +tutti.editCatchBatch.action.exportMultiPost.destinationFile.button= +tutti.editCatchBatch.action.exportMultiPost.destinationFile.title= +tutti.editCatchBatch.action.exportMultiPost.mnemonic= +tutti.editCatchBatch.action.exportMultiPost.success= +tutti.editCatchBatch.action.exportMultiPost.tip= +tutti.editCatchBatch.action.importMultiPost= +tutti.editCatchBatch.action.importMultiPost.mnemonic= +tutti.editCatchBatch.action.importMultiPost.sourceFile.button= +tutti.editCatchBatch.action.importMultiPost.sourceFile.title= +tutti.editCatchBatch.action.importMultiPost.success= +tutti.editCatchBatch.action.importMultiPost.tip= tutti.editCatchBatch.action.saveCatchBatch= tutti.editCatchBatch.action.saveCatchBatch.mnemonic= tutti.editCatchBatch.action.saveCatchBatch.tip= @@ -1518,12 +1531,22 @@ tutti.message.openReplaceTemporaryUI.noSource= tutti.message.openReplaceTemporaryUI.noTarget= tutti.message.openReplaceTemporaryVesselUI.noSource= tutti.message.openReplaceTemporaryVesselUI.noTarget= +tutti.multiPostImportLog.benthosInertWeight= +tutti.multiPostImportLog.benthosLivingNotItemizedWeight= +tutti.multiPostImportLog.benthosTotalComputedWeight= +tutti.multiPostImportLog.benthosTotalSortedWeight= +tutti.multiPostImportLog.catchTotalRejectedWeight= +tutti.multiPostImportLog.catchTotalWeight= tutti.multiPostImportLog.close= tutti.multiPostImportLog.close.mnemonic= tutti.multiPostImportLog.close.tip= tutti.multiPostImportLog.inertWeight= tutti.multiPostImportLog.livingNotItemizedWeight= +tutti.multiPostImportLog.marineLitterTotalWeight= tutti.multiPostImportLog.message= +tutti.multiPostImportLog.speciesInertWeight= +tutti.multiPostImportLog.speciesLivingNotItemizedWeight= +tutti.multiPostImportLog.speciesTotalSortedWeight= tutti.multiPostImportLog.title= tutti.multiPostImportLog.totalSortedWeight= tutti.multiPostImportLog.totalWeight= 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 8260850..e8d0475 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 @@ -83,6 +83,7 @@ tutti.common.file.pdf=Extension d'un fichier pdf tutti.common.file.protocol=Extension d'un fichier de protocole Tutti tutti.common.file.tuttiAccidental=Fichier d'import/export des lots de captures accidentelles tutti.common.file.tuttiBenthos=Fichier d'import/export des lots de benthos +tutti.common.file.tuttiCatch=Fichier d'import/export des poids de capture tutti.common.file.tuttiIndividualObservation=Fichier d'import/export des lots d'observations individuelles tutti.common.file.tuttiMarineLitter=Fichier d'import/export des lots de déchets tutti.common.file.tuttiSpecies=Fichier d'import/export des lots d'espèces @@ -553,6 +554,18 @@ tutti.editCatchBatch.action.exportFishingOperationReport.tip=Envoyer le résumé tutti.editCatchBatch.action.exportFishingOperationReportForSumatra=Résumé Csv tutti.editCatchBatch.action.exportFishingOperationReportForSumatra.mnemonic=u tutti.editCatchBatch.action.exportFishingOperationReportForSumatra.tip=Exporter le résumé au format csv du trait sélectionnée +tutti.editCatchBatch.action.exportMultiPost=Exporter les poids de la capture +tutti.editCatchBatch.action.exportMultiPost.destinationFile.button=Choisir le fichier pour l'export +tutti.editCatchBatch.action.exportMultiPost.destinationFile.title=Exporter les poids de la capture +tutti.editCatchBatch.action.exportMultiPost.mnemonic=E +tutti.editCatchBatch.action.exportMultiPost.success=Les poids de la capture ont été exportés dans le fichier %s +tutti.editCatchBatch.action.exportMultiPost.tip=Exporter les poids de la capture pour les importer sur le poste maître +tutti.editCatchBatch.action.importMultiPost=Importer les poids de la capture +tutti.editCatchBatch.action.importMultiPost.mnemonic=I +tutti.editCatchBatch.action.importMultiPost.sourceFile.button=Choisir le fichier à importer +tutti.editCatchBatch.action.importMultiPost.sourceFile.title=Importer les poids de la capture +tutti.editCatchBatch.action.importMultiPost.success=Des poids de la captures ont été importés depuis le fichier %s +tutti.editCatchBatch.action.importMultiPost.tip=Importer des poids de la capture créés sur un poste satellite tutti.editCatchBatch.action.saveCatchBatch=Enregistrer tutti.editCatchBatch.action.saveCatchBatch.mnemonic=S tutti.editCatchBatch.action.saveCatchBatch.tip=Enregistrer la capture @@ -1461,12 +1474,17 @@ tutti.manageTemporaryReferential.title.choose.importTemporarySpeciesFile=Importe tutti.manageTemporaryReferential.title.choose.importTemporaryVesselFile=Importer un référentiel Navire tutti.message.openReplaceTemporaryUI.noSource=Aucun référentiel de type %s temporaire détecté dans la base. tutti.message.openReplaceTemporaryUI.noTarget=Aucun référentiel de type %s officiel détecté dans la base. +tutti.multiPostImportLog.benthosTotalSortedWeight=Poids total VRAC (Benthos) \: %s kg +tutti.multiPostImportLog.catchTotalRejectedWeight=Poids total NON TRIÉ(Capture) \: %s kg +tutti.multiPostImportLog.catchTotalWeight=Poids TOTAL (Capture) \: %s kg tutti.multiPostImportLog.close=Fermer tutti.multiPostImportLog.close.mnemonic=F tutti.multiPostImportLog.close.tip=Fermer la popup tutti.multiPostImportLog.inertWeight=Poids inerte trié \: %s kg tutti.multiPostImportLog.livingNotItemizedWeight=Poids vivant non détaillé \: %s kg +tutti.multiPostImportLog.marineLitterTotalWeight=Poids total (Macro-déchet) \: %s kg tutti.multiPostImportLog.message=Des données n'ont pas été importées car ces données avaient déjà été saisies \: +tutti.multiPostImportLog.speciesTotalSortedWeight=Poids total VRAC (Espèce) \: %s kg tutti.multiPostImportLog.title=Lots non importés tutti.multiPostImportLog.totalSortedWeight=Poids total trié \: %s kg tutti.multiPostImportLog.totalWeight=Poids total \: %s kg -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 55fe697b56ab92173bfcd9800aac273e649b3dba Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 16 12:38:42 2014 +0100 fixes #6105 (amélioration du rapport des données non importées - utilisation des unités + meilleur nommage des actions possibles) --- .../action/AbstractExportMultiPostAction.java | 72 ++++++++++++------- .../action/AbstractImportMultiPostAction.java | 82 +++++++++++++--------- .../swing/action/ImportBenthosMultiPostAction.java | 19 +++-- .../swing/action/ImportCatchMultiPostAction.java | 29 ++++---- .../action/ImportMarineLitterMultiPostAction.java | 11 +-- .../swing/action/ImportSpeciesMultiPostAction.java | 18 +++-- .../resources/i18n/tutti-ui-swing_en_GB.properties | 5 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 29 ++++---- 8 files changed, 154 insertions(+), 111 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 58b48b8..7ab9621 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 @@ -96,19 +96,56 @@ public abstract class AbstractExportMultiPostAction<M extends AbstractBean, UI e 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(); + if (canSave) { - // choose file to export - file = saveFile(decorate(fishingOperation, DecoratorService.FILE_NAME_COMPATIBLE), - extension, - getFileChooserTitle(), - getFileChooserButton(), - "^.*\\." + extension, - getFileExtensionDescription()); + String htmlMessage = String.format( + AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.askToSaveCatch.message"), + t("tutti.askToSaveCatchBeforeExport.help")); - doAction = file != null; + int saveResponse =JOptionPane.showOptionDialog(getHandler().getTopestUI(), + htmlMessage, + t("tutti.askToSaveCatch.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + new String[]{t("tutti.option.saveCatch"), t("tutti.option.notSaveCatch"), t("tutti.option.cancelExport")}, + t("tutti.option.saveCatch")); + + switch (saveResponse) { + case 0: + + // should save + doSaveCatches = true; + break; + case 1: + + // nothing to do before export + break; + case 2: + + // cancel import + doAction = false; + } + + } + + if (doAction) { + + String extension = getFileExtension(); + + // choose file to export + file = saveFile(decorate(fishingOperation, DecoratorService.FILE_NAME_COMPATIBLE), + extension, + getFileChooserTitle(), + getFileChooserButton(), + "^.*\\." + extension, + getFileExtensionDescription()); + + doAction = file != null; + + } } @@ -158,19 +195,4 @@ public abstract class AbstractExportMultiPostAction<M extends AbstractBean, UI e 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 f13f877..5c219aa 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 @@ -25,6 +25,7 @@ package fr.ifremer.tutti.ui.swing.action; 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.type.WeightUnit; 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; @@ -104,25 +105,50 @@ public abstract class AbstractImportMultiPostAction<M extends AbstractBean, UI e // 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; + String htmlMessage = String.format(AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.askToSaveCatch.message"), + t("tutti.askToSaveCatchBeforeImport.help")); + + int saveResponse = JOptionPane.showOptionDialog( + getHandler().getTopestUI(), + htmlMessage, + t("tutti.askToSaveCatch.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + new String[]{t("tutti.option.saveCatch"), t("tutti.option.resetCatch"), t("tutti.option.cancelImport")}, + t("tutti.option.saveCatch")); + + switch (saveResponse) { + case 0: + + // should save + doSaveCatches = true; + break; + case 1: + + // should reset + doResetCatches = true; + break; + case 2: + + // cancel import + doAction = false; } } - // choose file to import - file = chooseFile(getFileChooserTitle(), - getFileChooserButton(), - "^.*\\." + getFileExtension(), - getFileExtensionDescription()); + if (doAction) { + + // choose file to import + file = chooseFile(getFileChooserTitle(), + getFileChooserButton(), + "^.*\\." + getFileExtension(), + getFileExtensionDescription()); + + doAction = file != null; - doAction = file != null; + } } @@ -197,7 +223,7 @@ public abstract class AbstractImportMultiPostAction<M extends AbstractBean, UI e if (MapUtils.isNotEmpty(notImportedData)) { - String text = buildNotImportedDataText(notImportedData); + String text = buildNotImportedDataReportText(notImportedData); if (!text.isEmpty()) { @@ -218,30 +244,18 @@ public abstract class AbstractImportMultiPostAction<M extends AbstractBean, UI e } - protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + protected String buildNotImportedDataReportText(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; - - } - - protected EditCatchesUI getEditCatchUI() { EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class); return catchesUI; } + + protected void addNotImportedWeightToReport(StringBuilder builder, Float weight, WeightUnit weightUnit, String label) { + if (weight != null) { + builder.append("- ").append(t(label, weightUnit.fromEntity(weight), weightUnit.getShortLabel())).append("\n"); + } + } } 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 fbddad2..b1776ea 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,6 +26,7 @@ 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.type.WeightUnit; 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; @@ -34,6 +35,7 @@ import java.io.File; import java.util.Collection; import java.util.Map; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -80,24 +82,21 @@ public class ImportBenthosMultiPostAction extends AbstractImportMultiPostAction< } @Override - protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + protected String buildNotImportedDataReportText(Map<String, Object> notImportedData) { + + WeightUnit benthosWeightUnit = getConfig().getBenthosWeightUnit(); 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"); - } + addNotImportedWeightToReport(builder, totalSortedWeight, benthosWeightUnit, n("tutti.multiPostImportLog.totalSortedWeight")); Float inertWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_BENTHOS_TOTAL_INERT_WEIGHT); - if (inertWeight != null) { - builder.append("- ").append(t("tutti.multiPostImportLog.inertWeight", inertWeight)).append("\n"); - } + addNotImportedWeightToReport(builder, inertWeight, benthosWeightUnit, n("tutti.multiPostImportLog.inertWeight")); 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"); - } + addNotImportedWeightToReport(builder, livingNotItemizedWeight, benthosWeightUnit, n("tutti.multiPostImportLog.livingNotItemizedWeight")); Collection<BenthosBatch> notImportedBenthosBatches = (Collection<BenthosBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportCatchMultiPostAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportCatchMultiPostAction.java index bcbda02..2ebd268 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportCatchMultiPostAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportCatchMultiPostAction.java @@ -3,6 +3,7 @@ package fr.ifremer.tutti.ui.swing.action; 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.type.WeightUnit; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; @@ -10,6 +11,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import java.io.File; import java.util.Map; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -58,34 +60,29 @@ public class ImportCatchMultiPostAction extends AbstractImportMultiPostAction<Ed } @Override - protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + protected String buildNotImportedDataReportText(Map<String, Object> notImportedData) { + + WeightUnit catchWeightUnit = WeightUnit.KG; + WeightUnit speciesWeightUnit = getConfig().getSpeciesWeightUnit(); + WeightUnit benthosWeightUnit = getConfig().getBenthosWeightUnit(); + WeightUnit marineLitterWeightUnit = getConfig().getMarineLitterWeightUnit(); StringBuilder builder = new StringBuilder(); Float catchTotalWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_CATCH_TOTAL_WEIGHT); - if (catchTotalWeight != null) { - builder.append("- ").append(t("tutti.multiPostImportLog.catchTotalWeight", catchTotalWeight)).append("\n"); - } + addNotImportedWeightToReport(builder, catchTotalWeight, catchWeightUnit, n("tutti.multiPostImportLog.catchTotalWeight")); Float catchTotalRejectedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_CATCH_TOTAL_REJECTED_WEIGHT); - if (catchTotalRejectedWeight != null) { - builder.append("- ").append(t("tutti.multiPostImportLog.catchTotalRejectedWeight", catchTotalRejectedWeight)).append("\n"); - } + addNotImportedWeightToReport(builder, catchTotalRejectedWeight, catchWeightUnit, n("tutti.multiPostImportLog.catchTotalRejectedWeight")); Float speciesTotalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT); - if (speciesTotalSortedWeight != null) { - builder.append("- ").append(t("tutti.multiPostImportLog.speciesTotalSortedWeight", speciesTotalSortedWeight)).append("\n"); - } + addNotImportedWeightToReport(builder, speciesTotalSortedWeight, speciesWeightUnit, n("tutti.multiPostImportLog.speciesTotalSortedWeight")); Float benthosTotalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT); - if (benthosTotalSortedWeight != null) { - builder.append("- ").append(t("tutti.multiPostImportLog.benthosTotalSortedWeight", benthosTotalSortedWeight)).append("\n"); - } + addNotImportedWeightToReport(builder, benthosTotalSortedWeight, benthosWeightUnit, n("tutti.multiPostImportLog.benthosTotalSortedWeight")); Float marineLitterTotalWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT); - if (marineLitterTotalWeight != null) { - builder.append("- ").append(t("tutti.multiPostImportLog.marineLitterTotalWeight", marineLitterTotalWeight)).append("\n"); - } + addNotImportedWeightToReport(builder, marineLitterTotalWeight, marineLitterWeightUnit, n("tutti.multiPostImportLog.marineLitterTotalWeight")); return builder.toString(); 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 2f9fef6..5226d8e 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,6 +26,7 @@ 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.type.WeightUnit; 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; @@ -34,6 +35,7 @@ import java.io.File; import java.util.Collection; import java.util.Map; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -80,13 +82,14 @@ public class ImportMarineLitterMultiPostAction extends AbstractImportMultiPostAc } @Override - protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + protected String buildNotImportedDataReportText(Map<String, Object> notImportedData) { + + WeightUnit marineLitterWeightUnit = getConfig().getMarineLitterWeightUnit(); 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"); - } + addNotImportedWeightToReport(builder, totalWeight, marineLitterWeightUnit, n("tutti.multiPostImportLog.totalWeight")); Collection<MarineLitterBatch> notImportedMarineLitterBatches = (Collection<MarineLitterBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); 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 762a117..7fae152 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,6 +26,7 @@ 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.type.WeightUnit; 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; @@ -34,6 +35,7 @@ import java.io.File; import java.util.Collection; import java.util.Map; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -80,25 +82,21 @@ public class ImportSpeciesMultiPostAction extends AbstractImportMultiPostAction< } @Override - protected String buildNotImportedDataText(Map<String, Object> notImportedData) { + protected String buildNotImportedDataReportText(Map<String, Object> notImportedData) { + + WeightUnit speciesWeightUnit = getConfig().getSpeciesWeightUnit(); StringBuilder builder = new StringBuilder(); Float totalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT); - if (totalSortedWeight != null) { - builder.append("- ").append(t("tutti.multiPostImportLog.totalSortedWeight", totalSortedWeight)).append("\n"); - } + addNotImportedWeightToReport(builder, totalSortedWeight, speciesWeightUnit, n("tutti.multiPostImportLog.totalSortedWeight")); Float inertWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT); - if (inertWeight != null) { - builder.append("- ").append(t("tutti.multiPostImportLog.inertWeight", inertWeight)).append("\n"); - } + addNotImportedWeightToReport(builder, inertWeight, speciesWeightUnit, n("tutti.multiPostImportLog.inertWeight")); 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"); - } + addNotImportedWeightToReport(builder, livingNotItemizedWeight, speciesWeightUnit, n("tutti.multiPostImportLog.livingNotItemizedWeight")); Collection<SpeciesBatch> notImportedSpeciesBatches = (Collection<SpeciesBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); 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 1be41be..d3cccbd 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 @@ -1571,12 +1571,17 @@ tutti.openReplaceTemporaryVesselUI.loading.source= tutti.openReplaceTemporaryVesselUI.loading.target= tutti.openReplaceTemporaryVesselUI.open.dialog= tutti.option.cancel= +tutti.option.cancelExport= +tutti.option.cancelImport= tutti.option.cleanAndClone= tutti.option.cleanAndEdit= tutti.option.cleanAndImport= tutti.option.clone= tutti.option.edit= tutti.option.import= +tutti.option.notSaveCatch= +tutti.option.resetCatch= +tutti.option.saveCatch= tutti.persistence.cruise.gearUsedInOperations.error= tutti.propety.no.species.speciesCode= tutti.reimport.step.backupDb= 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 e8d0475..eaaf1e9 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,10 +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.message=Des modifications 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.askToSaveCatchBeforeExport.help=Que voulez-vous faire ?<ul><li><strong>Annuler l'export</strong> pour annuler l'opération d'export</li><li><strong>Ne pas enregistrer les modifications</strong> pour réaliser l'export sur les données non modifiées</li><li><strong>Enregistrer les modifications</strong> pour enregistrer les modifications puis réaliser l'export</li></ul> +tutti.askToSaveCatchBeforeImport.help=Que voulez-vous faire ?<ul><li><strong>Annuler l'import</strong> pour annuler l'opération d'import</li><li><strong>Annuler les modifications</strong> pour annuler les modifications avant de réaliser l'import</li><li><strong>Enregistrer les modifications</strong> pour enregistrer les modifications puis réaliser 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 @@ -1474,20 +1474,20 @@ tutti.manageTemporaryReferential.title.choose.importTemporarySpeciesFile=Importe tutti.manageTemporaryReferential.title.choose.importTemporaryVesselFile=Importer un référentiel Navire tutti.message.openReplaceTemporaryUI.noSource=Aucun référentiel de type %s temporaire détecté dans la base. tutti.message.openReplaceTemporaryUI.noTarget=Aucun référentiel de type %s officiel détecté dans la base. -tutti.multiPostImportLog.benthosTotalSortedWeight=Poids total VRAC (Benthos) \: %s kg -tutti.multiPostImportLog.catchTotalRejectedWeight=Poids total NON TRIÉ(Capture) \: %s kg -tutti.multiPostImportLog.catchTotalWeight=Poids TOTAL (Capture) \: %s kg +tutti.multiPostImportLog.benthosTotalSortedWeight=Poids total VRAC (Benthos) \: %s %s +tutti.multiPostImportLog.catchTotalRejectedWeight=Poids total NON TRIÉ (Capture) \: %s %s +tutti.multiPostImportLog.catchTotalWeight=Poids TOTAL (Capture) \: %s %s tutti.multiPostImportLog.close=Fermer tutti.multiPostImportLog.close.mnemonic=F tutti.multiPostImportLog.close.tip=Fermer la popup -tutti.multiPostImportLog.inertWeight=Poids inerte trié \: %s kg -tutti.multiPostImportLog.livingNotItemizedWeight=Poids vivant non détaillé \: %s kg -tutti.multiPostImportLog.marineLitterTotalWeight=Poids total (Macro-déchet) \: %s kg +tutti.multiPostImportLog.inertWeight=Poids inerte trié \: %s %s +tutti.multiPostImportLog.livingNotItemizedWeight=Poids vivant non détaillé \: %s %s +tutti.multiPostImportLog.marineLitterTotalWeight=Poids total (Macro déchets) \: %s %s tutti.multiPostImportLog.message=Des données n'ont pas été importées car ces données avaient déjà été saisies \: -tutti.multiPostImportLog.speciesTotalSortedWeight=Poids total VRAC (Espèce) \: %s kg +tutti.multiPostImportLog.speciesTotalSortedWeight=Poids total VRAC (Espèce) \: %s %s tutti.multiPostImportLog.title=Lots non importés -tutti.multiPostImportLog.totalSortedWeight=Poids total trié \: %s kg -tutti.multiPostImportLog.totalWeight=Poids total \: %s kg +tutti.multiPostImportLog.totalSortedWeight=Poids total trié \: %s %s +tutti.multiPostImportLog.totalWeight=Poids total \: %s %s tutti.openDb.step.check.dbContext=Vérification du contexte de saisie tutti.openDb.step.checkSchemaVersion=Vérification de la compatibilité de la base tutti.openDb.step.open=Ouverture de la base <strong>%s</strong> @@ -1497,12 +1497,17 @@ tutti.openReplaceTemporaryUI.loading.source=Chargement des référentiels tempor tutti.openReplaceTemporaryUI.loading.target=Chargement des référentiels officiels de type %s tutti.openReplaceTemporaryUI.open.dialog=Ouverture de l'interface graphique tutti.option.cancel=Annuler +tutti.option.cancelExport=Annuler l'export +tutti.option.cancelImport=Annuler l'import tutti.option.cleanAndClone=Nettoyer et Cloner tutti.option.cleanAndEdit=Nettoyer et Éditer tutti.option.cleanAndImport=Nettoyer et Importer tutti.option.clone=Cloner tutti.option.edit=Éditer tutti.option.import=Importer +tutti.option.notSaveCatch=Ne pas enregistrer les modifications +tutti.option.resetCatch=Annuler les modifications +tutti.option.saveCatch=Enregistrer les modifications tutti.persistence.cruise.gearUsedInOperations.error= tutti.propety.no.species.speciesCode= tutti.reimport.step.backupDb=Sauvegarde de la base dans l'archive %s -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm