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 56366922e8342c7ee7b57db3304a2d00ec26e8bc Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Nov 24 17:27:09 2014 +0100 sort rows (on sorted + species code), add sorted column, clean report --- .../service/pupitri/PupitriImportService.java | 10 +++------ .../pupitri/report/PupitriImportReportModel.java | 24 ++++++++++++++++++++ .../pupitri/report/PupitriImportReportRow.java | 8 +++++++ .../src/main/resources/ftl/pupitriReport_fr.ftl | 19 ++++++++-------- .../pupitri/PupitriImportServiceEvo6149Test.java | 26 ++++++++++++++++++---- .../src/test/resources/pupitri/evo-6149.car | 4 +++- 6 files changed, 69 insertions(+), 22 deletions(-) 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 1bcd0fc..82e99c2 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 @@ -207,13 +207,6 @@ public class PupitriImportService extends AbstractTuttiService { for (PupitriSpeciesContext aCatch : result.getCatches()) { - if (!aCatch.isSorted()) { - - //FIXME Check it ok ? - // Le rapport ne contient que les lots vrac - continue; - } - Species species = aCatch.getSpecies(); Species speciesWithVerncularCode = @@ -250,6 +243,7 @@ public class PupitriImportService extends AbstractTuttiService { PupitriImportReportRow reportCatch = PupitriImportReportRow.newRow(code, name, vernacularCode, + aCatch.isSorted(), aCatch.getSignContext(signs)); reportModel.addRow(reportCatch); @@ -258,6 +252,8 @@ public class PupitriImportService extends AbstractTuttiService { } + reportModel.sortRows(); + File reportFile = context.getConfig().newTempFile("puputri-report", ".pdf"); Locale locale = context.getConfig().getI18nLocale(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/report/PupitriImportReportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/report/PupitriImportReportModel.java index 8367d86..afcbaf3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/report/PupitriImportReportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/report/PupitriImportReportModel.java @@ -1,11 +1,15 @@ package fr.ifremer.tutti.service.pupitri.report; +import com.google.common.base.Function; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Ordering; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.pupitri.PupitriImportResult; import fr.ifremer.tutti.util.Numbers; import fr.ifremer.tutti.util.Weights; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Set; @@ -99,4 +103,24 @@ public class PupitriImportReportModel { public void addRow(PupitriImportReportRow aCatch) { rows.add(aCatch); } + + public void sortRows() { + + Ordering<PupitriImportReportRow> o1 = Ordering.natural().reverse().onResultOf(new Function<PupitriImportReportRow, Boolean>() { + @Override + public Boolean apply(PupitriImportReportRow input) { + return input.isSorted(); + } + }); + Ordering<PupitriImportReportRow> o2 = Ordering.natural().onResultOf(new Function<PupitriImportReportRow, String>() { + @Override + public String apply(PupitriImportReportRow input) { + return input.getSpeciesCode(); + } + }); + Ordering<PupitriImportReportRow> ordering = Ordering.compound(ImmutableSet.of(o1, o2)); + + Collections.sort(rows, ordering); + + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/report/PupitriImportReportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/report/PupitriImportReportRow.java index 5aef60e..bb74bfa 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/report/PupitriImportReportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/report/PupitriImportReportRow.java @@ -10,6 +10,8 @@ import fr.ifremer.tutti.service.pupitri.PupitriSignContext; */ public class PupitriImportReportRow { + private boolean sorted; + private String speciesCode; private String speciesName; @@ -29,11 +31,13 @@ public class PupitriImportReportRow { public static PupitriImportReportRow newRow(String code, String name, String vernacularCode, + boolean sorted, PupitriSignContext signContext) { PupitriImportReportRow result = new PupitriImportReportRow(); result.speciesCode = code; result.speciesName = name; result.speciesVernucalCode = vernacularCode; + result.sorted = sorted; result.sign= signContext.getSigns().getSign(); result.sortedWeight= signContext.getWeight(); result.nbBox = signContext.getNbBox(); @@ -54,6 +58,10 @@ public class PupitriImportReportRow { return speciesVernucalCode; } + public boolean isSorted() { + return sorted; + } + public float getSortedWeight() { return sortedWeight; } diff --git a/tutti-service/src/main/resources/ftl/pupitriReport_fr.ftl b/tutti-service/src/main/resources/ftl/pupitriReport_fr.ftl index ef30049..a45d7ca 100644 --- a/tutti-service/src/main/resources/ftl/pupitriReport_fr.ftl +++ b/tutti-service/src/main/resources/ftl/pupitriReport_fr.ftl @@ -71,12 +71,11 @@ </head> <body> -<h1>Rapport détaillé du tri des chalutages</h1> +<h1>Rapport détaillé du tri</h1> <hr/> <p class='operationInfo'> <span class="label">Station :</span> <span class="value">${stationNumber} - ${fishingOperationNumber}</span> - <span class="label">Poche :</span> <span class="value">${multirigAggregation}</span> <span class="label"> du ${gearShootingStartDate?date?string.short} ${gearShootingStartDate?time?string.short} <#if gearShootingEndDate??> @@ -88,12 +87,12 @@ <table> <thead> <tr> - <th colspan="3" class="text">Balance Trunk</th> - <th colspan="3" class="text">Balance Caroussel</th> + <th colspan="3" class="text">Balance Trémie</th> + <th colspan="3" class="text">Balance Carrousel</th> </tr> <tr> <th class="text">Trié</th> - <th class="text">Rejet</th> + <th class="text">Non trié</th> <th class="text">Total</th> <th class="text">Vrac</th> <th class="text">Hors vrac</th> @@ -113,19 +112,18 @@ <br/> <p> - NOTE: Si le rejet est nul, seules les pesées de la balance CAROUSSEL sont prises en compte pour le calcul du poids - total de la capture + NOTE: Les poids affichés sont en kg. </p> -<h4>Liste du tri "Vrac à trier"</h4> <table> <thead> <tr> <th></th> - <th>Espèce</th> + <th>Espèce</th> <!-- trie d'abord tout le vrac sur le code espèce puis tout le HV trié sur le code espèce--> + <th>V / HV</th> <th>Nom scientifique</th> <th>Nom commun</th> - <th>Poids trié (kg)</th> + <th>Poids trié</th> <th>Signe</th> <th>Nb de caisses</th> <th>Petite</th> @@ -138,6 +136,7 @@ <tr> <td><input type="checkbox"/></td> <td>${row.speciesCode}</td> + <td><#if row.sorted??>V<#else>HV</#if></td> <td><em>${row.speciesName}</em></td> <td><#if row.speciesVernucalCode??>${row.speciesVernucalCode}</#if></td> <td class="number">${row.sortedWeight}</td> 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 4ba8490..99cf2bb 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,10 +55,10 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup PupitriImportResult pupitriImportResult = service.importPupitri(trunk, carroussel, operation, catchBatch); Assert.assertTrue(pupitriImportResult.isFishingOperationFound()); int nbNotAdded = pupitriImportResult.getNbCarrousselNotImported(); - Assert.assertEquals(0, nbNotAdded); + Assert.assertEquals(1, nbNotAdded); Set<String> notImportedSpeciesIds = pupitriImportResult.getNotImportedSpeciesIds(); Assert.assertNotNull(notImportedSpeciesIds); - Assert.assertTrue(notImportedSpeciesIds.isEmpty()); + Assert.assertTrue(notImportedSpeciesIds.contains("TRAC-BIZ")); // copy result file into temp directory to check it after the test ends String reportAttachmentId = pupitriImportResult.getReportAttachmentId(); @@ -68,18 +68,20 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup log.info("Generated report copied to " + destFile.getPath()); BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), false); - Assert.assertEquals(2, rootSpeciesBatchAfter.sizeChildren()); + 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) + ENGR-ENC un lot HV 75Kg */ Set<Integer> expectedSpecies = Sets.newHashSet( 16994, // MERL-MCC - 17116 // TRAC-TRU + 17116, // TRAC-TRU + 16816 // ENGR-ENC ); @@ -87,6 +89,11 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup PmfmId.SORTED_UNSORTED.getValue(), QualitativeValueId.SORTED_VRAC.getValue()); + Predicate<SpeciesAbleBatch> batchHorsVracPredicate = SpeciesAbleBatchs.newSpeciesAbleBatchCategoryPredicate( + PmfmId.SORTED_UNSORTED.getValue(), + QualitativeValueId.SORTED_HORS_VRAC.getValue()); + + Predicate<SpeciesAbleBatch> bigVracPredicate = SpeciesAbleBatchs.newSpeciesAbleBatchCategoryPredicate( PmfmId.SIZE_CATEGORY.getValue(), QualitativeValueId.SIZE_BIG.getValue()); @@ -108,6 +115,15 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup log.info("Species : " + speciesId + " : " + speciesDecorator.toString(species)); } + if (16816 == speciesId) { + + // un lot HV 75Kg + Assert.assertTrue(batchHorsVracPredicate.apply(speciesBatch)); + Assert.assertTrue(speciesBatch.isChildBatchsEmpty()); + Assert.assertEquals(75, speciesBatch.getSampleCategoryWeight(), 0.001); + continue; + + } if (16994 == speciesId) { // un lot VRAC (sans poids) avec deux fils @@ -145,6 +161,8 @@ public class PupitriImportServiceEvo6149Test extends PupitryImportServiceTestSup Assert.fail("le lot " + child + " doit etre une categorisation Taille Gros ou petit"); } } + + continue; } if (17116 == speciesId) { diff --git a/tutti-service/src/test/resources/pupitri/evo-6149.car b/tutti-service/src/test/resources/pupitri/evo-6149.car index 0478192..651dc19 100644 --- a/tutti-service/src/test/resources/pupitri/evo-6149.car +++ b/tutti-service/src/test/resources/pupitri/evo-6149.car @@ -3,4 +3,6 @@ $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 \ No newline at end of file +$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 -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.