branch feature/6592 created (now 1c8f110)
This is an automated email from the git hooks/post-receive script. New change to branch feature/6592 in repository tutti. See http://git.codelutin.com/tutti.git at 1c8f110 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) This branch includes the following new commits: new 1c8f110 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) The 1 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 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) -- 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 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>.
participants (1)
-
codelutin.com scm