This is an automated email from the git hooks/post-receive script. New commit to branch feature/6592 in repository tutti. See http://git.codelutin.com/tutti.git commit 1c8f110deccb81b268dd944f3f5c0a41f1bd0230 Author: Kevin Morin <morin@codelutin.com> Date: Mon Jan 11 16:52:18 2016 +0100 séparation du service d'import pupitri en 2 parties : - lecture des fichiers d'import - enregistrement des données importées cela permet de saisir un poids total de melag avant de faire l'élévation des poids (fixes #6592) --- .../tutti/service/pupitri/PupitriImportResult.java | 4 + .../service/pupitri/PupitriImportService.java | 40 +++++- .../pupitri/PupitriImportServiceEvo6149Test.java | 4 +- ...t.java => PupitriImportServiceEvo6592Test.java} | 35 ++--- .../src/test/resources/pupitri/evo-6592.car | 8 ++ .../src/test/resources/pupitri/evo-6592.tnk | 32 +++++ .../test/resources/pupitri/evo-6592.tuttiProtocol | 154 +++++++++++++++++++++ .../species/ImportPupitriMelagWeightPopupUI.css | 55 ++++++++ .../species/ImportPupitriMelagWeightPopupUI.jaxx | 73 ++++++++++ .../ImportPupitriMelagWeightPopupUIHandler.java | 79 +++++++++++ .../ImportPupitriMelagWeightPopupUIModel.java | 35 +++++ .../species/actions/ImportPupitriAction.java | 55 ++++++-- ...mportPupitriMelagWeightPopupValidateAction.java | 20 +++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 6 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 3 + 15 files changed, 565 insertions(+), 38 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 08d8440..103f180 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 @@ -185,6 +185,10 @@ public class PupitriImportResult { return melagTotalWeight == null ? null : melagTotalWeight.floatValue(); } + public void setMelagTotalWeight(float melagTotalWeight) { + this.melagTotalWeight.setValue(melagTotalWeight); + } + public Float getMelagSortedWeight() { return melagSortedWeight == null ? null : melagSortedWeight.floatValue(); } 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 1a73504..ddaf547 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 @@ -138,22 +138,52 @@ public class PupitriImportService extends AbstractTuttiService { } /** - * @param trunkFile incoming trunk file - * @param carrouselFile incoming carroussle file - * @param operation target operation - * @param catchBatch target catch batch - * @return the number of rows of the .car file which have not been imported + * Used merely in tests. + * @param trunkFile + * @param carrouselFile + * @param operation + * @param catchBatch + * @return */ public PupitriImportResult importPupitri(File trunkFile, File carrouselFile, FishingOperation operation, CatchBatch catchBatch) { + PupitriImportResult result = readImportPupitri(trunkFile, carrouselFile, operation); + return saveImportPupitri(trunkFile, carrouselFile, operation, catchBatch, result); + } + + /** + * @param trunkFile incoming trunk file + * @param carrouselFile incoming carroussle file + * @param operation target operation + * @return the number of rows of the .car file which have not been imported + */ + public PupitriImportResult readImportPupitri(File trunkFile, + File carrouselFile, + FishingOperation operation) { + PupitriImportResult result = new PupitriImportResult(); importPupitriTrunk(result, trunkFile, operation); importPupitriCarrousel(result, carrouselFile, operation); + return result; + } + + /** + * @param trunkFile incoming trunk file + * @param carrouselFile incoming carroussle file + * @param operation target operation + * @return the number of rows of the .car file which have not been imported + */ + public PupitriImportResult saveImportPupitri(File trunkFile, + File carrouselFile, + FishingOperation operation, + CatchBatch catchBatch, + PupitriImportResult result) { + if (result.isFishingOperationFound()) { // generation du rapport diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6149Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6149Test.java index 4a969e6..c11f7df 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6149Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6149Test.java @@ -55,7 +55,7 @@ import java.util.Set; public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSupport { /** Logger. */ - private static final Log log = LogFactory.getLog(PupitriImportServiceEvo5062Test.class); + private static final Log log = LogFactory.getLog(PupitriImportServiceEvo6149Test.class); @Test public void importPupitri() throws IOException { @@ -91,7 +91,7 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup /* Melange total 100Kg / sorted 50Kg -> ratio = x2 - MERL-MCC un lot G (50Kg) + MERL-MCC un lot G (100Kg) MERL-MCC un lot P (25x2 -> 50Kg) TRAC-TRU un lot VRAC (25x2 -> 50Kg) ENGR-ENC un lot HV 75Kg diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6149Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6592Test.java similarity index 87% copy from tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6149Test.java copy to tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6592Test.java index 4a969e6..8ac4490 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6149Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6592Test.java @@ -52,17 +52,17 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.10 */ -public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSupport { +public class PupitriImportServiceEvo6592Test extends PupitryImportServiceTestSupport { /** Logger. */ - private static final Log log = LogFactory.getLog(PupitriImportServiceEvo5062Test.class); + private static final Log log = LogFactory.getLog(PupitriImportServiceEvo6592Test.class); @Test public void importPupitri() throws IOException { - File trunk = dbResource.copyClassPathResource("pupitri/evo-6149.tnk", "pupitri.tnk"); - File carroussel = dbResource.copyClassPathResource("pupitri/evo-6149.car", "pupitri.car"); - dbResource.loadInternalProtocolFile("pupitri/", "evo-6149"); + File trunk = dbResource.copyClassPathResource("pupitri/evo-6592.tnk", "pupitri.tnk"); + File carroussel = dbResource.copyClassPathResource("pupitri/evo-6592.car", "pupitri.car"); + dbResource.loadInternalProtocolFile("pupitri/", "evo-6592"); FishingOperation operation = dataContext.operations.get(1); CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operation.getId()); @@ -71,7 +71,10 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), false); Assert.assertEquals(0, rootSpeciesBatch.sizeChildren()); - PupitriImportResult pupitriImportResult = service.importPupitri(trunk, carroussel, operation, catchBatch); + PupitriImportResult pupitriImportResult = service.readImportPupitri(trunk, carroussel, operation); + pupitriImportResult.setMelagTotalWeight(200); + pupitriImportResult = service.saveImportPupitri(trunk, carroussel, operation, catchBatch, pupitriImportResult); + Assert.assertTrue(pupitriImportResult.isFishingOperationFound()); int nbNotAdded = pupitriImportResult.getNbCarrousselNotImported(); Assert.assertEquals(1, nbNotAdded); @@ -90,10 +93,10 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup Assert.assertEquals(3, rootSpeciesBatchAfter.sizeChildren()); /* - Melange total 100Kg / sorted 50Kg -> ratio = x2 - MERL-MCC un lot G (50Kg) - MERL-MCC un lot P (25x2 -> 50Kg) - TRAC-TRU un lot VRAC (25x2 -> 50Kg) + Melange total 200kg / sorted 50Kg -> ratio = x4 + MERL-MCC un lot G (100Kg) + MERL-MCC un lot P (25x4 -> 100Kg) + TRAC-TRU un lot VRAC (25x4 -> 100Kg) ENGR-ENC un lot HV 75Kg */ Set<Integer> expectedSpecies = Sets.newHashSet( @@ -146,8 +149,8 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup if (16994 == speciesId) { // un lot VRAC (sans poids) avec deux fils - // un G (100Kg) - // un P (50Kg) + // un G (100kg) + // un P (100kg) Assert.assertTrue(batchVracPredicate.apply(speciesBatch)); Assert.assertFalse(speciesBatch.isChildBatchsEmpty()); @@ -162,7 +165,7 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup } else if (smallVracPredicate.apply(child)) { - Assert.assertEquals(50, child.getSampleCategoryWeight(), 0.001); + Assert.assertEquals(100, child.getSampleCategoryWeight(), 0.001); } else { Assert.fail("le lot " + child + " doit etre une categorisation Taille Gros ou petit"); } @@ -175,7 +178,7 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup } else if (smallVracPredicate.apply(child)) { - Assert.assertEquals(50, child.getSampleCategoryWeight(), 0.001); + Assert.assertEquals(100, child.getSampleCategoryWeight(), 0.001); } else { Assert.fail("le lot " + child + " doit etre une categorisation Taille Gros ou petit"); } @@ -186,10 +189,10 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup if (17116 == speciesId) { - // un unique lot vrac de 50Kg + // un unique lot vrac de 100kg Assert.assertTrue(batchVracPredicate.apply(speciesBatch)); Assert.assertTrue(speciesBatch.isChildBatchsEmpty()); - Assert.assertEquals(50, speciesBatch.getSampleCategoryWeight(), 0.001); + Assert.assertEquals(100, speciesBatch.getSampleCategoryWeight(), 0.001); } } diff --git a/tutti-service/src/test/resources/pupitri/evo-6592.car b/tutti-service/src/test/resources/pupitri/evo-6592.car new file mode 100644 index 0000000..651dc19 --- /dev/null +++ b/tutti-service/src/test/resources/pupitri/evo-6592.car @@ -0,0 +1,8 @@ +$TSMES,27/11/13,13:14:46.647,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0025.0, +$TSMES,27/11/13,13:16:26.243,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0025.0, +$TSMES,27/11/13,13:16:41.355,BLCAR, 0,A,1,002,MELA-NGE,0,VAT,0050.0, +$TSMES,27/11/13,13:28:27.717,BLCAR, 0,A,1,002,MERL-MCC,G,VAT,0100.0, (du merlu gros) +$TSMES,27/11/13,13:30:30.398,BLCAR, 0,A,1,001,MERL-MCC,T,VAT,0025.0, (du merlu petit) +$TSMES,27/11/13,13:31:17.004,BLCAR, 0,A,1,001,TRAC-TRU,T,VAT,0025.0, (du trac-tru en melange) -> lot unique +$TSMES,27/11/13,13:31:17.004,BLCAR, 0,A,1,001,TRAC-BIZ,T,VAT,0025.0, (espece non connue) +$TSMES,27/11/13,13:31:17.004,BLCAR, 0,A,1,001,ENGR-ENC,0,HOV,0075.0, (HV) \ No newline at end of file diff --git a/tutti-service/src/test/resources/pupitri/evo-6592.tnk b/tutti-service/src/test/resources/pupitri/evo-6592.tnk new file mode 100644 index 0000000..bdb8624 --- /dev/null +++ b/tutti-service/src/test/resources/pupitri/evo-6592.tnk @@ -0,0 +1,32 @@ +$TSMES,27/11/13,09:08:45.130,BLTNK, 0,A,1,VAT,0045.4, +$TSMES,27/11/13,09:10:10.522,BLTNK, 0,A,1,VAT,0045.0, +$TSMES,27/11/13,09:12:14.730,BLTNK, 0,A,1,VAT,0043.9, +$TSMES,27/11/13,09:14:06.033,BLTNK, 0,A,1,VAT,0044.0, +$TSMES,27/11/13,09:16:08.907,BLTNK, 0,A,1,VAT,0042.4, +$TSMES,27/11/13,09:17:47.515,BLTNK, 0,A,1,VAT,0044.3, +$TSMES,27/11/13,09:19:44.039,BLTNK, 0,A,1,VAT,0043.6, +$TSMES,27/11/13,09:21:49.166,BLTNK, 0,A,1,VAT,0044.2, +$TSMES,27/11/13,09:26:57.681,BLTNK, 0,A,1,VAT,0045.9, +$TSMES,27/11/13,09:29:20.020,BLTNK, 0,A,1,VAT,0045.8, +$TSMES,27/11/13,09:30:37.535,BLTNK, 0,A,1,VAT,0047.0, +$TSMES,27/11/13,09:32:16.153,BLTNK, 0,A,1,VAT,0046.6, +$TSMES,27/11/13,09:33:30.882,BLTNK, 0,A,1,VAT,0044.4, +$TSMES,27/11/13,09:34:50.649,BLTNK, 0,A,1,VAT,0044.5, +$TSMES,27/11/13,09:36:36.933,BLTNK, 0,A,1,VAT,0043.7, +$TSMES,27/11/13,09:37:53.424,BLTNK, 0,A,1,VAT,0046.4, +$TSMES,27/11/13,09:41:40.944,BLTNK, 0,A,1,VAT,0048.6, +$TSMES,27/11/13,09:43:33.377,BLTNK, 0,A,1,VAT,0046.4, +$TSMES,27/11/13,09:44:46.487,BLTNK, 0,A,1,VAT,0046.4, +$TSMES,27/11/13,09:46:12.192,BLTNK, 0,A,1,VAT,0045.2, +$TSMES,27/11/13,09:47:34.846,BLTNK, 0,A,1,VAT,0045.4, +$TSMES,27/11/13,09:48:55.920,BLTNK, 0,A,1,VAT,0048.4, +$TSMES,27/11/13,09:51:12.724,BLTNK, 0,A,1,VAT,0046.4, +$TSMES,27/11/13,09:54:14.063,BLTNK, 0,A,1,VAT,0040.4, +$TSMES,27/11/13,09:56:11.000,BLTNK, 0,A,1,VAT,0044.2, +$TSMES,27/11/13,09:57:38.344,BLTNK, 0,A,1,VAT,0047.3, +$TSMES,27/11/13,09:59:23.603,BLTNK, 0,A,1,VAT,0047.6, +$TSMES,27/11/13,10:00:51.868,BLTNK, 0,A,1,VAT,0047.9, +$TSMES,27/11/13,10:02:29.655,BLTNK, 0,A,1,VAT,0044.2, +$TSMES,27/11/13,10:04:14.101,BLTNK, 0,A,1,VAT,0045.9, +$TSMES,27/11/13,10:06:08.886,BLTNK, 0,A,1,VAT,0043.2, +$TSMES,27/11/13,10:08:35.000,BLTNK, 0,A,1,VAT,0007.5, diff --git a/tutti-service/src/test/resources/pupitri/evo-6592.tuttiProtocol b/tutti-service/src/test/resources/pupitri/evo-6592.tuttiProtocol new file mode 100644 index 0000000..62af9e3 --- /dev/null +++ b/tutti-service/src/test/resources/pupitri/evo-6592.tuttiProtocol @@ -0,0 +1,154 @@ +id: c6ee2088-9720-46c0-b8d2-8f21c902676f +name: Protocole EVHOE 2013 +benthos: +comment: Protocole pour les tests 2013 avec Jean Jacques Rivoalen +gearUseFeaturePmfmId: +- 131 +- 828 +- 884 +- 965 +lengthClassesPmfmId: +- 306 +- 622 +- 307 +- 302 +- 299 +- 1394 +- 1417 +- 1425 +- 1426 +- 1427 +- 283 +- 284 +- 285 +- 294 +- 295 +- 300 +- 301 +- 304 +- 318 +- 319 +- 322 +- 323 +- 661 +- 662 +species: +- !SpeciesProtocol + id: 056a7ad4-934c-4d69-b068-1a2dd64012cb + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: [] + speciesReferenceTaxonId: 2786 + speciesSurveyCode: EUPH-AUX + weightEnabled: true +- !SpeciesProtocol + id: 5f7e400c-6a03-4092-9ccf-0031823b3a14 + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 198 + - 196 + speciesReferenceTaxonId: 1540 + speciesSurveyCode: MERL-MCC + weightEnabled: true +- !SpeciesProtocol + id: dc5738bb-ed38-4814-a016-9fabfd833212 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 198 + speciesReferenceTaxonId: 1662 + speciesSurveyCode: TRAC-TRU + weightEnabled: true +- !SpeciesProtocol + id: e4577b1e-18d1-459c-acff-04aedf4e917d + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 307 + mandatorySampleCategoryId: [] + speciesReferenceTaxonId: 1362 + speciesSurveyCode: ENGR-ENC + weightEnabled: true +- !SpeciesProtocol + id: 4076fe7e-01fe-4164-820a-47b50dfa8e02 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: [] + speciesReferenceTaxonId: 1920 + speciesSurveyCode: EUTR-GUR + weightEnabled: true +- !SpeciesProtocol + id: 16f4a094-1904-4e50-aff9-1f2dcab3a909 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 198 + speciesReferenceTaxonId: 1772 + speciesSurveyCode: SCOM-SCO + weightEnabled: true +- !SpeciesProtocol + id: d5887f0e-bd99-4f66-a967-8fcff8224b32 + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 198 + - 196 + speciesReferenceTaxonId: 1553 + speciesSurveyCode: MICR-POU + weightEnabled: true +- !SpeciesProtocol + id: 944db3c6-d870-4f03-8abc-9a985a6feb65 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: [] + speciesReferenceTaxonId: 1415 + speciesSurveyCode: MYCT-PUN + weightEnabled: true +- !SpeciesProtocol + id: 2a8122cf-d238-4820-a7b9-eacaf1f302bd + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: [] + speciesReferenceTaxonId: 1551 + speciesSurveyCode: MELA-NGE + weightEnabled: true +- !SpeciesProtocol + id: 0de3f5c9-0ca9-4a7c-84aa-323d9eaa7f7f + countIfNoFrequencyEnabled: true + mandatorySampleCategoryId: [] + speciesReferenceTaxonId: 872 + speciesSurveyCode: ACAN-PEL + weightEnabled: true +- !SpeciesProtocol + id: ddffa4c9-cbb5-447f-a829-e2ac0cfea0f5 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: [] + speciesReferenceTaxonId: 1732 + speciesSurveyCode: ACANPAL + weightEnabled: true +vesselUseFeaturePmfmId: +- 173 +- 194 +- 230 +- 782 +- 843 +- 844 +- 846 +- 847 +- 848 +- 849 +- 850 +- 851 +- 857 +- 858 +- 859 +- 861 +- 862 +- 863 +- 881 +- 882 +- 883 diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUI.css new file mode 100644 index 0000000..c6b279b --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUI.css @@ -0,0 +1,55 @@ +/* + * #%L + * Tutti :: UI + * %% + * 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% +*/ + +#importPupitriMelagWeightDialog { + modal: true; + title: "tutti.importPupitri.melagWeight.title"; +} + +#message { + text: "tutti.importPupitri.melagWeight.message"; +} + +#melagWeightLabel { + text: "tutti.importPupitri.melagWeight.field"; + labelFor: {melagWeight}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; +} + +#melagWeight { + autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; + showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; + showReset: true; + numberType: {Float.class}; + computedDataColor: {handler.getConfig().getColorComputedWeights()}; + bean: {model.getTotalMelagComputedOrNotWeight()}; + numberValue: {model.getTotalMelagWeight()}; +} + +#validateButton { + actionIcon: add; + text: "tutti.common.validate"; + toolTipText: "tutti.common.validate"; + i18nMnemonic: "tutti.common.validate.mnemonic"; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions.ImportPupitriMelagWeightPopupValidateAction.class}; +} + diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUI.jaxx new file mode 100644 index 0000000..5e538ae --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUI.jaxx @@ -0,0 +1,73 @@ +<!-- + #%L + Tutti :: UI + %% + 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% + --> +<JDialog id='importPupitriMelagWeightDialog' layout='{new BorderLayout()}' + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<ImportPupitriMelagWeightPopupUIModel, ImportPupitriMelagWeightPopupUIHandler>'> + + <import> + fr.ifremer.tutti.ui.swing.TuttiUIContext + fr.ifremer.tutti.ui.swing.util.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUIUtil + fr.ifremer.tutti.ui.swing.util.computable.ComputableDataEditor + fr.ifremer.tutti.type.WeightUnit + </import> + + <script><![CDATA[ + +public ImportPupitriMelagWeightPopupUI(TuttiUI<?,?> parentUI) { + super(parentUI.getHandler().getContext().getMainUI()); + TuttiUIUtil.setParentUI(this, parentUI); +} + +public void open(float initialWeight) { + handler.open(initialWeight); +} + ]]></script> + + <ImportPupitriMelagWeightPopupUIModel id="model" initializer='getContextValue(ImportPupitriMelagWeightPopupUIModel.class)'/> + + <Table id='mainPanel' fill='both'> + + <row columns='2'> + <cell> + <JLabel id='message'/> + </cell> + </row> + + <row> + <cell> + <JLabel id='melagWeightLabel'/> + </cell> + <cell weightx='1'> + <ComputableDataEditor id='melagWeight' + genericType="Float" constructorParams='this'/> + </cell> + </row> + + <row> + <cell columns='2'> + <JButton id='validateButton'/> + </cell> + </row> + + </Table> + +</JDialog> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUIHandler.java new file mode 100644 index 0000000..565c2fb --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUIHandler.java @@ -0,0 +1,79 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species; + +/* + * #%L + * Tutti :: UI + * %% + * 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% + */ + +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JComponent; + +/** + * @author kmorin <morin@codelutin.com> + * @since 4.3 + */ +public class ImportPupitriMelagWeightPopupUIHandler extends AbstractTuttiUIHandler<ImportPupitriMelagWeightPopupUIModel, ImportPupitriMelagWeightPopupUI> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ImportPupitriMelagWeightPopupUIHandler.class); + + @Override + public void beforeInit(ImportPupitriMelagWeightPopupUI ui) { + super.beforeInit(ui); + ui.setContextValue(new ImportPupitriMelagWeightPopupUIModel()); + } + + @Override + public void afterInit(ImportPupitriMelagWeightPopupUI ui) { + initUI(ui); + ui.pack(); + ui.setResizable(true); + } + + @Override + protected JComponent getComponentToFocus() { + return ui.getValidateButton(); + } + + @Override + public void onCloseUI() { + getModel().setTotalMelagWeight(null); + getModel().setComputedTotalMelagWeight(null); + } + + @Override + public SwingValidator<ImportPupitriMelagWeightPopupUIModel> getValidator() { + return null; + } + + public void open(float initialWeight) { + ui.getModel().setComputedTotalMelagWeight(initialWeight); + + SwingUtil.center(TuttiUIUtil.getApplicationContext(ui).getMainUI(), ui); + ui.setVisible(true); + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUIModel.java new file mode 100644 index 0000000..feefd6d --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriMelagWeightPopupUIModel.java @@ -0,0 +1,35 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species; + +import fr.ifremer.tutti.ui.swing.util.computable.ComputableData; +import org.jdesktop.beans.AbstractSerializableBean; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.3 + */ +public class ImportPupitriMelagWeightPopupUIModel extends AbstractSerializableBean { + + public static final String PROPERTY_TOTAL_MELAG_WEIGHT = "totalMelagWeight"; + + protected ComputableData<Float> totalMelagWeight = new ComputableData<>(); + + public ComputableData<Float> getTotalMelagComputedOrNotWeight() { + return totalMelagWeight; + } + + public Float getTotalMelagWeight() { + return totalMelagWeight.getDataOrComputedData(); + } + + public void setTotalMelagWeight(Float totalMelagWeight) { +// Object oldValue = getTotalMelagWeight(); + this.totalMelagWeight.setData(totalMelagWeight); +// firePropertyChange(PROPERTY_TOTAL_MELAG_WEIGHT, oldValue, totalMelagWeight); + } + + public void setComputedTotalMelagWeight(Float totalMelagWeight) { +// Object oldValue = getTotalMelagWeight(); + this.totalMelagWeight.setComputedData(totalMelagWeight); +// firePropertyChange(PROPERTY_TOTAL_MELAG_WEIGHT, oldValue, totalMelagWeight); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportPupitriAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportPupitriAction.java index 74162aa..fc14abb 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportPupitriAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportPupitriAction.java @@ -31,17 +31,18 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.pupitri.PupitriImportResult; import fr.ifremer.tutti.service.pupitri.PupitriImportService; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; -import fr.ifremer.tutti.ui.swing.content.operation.fishing.actions.EditFishingOperationAction; 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.species.ImportPupitriMelagWeightPopupUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.ImportPupitriPopupUI; 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 fr.ifremer.tutti.ui.swing.content.operation.fishing.actions.EditFishingOperationAction; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; @@ -143,6 +144,38 @@ public class ImportPupitriAction extends LongActionSupport<SpeciesBatchUIModel, result = importedTrunkFile != null && importedCarrouselFile != null; } + if (result) { + EditCatchesUI parentContainer = handler.getParentContainer(EditCatchesUI.class); + EditCatchesUIModel model = parentContainer.getModel(); + + FishingOperation operation = model.getFishingOperation(); + + // import + PupitriImportService service = getContext().getPupitriImportService(); + importResult = service.readImportPupitri(importedTrunkFile, + importedCarrouselFile, + operation); + + result = importResult.isFishingOperationFound(); + + if (!result) { + displayWarningMessage( + t("tutti.editSpeciesBatch.action.importPupitri.no.matching.fishingOperation.title"), + "<html><body>" + + t("tutti.editSpeciesBatch.action.importPupitri.no.matching.fishingOperation") + + "</body></html>" + ); + sendMessage(t("tutti.editSpeciesBatch.action.importPupitri.no.matching.data")); + + } else if (importResult.isFoundTotalMelag()) { + + ImportPupitriMelagWeightPopupUI importPupitriMelagWeightDialog = new ImportPupitriMelagWeightPopupUI(getUI()); + importPupitriMelagWeightDialog.open(importResult.getMelagTotalWeight()); + float weight = importPupitriMelagWeightDialog.getModel().getTotalMelagWeight(); + importResult.setMelagTotalWeight(weight); + } + } + return result; } @@ -157,10 +190,11 @@ public class ImportPupitriAction extends LongActionSupport<SpeciesBatchUIModel, // import PupitriImportService service = getContext().getPupitriImportService(); - importResult = service.importPupitri(importedTrunkFile, - importedCarrouselFile, - operation, - catchBatch); + importResult = service.saveImportPupitri(importedTrunkFile, + importedCarrouselFile, + operation, + catchBatch, + importResult); if (importResult.isFishingOperationFound()) { @@ -239,15 +273,6 @@ public class ImportPupitriAction extends LongActionSupport<SpeciesBatchUIModel, TuttiUIUtil.openResource(attachmentFile); } - } else { - - displayWarningMessage( - t("tutti.editSpeciesBatch.action.importPupitri.no.matching.fishingOperation.title"), - "<html><body>" + - t("tutti.editSpeciesBatch.action.importPupitri.no.matching.fishingOperation") + - "</body></html>" - ); - sendMessage(t("tutti.editSpeciesBatch.action.importPupitri.no.matching.data")); } } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportPupitriMelagWeightPopupValidateAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportPupitriMelagWeightPopupValidateAction.java new file mode 100644 index 0000000..a51e60c --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportPupitriMelagWeightPopupValidateAction.java @@ -0,0 +1,20 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions; + +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.ImportPupitriMelagWeightPopupUI; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.3 + */ +public class ImportPupitriMelagWeightPopupValidateAction extends SimpleActionSupport<ImportPupitriMelagWeightPopupUI> { + + public ImportPupitriMelagWeightPopupValidateAction(ImportPupitriMelagWeightPopupUI importPupitriMelagWeightPopupUI) { + super(importPupitriMelagWeightPopupUI); + } + + @Override + protected void onActionPerformed(ImportPupitriMelagWeightPopupUI importPupitriMelagWeightPopupUI) { + importPupitriMelagWeightPopupUI.dispose(); + } +} 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 0f46a3f..4491961 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 @@ -1215,6 +1215,8 @@ tutti.editSpeciesBatch.action.importPupitri.speciesNotImported.message= tutti.editSpeciesBatch.action.importPupitri.speciesNotImported.title= tutti.editSpeciesBatch.action.importPupitri.success= tutti.editSpeciesBatch.action.importPupitri.tip= +tutti.editSpeciesBatch.action.importPupitri.totalMelag.message= +tutti.editSpeciesBatch.action.importPupitri.totalMelag.title= tutti.editSpeciesBatch.action.removeBatch= tutti.editSpeciesBatch.action.removeBatch.confirm.message= tutti.editSpeciesBatch.action.removeBatch.confirm.title= @@ -1669,6 +1671,10 @@ tutti.importPupitri.error.fileMissing.message= tutti.importPupitri.error.fileMissing.title= tutti.importPupitri.field.carrouselFile= tutti.importPupitri.field.trunkFile= +tutti.importPupitri.melagWeight.field= +tutti.importPupitri.melagWeight.field.melagWeight= +tutti.importPupitri.melagWeight.message= +tutti.importPupitri.melagWeight.title= tutti.importPupitri.title= tutti.importPupitri.trunkFile.extension= tutti.importPupitri.trunkFile.extension.description= 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 04f079d..df9bf99 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 @@ -1585,6 +1585,9 @@ tutti.importPupitri.error.fileMissing.message=Vous devez sélectionner un fichie tutti.importPupitri.error.fileMissing.title=Fichier non renseigné tutti.importPupitri.field.carrouselFile=Fichier du carrousel tutti.importPupitri.field.trunkFile=Fichier du trémie +tutti.importPupitri.melagWeight.field=Poids total du melag +tutti.importPupitri.melagWeight.message=Du melag a été détecté lors de l'import, veuillez saisir le poids total du melag. +tutti.importPupitri.melagWeight.title=Melag détecté tutti.importPupitri.title=Import Pupitri tutti.importPupitri.trunkFile.extension=tnk tutti.importPupitri.trunkFile.extension.description=Fichier du trémie (.tnk) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.