branch feature/8014 created (now 463a07a)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8014 in repository tutti. See http://git.codelutin.com/tutti.git at 463a07a Début de correction mais il me faut une confirmation de Vincent sur le sujet This branch includes the following new commits: new 463a07a Début de correction mais il me faut une confirmation de Vincent sur le sujet 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 463a07a1ebdc8c6be7503fbcc4f163522edbeeb2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Feb 23 16:31:46 2016 +0100 Début de correction mais il me faut une confirmation de Vincent sur le sujet -- 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/8014 in repository tutti. See http://git.codelutin.com/tutti.git commit 463a07a1ebdc8c6be7503fbcc4f163522edbeeb2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Feb 23 16:31:46 2016 +0100 Début de correction mais il me faut une confirmation de Vincent sur le sujet --- .../tutti/service/genericformat/csv/CatchRow.java | 14 ++ .../producer/CsvProducerForCatch.java | 33 +++ .../GenericFormatExportServiceAno7992Test.java | 13 +- .../resources/genericFormat/ano7992.tuttiProtocol | 227 +++++++++++++++++++++ 4 files changed, 283 insertions(+), 4 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java index f5fb734..0cd7aca 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java @@ -103,6 +103,8 @@ public class CatchRow extends RowWithOperationContextSupport { protected Float frequencyWeight; + protected Float computedFrequencyTotalWeight; + protected Integer frequencyRankOrder; public void setBenthos(boolean benthos) { @@ -129,6 +131,10 @@ public class CatchRow extends RowWithOperationContextSupport { this.batchNumberComputed = batchNumberComputed; } + public void setComputedFrequencyTotalWeight(Float computedFrequencyTotalWeight) { + this.computedFrequencyTotalWeight = computedFrequencyTotalWeight; + } + public void addSampleCategory(ExportSampleCategory sampleCategory) { int order = sampleCategory.getCategoryDef().getOrder(); while (this.sampleCategory.size() <= order) { @@ -188,6 +194,10 @@ public class CatchRow extends RowWithOperationContextSupport { return finalRaisingFactor; } + public boolean isFrequencyWithWeight() { + return frequencyLengthStepCaracteristic!=null && frequencyWeight!=null; + } + public Caracteristic getFrequencyLengthStepCaracteristic() { return frequencyLengthStepCaracteristic; } @@ -200,6 +210,10 @@ public class CatchRow extends RowWithOperationContextSupport { return frequencyWeight; } + public Float getComputedFrequencyTotalWeight() { + return computedFrequencyTotalWeight; + } + public Species getSpecies() { return species; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java index 992a40d..f5b81ca 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java @@ -46,7 +46,9 @@ import org.apache.commons.logging.LogFactory; import java.io.Serializable; import java.nio.file.Path; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; /** * Created on 2/6/15. @@ -303,19 +305,28 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { } } + float frequencyWeights = 0f; + Set<CatchRow> frequencyRows = new LinkedHashSet<>(); for (SpeciesBatchFrequency batchFrequency : speciesBatchFrequency) { CatchRow row = currentRow.copy(); row.setFrequency(batchFrequency); + frequencyRows.add(row); rows.add(row); if (!withNoWeightOnFrequencies) { // use concrete frequency weight referenceWeight = batchFrequency.getWeight(); + frequencyWeights+= referenceWeight; } setRaisingFactor(row, totalBatchWeight, referenceWeight); } + + if (!withNoWeightOnFrequencies) { + float computedFrequencyTotalWeight = frequencyWeights; + frequencyRows.forEach(catchRow -> catchRow.setComputedFrequencyTotalWeight(computedFrequencyTotalWeight)); + } } } else { @@ -430,19 +441,29 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { } } + float frequencyWeights = 0f; + Set<CatchRow> frequencyRows = new LinkedHashSet<>(); for (BenthosBatchFrequency batchFrequency : benthosBatchFrequency) { CatchRow row = currentRow.copy(); row.setFrequency(batchFrequency); + frequencyRows.add(row); rows.add(row); if (!withNoWeightOnFrequencies) { // use concrete frequency weight referenceWeight = batchFrequency.getWeight(); + frequencyWeights+=referenceWeight; } setRaisingFactor(row, totalBatchWeight, referenceWeight); } + + if (!withNoWeightOnFrequencies) { + float computedFrequencyTotalWeight = frequencyWeights; + frequencyRows.forEach(catchRow -> catchRow.setComputedFrequencyTotalWeight(computedFrequencyTotalWeight)); + } + } } else { @@ -513,6 +534,18 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { } } + if (row.isFrequencyWithWeight()) { + + Float frequencyWeight = row.getFrequencyWeight(); + Float computedFrequencyTotalWeight = row.getComputedFrequencyTotalWeight(); + float currentRate = computedFrequencyTotalWeight / frequencyWeight; + if (Weights.isNotEqualWeight(1.0f, currentRate)) { + + // the only case which can change the final rate + finalRaisingFactor *= currentRate; + } + + } return finalRaisingFactor; } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno7992Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno7992Test.java index 2455ee0..bfc1499 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno7992Test.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportServiceAno7992Test.java @@ -50,9 +50,13 @@ public class GenericFormatExportServiceAno7992Test { public static final ServiceDbResource dbResource = ServiceDbResource.readDb("dbAno7992"); public static final String CATCH_FILE_CONTENT - = "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Code_Taxon;Code_Espece_Campagne;Nom_Scientifique;Benthos;Lot_A_Confirmer;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Commentaire_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Commentaire_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Commentaire [...] - + "2015;Campagne EVHOE;;T0696;1;1;949;NEPH-NOR;Nephrops norvegicus;N;N;Vrac;1;3.2;;Poids;kg;;NA;;;;;kg;;Male;1;2.54;;Poids;kg;;NA;;;;;kg;;NA;;;;;kg;;;;;;;;;;?;2.54;2.519685;2.3188405;CAM-EVHOE;311;100004;NA;;300;100005;NA;;NA;\n" - + "2015;Campagne EVHOE;;T0696;1;1;949;NEPH-NOR;Nephrops norvegicus;N;N;Vrac;1;3.2;;Poids;kg;;NA;;;;;kg;;Femelle;2;0.22;;Poids;kg;;NA;;;;;kg;;NA;;;;;kg;;;;;;;;;;?;0.22;29.09091;2.3188405;CAM-EVHOE;311;100004;NA;;301;100006;NA;;NA;\n"; + = "Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Code_Taxon;Code_Espece_Campagne;Nom_Scientifique;Benthos;Lot_A_Confirmer;V_HV;Num_Ordre_V_HV_H2;Tot_V_HV;Ech_V_HV;Type_Volume_Poids_V_HV;Unite_Volume_Poids_V_HV;Commentaire_V_HV;Class_Tri;Num_Ordre_Class_Tri_H2;Tot_Class_Tri;Ech_Class_Tri;Type_Volume_Poids_Class_Tri;Unite_Volume_Poids_Class_Tri;Commentaire_Class_Tri;Sexe;Num_Ordre_Sexe_H2;Tot_Sexe;Ech_Sexe;Type_Volume_Poids_Sexe;Unite_Volume_Poids_Sexe;Commentaire [...] + "2015;Campagne EVHOE;;T0696;1;1;949;NEPH-NOR;Nephrops norvegicus;N;N;Vrac;1;3.2;;Poids;kg;;NA;;;;;kg;;Male;1;2.54;;Poids;kg;;NA;;;;;kg;;NA;;;;;kg;;;;;;;;;;?;2.54;1.2989074;1.1953713;CAM-EVHOE;311;100004;NA;;300;100005;NA;;NA;\n" + + "2015;Campagne EVHOE;;T0696;1;1;949;NEPH-NOR;Nephrops norvegicus;N;N;Vrac;1;3.2;;Poids;kg;;NA;;;;;kg;;Femelle;2;0.22;;Poids;kg;;NA;;;;;kg;;NA;;;;;kg;;;;;;;;;;?;0.22;14.996477;1.1953713;CAM-EVHOE;311;100004;NA;;301;100006;NA;;NA;\n" + + "2015;Campagne EVHOE;;A;2;1;1662;TRAC-TRA;Trachurus trachurus;N;N;Vrac;1;100.0;;Poids;kg;;G - Gros;1;30.0;;Poids;kg;;Male;1;10.0;;Poids;kg;;NA;;;;;kg;;NA;;;;;kg;;;;;;;;;;?;10.0;10.0;4.0;CAM-EVHOE;311;100020;305;100021;300;100023;NA;;NA;\n" + + "2015;Campagne EVHOE;;A;2;1;1662;TRAC-TRA;Trachurus trachurus;N;N;Vrac;1;100.0;;Poids;kg;;G - Gros;1;30.0;;Poids;kg;;Femelle;2;5.0;;Poids;kg;;NA;;;;;kg;;NA;;;;;kg;;41;Poids déterminé par calcul - produit/lot - totale - Inconnue;10.0;1;2.0;kg;;1;N;2.0;50.0;10.0;CAM-EVHOE;311;100020;305;100021;301;100024;NA;;NA;\n" + + "2015;Campagne EVHOE;;A;2;1;1662;TRAC-TRA;Trachurus trachurus;N;N;Vrac;1;100.0;;Poids;kg;;G - Gros;1;30.0;;Poids;kg;;Femelle;2;5.0;;Poids;kg;;NA;;;;;kg;;NA;;;;;kg;;41;Poids déterminé par calcul - produit/lot - totale - Inconnue;11.0;2;3.0;kg;;1;N;3.0;33.333332;6.6666665;CAM-EVHOE;311;100020;305;100021;301;100024;NA;;NA;\n" + + "2015;Campagne EVHOE;;A;2;1;1662;TRAC-TRA;Trachurus trachurus;N;N;Vrac;1;100.0;;Poids;kg;;P - Petit;2;20.0;;Poids;kg;;NA;;;;;kg;;NA;;;;;kg;;NA;;;;;kg;;;;;;;;;;?;20.0;5.0;2.0;CAM-EVHOE;311;100020;307;100022;NA;;NA;;NA;\n"; protected GenericFormatExportService service; @@ -69,6 +73,7 @@ public class GenericFormatExportServiceAno7992Test { public static final String CRUISE_ID = "100000"; public static final String OPERATION_1_ID = "100000"; + public static final String OPERATION_2_ID = "100001"; @Before public void setUp() throws Exception { @@ -86,7 +91,7 @@ public class GenericFormatExportServiceAno7992Test { service = serviceContext.getService(GenericFormatExportService.class); - dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 1, OPERATION_1_ID); + dataContext = dbResource.loadContext(PROGRAM_ID, CRUISE_ID, 2, OPERATION_1_ID,OPERATION_2_ID); progressionModel = new ProgressionModel(); diff --git a/tutti-service/src/test/resources/genericFormat/ano7992.tuttiProtocol b/tutti-service/src/test/resources/genericFormat/ano7992.tuttiProtocol index 1f39308..b570c24 100644 --- a/tutti-service/src/test/resources/genericFormat/ano7992.tuttiProtocol +++ b/tutti-service/src/test/resources/genericFormat/ano7992.tuttiProtocol @@ -19,4 +19,231 @@ species: speciesReferenceTaxonId: 949 speciesSurveyCode: NEPH-NOR weightEnabled: true +- !SpeciesProtocol + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 41 + mandatorySampleCategoryId: + - 198 + - 196 + - 1682 + - 1702 + - 1478 + - 1418 + - 101 + speciesReferenceTaxonId: 1662 + speciesSurveyCode: TRAC-TRA + weightEnabled: true version: 3 +zone: !java.util.ArrayList +- !Zone + label: z + strata: !java.util.LinkedList + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57621 + name: Strate Gn1 + label: Gn1 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57622 + name: Strate Gn2 + label: Gn2 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57623 + name: Strate Gn3 + label: Gn3 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57624 + name: Strate Gn4 + label: Gn4 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57629 + name: Strate Gs2 + label: Gs2 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57608 + name: Strate Cc4 + label: Cc4 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57609 + name: Strate Cc5 + label: Cc5 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57625 + name: Strate Gn5 + label: Gn5 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57626 + name: Strate Gn6 + label: Gn6 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57627 + name: Strate Gn7 + label: Gn7 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57606 + name: Strate Cc3 + label: Cc3 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57628 + name: Strate Gs1 + label: Gs1 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57610 + name: Strate Cc6 + label: Cc6 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57632 + name: Strate Gs5 + label: Gs5 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57611 + name: Strate Cc7 + label: Cc7 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57633 + name: Strate Gs6 + label: Gs6 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57612 + name: Strate Cn2 + label: Cn2 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57634 + name: Strate Gs7 + label: Gs7 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57613 + name: Strate Cn3 + label: Cn3 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57630 + name: Strate Gs3 + label: Gs3 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57631 + name: Strate Gs4 + label: Gs4 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57618 + name: Strate Cs7 + label: Cs7 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57614 + name: Strate Cs3 + label: Cs3 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57615 + name: Strate Cs4 + label: Cs4 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57616 + name: Strate Cs5 + label: Cs5 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide + - !Strata + location: !fr.ifremer.tutti.persistence.entities.referential.TuttiLocationBean + id: 57617 + name: Strate Cs6 + label: Cs6 + status: !fr.ifremer.tutti.persistence.entities.referential.StatusBean + id: 1 + name: Valide -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm