03/03: Propose a l'utilisateur de consulter le rapport pupitri genere
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6150 in repository tutti. See http://git.codelutin.com/tutti.git commit 1f0b7a10317739248f03f9739e9a4762c0959252 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Nov 22 15:51:08 2014 +0100 Propose a l'utilisateur de consulter le rapport pupitri genere --- .../tutti/service/pupitri/PupitriImportResult.java | 30 ++++++++++++++++ .../service/pupitri/PupitriImportService.java | 40 ++++++++++++++++------ .../resources/i18n/tutti-service_en_GB.properties | 3 ++ .../resources/i18n/tutti-service_fr_FR.properties | 6 ++-- .../tutti/ui/swing/action/ImportPupitriAction.java | 37 ++++++++++++++++++++ .../ifremer/tutti/ui/swing/util/TuttiUIUtil.java | 14 ++++++++ .../util/attachment/AttachmentEditorUIHandler.java | 10 +----- .../resources/i18n/tutti-ui-swing_en_GB.properties | 4 +++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 4 +++ 9 files changed, 126 insertions(+), 22 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java index 320c99a..3045791 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportResult.java @@ -122,6 +122,20 @@ public class PupitriImportResult { */ private String melagComment; + /** + * L'identifiant de la pièce-jointe du rapport généré suite à l'import. + * + * @since 3.11 + */ + private String reportAttachmentId; + + /** + * Le nom du rapport généré suite à l'import. + * + * @since 3.11 + */ + private String reportAttachmentFilename; + public PupitriImportResult() { this.catches = new ArrayList<>(); this.notImportedSpeciesIds = new LinkedHashSet<>(); @@ -183,6 +197,14 @@ public class PupitriImportResult { return ImmutableSet.copyOf(notImportedSpeciesIds); } + public String getReportAttachmentId() { + return reportAttachmentId; + } + + public String getReportAttachmentFilename() { + return reportAttachmentFilename; + } + /** * @return {@code true} if there is a total melag weight defined (at least one species MELA-GNE found). * @since 3.4.2 @@ -215,6 +237,14 @@ public class PupitriImportResult { this.rejectedWeight = rejectedWeight; } + void setReportAttachmentId(String reportAttachmentId) { + this.reportAttachmentId = reportAttachmentId; + } + + void setReportAttachmentFilename(String reportAttachmentFilename) { + this.reportAttachmentFilename = reportAttachmentFilename; + } + void flushCarrouselResult(CarrouselImportRequestResult carrouselImportRequestResult) { // set carrousel sorted weight diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java index 2f40334..b06b349 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java @@ -67,6 +67,7 @@ import java.io.IOException; import java.io.Reader; import java.io.Serializable; import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Collections; import java.util.List; import java.util.Locale; @@ -159,13 +160,27 @@ public class PupitriImportService extends AbstractTuttiService { // generation du rapport File reportFile = generatePupitriReport(operation, result); - // persistence des lots - savePupitriImportResult(result, operation, catchBatch); + try { - // ajout des pièces-jointes - addFileAsAttachment(trunkFile, catchBatch); - addFileAsAttachment(carrouselFile, catchBatch); - addFileAsAttachment(reportFile, catchBatch); + // persistence des lots + savePupitriImportResult(result, operation, catchBatch); + + // ajout des pièces-jointes + addFileAsAttachment(trunkFile, catchBatch); + addFileAsAttachment(carrouselFile, catchBatch); + + DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd__HH_mm"); + String reportAttachmentFilename = "rapport-pupitri-" + simpleDateFormat.format(context.currentDate()) + ".pdf"; + if (log.isInfoEnabled()) { + log.info("Save report with attachment filename: " + reportAttachmentFilename); + } + String reportId = addFileAsAttachment(reportFile, reportAttachmentFilename, catchBatch); + result.setReportAttachmentId(reportId); + result.setReportAttachmentFilename(reportAttachmentFilename); + + } finally { + FileUtils.deleteQuietly(reportFile); + } } @@ -194,7 +209,7 @@ public class PupitriImportService extends AbstractTuttiService { persistenceService.getSpeciesByReferenceTaxonIdWithVernacularCode(species.getReferenceTaxonId()); String code; - + // if the protocol is set and the species is in the protocol if (protocolFilled && speciesProtocolMap.containsKey(species.getReferenceTaxonId())) { @@ -239,15 +254,20 @@ public class PupitriImportService extends AbstractTuttiService { } - protected void addFileAsAttachment(File f, CatchBatch catchBatch) { + protected String addFileAsAttachment(File f, CatchBatch catchBatch) { + return addFileAsAttachment(f, f.getName(), catchBatch); + } + + protected String addFileAsAttachment(File f, String attachmentName, CatchBatch catchBatch) { Attachment attachment = Attachments.newAttachment(); attachment.setObjectType(ObjectTypeCode.CATCH_BATCH); attachment.setObjectId(Integer.valueOf(catchBatch.getId())); - attachment.setName(f.getName()); + attachment.setName(attachmentName); String date = DateFormat.getDateTimeInstance().format(context.currentDate()); String comment = t("tutti.service.pupitri.import.attachment.comment", date); attachment.setComment(comment); - persistenceService.createAttachment(attachment, f); + Attachment savedAttachment = persistenceService.createAttachment(attachment, f); + return savedAttachment.getId(); } protected void importPupitriTrunk(PupitriImportResult result, File file, FishingOperation operation) { diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index d985a05..929293e 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -211,6 +211,9 @@ tutti.service.psionimport.error.unkonwSampleCategory.message= tutti.service.pupitri.export.species.error= tutti.service.pupitri.import.attachment.comment= tutti.service.pupitri.import.carrousel.error= +tutti.service.pupitri.import.createMelag.comment.part1= +tutti.service.pupitri.import.createMelag.comment.part2= +tutti.service.pupitri.import.createMelag.comment.part3= tutti.service.pupitri.import.trunk.error= tutti.service.referential.export.gear.error= tutti.service.referential.export.person.error= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 1e4416b..dd6d0ad 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -191,15 +191,15 @@ tutti.service.psionimport.error.unkonwSampleCategory.message=Pour l'espèce '<st tutti.service.pupitri.export.species.error=Erreur lors de l'export des espèces pour Pupitri dans le fichier %s tutti.service.pupitri.import.attachment.comment=Import Pupitri du %s tutti.service.pupitri.import.carrousel.error=Erreur lors de l'import du fichier de carrousel %2s pour le trait %1s +tutti.service.pupitri.import.createMelag.comment.part1=Traitement issu d'un mélange composé de \: +tutti.service.pupitri.import.createMelag.comment.part2=- %s%s de %s +tutti.service.pupitri.import.createMelag.comment.part3=avec un poids d'élévation de %s%s tutti.service.pupitri.import.trunk.error=Erreur lors de l'import du fichier de trémie %2s pour le trait %1s tutti.service.referential.export.gear.error=Erreur lors de l'export des engins dans le fichier %s tutti.service.referential.export.person.error=Erreur lors de l'export des personnes dans le fichier %s tutti.service.referential.export.species.error=Erreur lors de l'export des espèces dans le fichier %s tutti.service.referential.export.vessel.error=Erreur lors de l'export des navires dans le fichier %s tutti.service.referential.import.gear.add.noName.error=Le nom de l'engin est obligatoire -tutti.service.pupitri.import.createMelag.comment.part1=Traitement issu d'un mélange composé de \: -tutti.service.pupitri.import.createMelag.comment.part2=- %s%s de %s -tutti.service.pupitri.import.createMelag.comment.part3=avec un poids d'élévation de %s%s tutti.service.referential.import.gear.cannotDeleteNotExisting.error=L'engin temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.gear.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.gear.existingName.error=L'engin '%s' n'a pas été ajouté au référentiel car il est déjà présent diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPupitriAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPupitriAction.java index 5937bd3..b9242c7 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPupitriAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportPupitriAction.java @@ -39,6 +39,10 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchU import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; import javax.swing.JOptionPane; import javax.swing.UIManager; @@ -55,6 +59,9 @@ import static org.nuiton.i18n.I18n.t; */ public class ImportPupitriAction extends AbstractTuttiAction<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { + /** Logger. */ + private static final Log log = LogFactory.getLog(ImportPupitriAction.class); + protected File importedTrunkFile; protected File importedCarrouselFile; @@ -201,6 +208,36 @@ public class ImportPupitriAction extends AbstractTuttiAction<SpeciesBatchUIModel } + // Ask User to see pupiti report + + String reportAttachmentFilename = importResult.getReportAttachmentFilename(); + String htmlMessage = String.format( + AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.editSpeciesBatch.action.importPupitri.showReport.message", reportAttachmentFilename), + ""); + + Component ui = getDialogParentComponent(); + + boolean showReport = JOptionPane.showOptionDialog( + ui, + htmlMessage, + t("tutti.editSpeciesBatch.action.importPupitri.showReport.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + new Object[]{t("tutti.editSpeciesBatch.action.showReport"), t("tutti.editSpeciesBatch.action.doNotShowReport")}, t("tutti.editSpeciesBatch.action.showReport")) == 0; + + if (showReport) { + + String reportAttachmentId = importResult.getReportAttachmentId(); + File attachmentFile = persistenceService.getAttachmentFile(reportAttachmentId); + if (log.isInfoEnabled()) { + log.info("Open pupitri report at " + attachmentFile); + } + + TuttiUIUtil.browseFile(attachmentFile); + + } } else { displayWarningMessage( diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java index 4f2b2b5..463ec9c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java @@ -35,9 +35,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.*; +import java.awt.Desktop; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.io.File; +import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; @@ -136,4 +139,15 @@ public final class TuttiUIUtil extends ApplicationUIUtil { } return SwingUtil.createActionIcon(iconName); } + + public static void browseFile(File file) { + + Desktop desktop = getDesktopForBrowse(); + try { + desktop.browse(file.toURI()); + + } catch (IOException e) { + TuttiUIContext.getApplicationContext().getErrorHelper().showErrorDialog(t("swing.error.cannot.open.file")); + } + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java index c85f630..bdb59d0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java @@ -44,11 +44,9 @@ import javax.swing.JRootPane; import javax.swing.JToolBar; import javax.swing.KeyStroke; import java.awt.Component; -import java.awt.Desktop; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.io.File; -import java.io.IOException; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -239,13 +237,7 @@ public class AttachmentEditorUIHandler extends AbstractTuttiUIHandler<TuttiUICon throw new ApplicationTechnicalException(t("tutti.attachmentEditor.fileNotFound", file.getAbsolutePath())); } - Desktop desktop = TuttiUIUtil.getDesktopForBrowse(); - try { - desktop.browse(file.toURI()); - - } catch (IOException e) { - getContext().getErrorHelper().showErrorDialog(t("swing.error.cannot.open.file")); - } + TuttiUIUtil.browseFile(file); } public void saveAttachment(Attachment attachment) { 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 6eabf35..d58638d 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 @@ -1015,6 +1015,7 @@ tutti.editSpeciesBatch.action.createBatch.tip= tutti.editSpeciesBatch.action.createMelag= tutti.editSpeciesBatch.action.createMelag.mnemonic= tutti.editSpeciesBatch.action.createMelag.tip= +tutti.editSpeciesBatch.action.doNotShowReport= tutti.editSpeciesBatch.action.editFrequencies= tutti.editSpeciesBatch.action.editFrequencies.mnemonic= tutti.editSpeciesBatch.action.editFrequencies.tip= @@ -1067,6 +1068,8 @@ tutti.editSpeciesBatch.action.importPupitri.mnemonic= tutti.editSpeciesBatch.action.importPupitri.no.matching.data= tutti.editSpeciesBatch.action.importPupitri.no.matching.fishingOperation= tutti.editSpeciesBatch.action.importPupitri.no.matching.fishingOperation.title= +tutti.editSpeciesBatch.action.importPupitri.showReport.message= +tutti.editSpeciesBatch.action.importPupitri.showReport.title= tutti.editSpeciesBatch.action.importPupitri.speciesNotImported.message= tutti.editSpeciesBatch.action.importPupitri.speciesNotImported.title= tutti.editSpeciesBatch.action.importPupitri.success= @@ -1084,6 +1087,7 @@ tutti.editSpeciesBatch.action.removeSubBatch.tip= tutti.editSpeciesBatch.action.renameBatch= tutti.editSpeciesBatch.action.renameBatch.mnemonic= tutti.editSpeciesBatch.action.renameBatch.tip= +tutti.editSpeciesBatch.action.showReport= tutti.editSpeciesBatch.action.splitBatch= tutti.editSpeciesBatch.action.splitBatch.mnemonic= tutti.editSpeciesBatch.action.splitBatch.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 4848047..cb83cdd 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 @@ -993,6 +993,7 @@ tutti.editSpeciesBatch.action.createBatch.tip=Créer un nouveau lot pour une esp tutti.editSpeciesBatch.action.createMelag=Espèces d'un MELAG (mélange) tutti.editSpeciesBatch.action.createMelag.mnemonic=C tutti.editSpeciesBatch.action.createMelag.tip=Calcul des poids des lots appartenant à un MELAG (mélange) +tutti.editSpeciesBatch.action.doNotShowReport=Continuer tutti.editSpeciesBatch.action.editFrequencies=Mensurations tutti.editSpeciesBatch.action.editFrequencies.mnemonic=M tutti.editSpeciesBatch.action.editFrequencies.tip=Éditer les mensurations @@ -1039,6 +1040,8 @@ tutti.editSpeciesBatch.action.importPupitri.mnemonic=u tutti.editSpeciesBatch.action.importPupitri.no.matching.data=Import pupitri non réalisé (Les identifiants de Station et/ ou de Date du trait ne correspondent pas) tutti.editSpeciesBatch.action.importPupitri.no.matching.fishingOperation=L'application n'a pas trouvé dans les fichiers Trunk et Carrousel les identifiants de Station et/ou de Date du trait en cours de saisie.<br/>Aucun lot n'a donc été importé. tutti.editSpeciesBatch.action.importPupitri.no.matching.fishingOperation.title=Import Pupitri +tutti.editSpeciesBatch.action.importPupitri.showReport.message=L'import pupitri a été réalisé et un rapport a été généré.<br/>Ce rapport (<strong>%s</strong>) a été enregistré dans les pièces-jointes de la capture. +tutti.editSpeciesBatch.action.importPupitri.showReport.title=Consulter le rapport d'import Pupitri tutti.editSpeciesBatch.action.importPupitri.speciesNotImported.message=%s espèces n'ont pas été importées lors de l'import Pupitri, en voici la liste \: <ul>%s</ul> tutti.editSpeciesBatch.action.importPupitri.speciesNotImported.title=Import Pupitri (espèces non importées) tutti.editSpeciesBatch.action.importPupitri.success=Import Pupitri réussi \: %1s espèces importées, %2s espèces rejetées @@ -1056,6 +1059,7 @@ tutti.editSpeciesBatch.action.removeSubBatch.tip=Supprimer tous les lots fils du tutti.editSpeciesBatch.action.renameBatch=Corriger l'espèce tutti.editSpeciesBatch.action.renameBatch.mnemonic=o tutti.editSpeciesBatch.action.renameBatch.tip=Corriger l'espèce +tutti.editSpeciesBatch.action.showReport=Consulter le rapport généré tutti.editSpeciesBatch.action.splitBatch=Catégoriser le lot tutti.editSpeciesBatch.action.splitBatch.mnemonic=C tutti.editSpeciesBatch.action.splitBatch.tip=Catégoriser le lot courant (celui de la ligne sélectionné) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm