This is an automated email from the git hooks/post-receive script. New commit to branch feature/8189 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 563c3b60f91960977b4d6f7107ab42b4246ab239 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 11:15:59 2016 +0200 Amélioration de la méthode de convertion --- .../java/fr/ifremer/tutti/type/WeightUnit.java | 24 ------------ .../main/java/fr/ifremer/tutti/util/Weights.java | 44 ++++++++++++++++++++++ .../frequency/SpeciesFrequencyTableModel.java | 9 +++-- .../frequency/SpeciesFrequencyUIHandler.java | 10 ++--- .../species/frequency/SpeciesFrequencyUIModel.java | 6 +-- 5 files changed, 55 insertions(+), 38 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java index ef81a66..9849fdf 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/type/WeightUnit.java @@ -25,7 +25,6 @@ package fr.ifremer.tutti.type; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; -import java.util.Objects; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -147,29 +146,6 @@ public enum WeightUnit { return result; } - //FIXME A supprimer ne fait pas les arrondis avec la bonne unité ? et le calcul à l'envers j'ai l'impression - public Float convertWeight(Float weight, WeightUnit weightUnit) { - Objects.requireNonNull(weightUnit); - return round(fromEntity(weightUnit.toEntity(weight))); - } - - /** - * Pour convertir de l'unité courante vers l'unité passée en paramètre. - * - * @param sourceWeight le poids à convertir - * @param weightUnit l'unité de convertion - * @return le poids converti (et arrondi) dans l'unité cible - */ - public float convert(float sourceWeight, WeightUnit weightUnit) { - Objects.requireNonNull(weightUnit); - // on convertit le poids source en mode «entité» - float sourceWeightToEntity = toEntity(sourceWeight); - // on convertit depuis le mode «entité» vers l'unité cible - float targetWeightFromEntity = weightUnit.fromEntity(sourceWeightToEntity); - // on arrondit selon l'unité cible - return weightUnit.round(targetWeightFromEntity); - } - public String decorateLabel(String label) { return String.format("%s (%s)", label, getShortLabel()); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Weights.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Weights.java index c1c00cd..a239e63 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Weights.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Weights.java @@ -29,6 +29,7 @@ import fr.ifremer.tutti.type.WeightUnit; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; +import java.util.Objects; /** * Created on 8/26/14. @@ -150,4 +151,47 @@ public class Weights { } return (float) (rtp.getA() * Math.pow(lengthStep, rtp.getB())); } + + /** + * Pour convertir d'une unité vers une autre. + * + * @param sourceWeight le poids à convertir + * @param sourceWeightUnit l'unité de convertion + * @param targetWeightUnit l'unité de convertion + * @return le poids converti (et arrondi) dans l'unité cible + */ + public static float convert(WeightUnit sourceWeightUnit, WeightUnit targetWeightUnit, float sourceWeight) { + + Objects.requireNonNull(sourceWeightUnit); + Objects.requireNonNull(targetWeightUnit); + + // on convertit le poids source en mode «entité» + float sourceWeightToEntity = sourceWeightUnit.toEntity(sourceWeight); + + // on convertit depuis le mode «entité» vers l'unité cible + float targetWeightFromEntity = targetWeightUnit.fromEntity(sourceWeightToEntity); + + // on arrondit selon l'unité cible + return targetWeightUnit.round(targetWeightFromEntity); + + } + + /** + * Pour convertir d'une unité vers une autre. + * + * @param sourceWeight le poids à convertir + * @param sourceWeightUnit l'unité de convertion + * @param targetWeightUnit l'unité de convertion + * @return le poids converti (et arrondi) dans l'unité cible + */ + public static Float convert(WeightUnit sourceWeightUnit, WeightUnit targetWeightUnit, Float sourceWeight) { + + Float targetWeight = sourceWeight; + if (sourceWeight != null) { + targetWeight = convert(sourceWeightUnit, targetWeightUnit, (float) sourceWeight); + } + + return targetWeight; + + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java index ae179fa..648e072 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java @@ -22,8 +22,9 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; * #L% */ -import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode; +import fr.ifremer.tutti.type.WeightUnit; +import fr.ifremer.tutti.util.Weights; import org.jdesktop.swingx.table.TableColumnModelExt; import org.jfree.data.xy.XYSeries; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; @@ -282,7 +283,7 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp if (row.withNumber()) { frequenciesSeries.addOrUpdate(newValue, row.getNumber()); - Float weight = individualObservationWeightUnit.convertWeight(row.computeAverageWeight(), weightUnit); + Float weight = Weights.convert(weightUnit, individualObservationWeightUnit, row.computeAverageWeight()); averageWeightsSeries.addOrUpdate(newValue, weight); } @@ -333,7 +334,7 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp } else { frequenciesSeries.addOrUpdate(lengthStep, row.getNumber()); - Float weight = individualObservationWeightUnit.convertWeight(row.computeAverageWeight(), weightUnit); + Float weight = Weights.convert(weightUnit, individualObservationWeightUnit, row.computeAverageWeight()); averageWeightsSeries.addOrUpdate(lengthStep, weight); } @@ -377,7 +378,7 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp } else { - Float weight = individualObservationWeightUnit.convertWeight(row.computeAverageWeight(), weightUnit); + Float weight = Weights.convert(weightUnit, individualObservationWeightUnit, row.computeAverageWeight()); averageWeightsSeries.addOrUpdate(lengthStep, weight); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java index 7c5dde2..e923a49 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java @@ -47,12 +47,8 @@ import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellRenderer; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellEditor; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.EditSpeciesBatchPanelUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellRenderer; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.EditSpeciesBatchPanelUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; @@ -1203,7 +1199,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci SpeciesFrequencyRowModel row = getRowForLengthstep(lengthStep); // conversion de poids - weight = weightUnit.convertWeight(weight, getConfig().getIndividualObservationWeightUnit()); + weight = Weights.convert(getConfig().getIndividualObservationWeightUnit(), weightUnit, weight); row.addToWeight(weight); if (Weights.isNullOrZero(row.getWeight())) { @@ -1849,7 +1845,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci Float weight = obsRow.getWeight(); if (CopyIndividualObservationMode.ALL == copyMode && weight != null) { // conversion de poids - weight = weightUnit.convertWeight(weight, individualObservationWeightUnit); + weight = Weights.convert(individualObservationWeightUnit, weightUnit, weight); row.addToWeight(weight); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java index 7991d9b..877503f 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java @@ -27,8 +27,8 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.Rtp; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.util.computable.ComputableData; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; @@ -374,7 +374,7 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa frequenciesSeries.addOrUpdate(lengthStep, number); - Float averageWeight = individualObservationWeightUnit.convertWeight(row.computeAverageWeight(), weightUnit); + Float averageWeight = Weights.convert(weightUnit, individualObservationWeightUnit, row.computeAverageWeight()); if (averageWeight != null) { averageWeightsSeries.addOrUpdate(lengthStep, averageWeight); } @@ -852,7 +852,7 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa if (row.withNumber() && row.getLengthStep() != null && withRtp()) { // computedWeightForLengthStep in grams float computedWeightForLengthStep = Weights.computeWithRtp(getRtp(), row.getLengthStep(), getLengthStepCaracteristicUnit()); - computedWeight = WeightUnit.G.convert(row.getNumber() * computedWeightForLengthStep, weightUnit); + computedWeight = Weights.convert(WeightUnit.G, weightUnit, row.getNumber() * computedWeightForLengthStep); } row.setRtpComputedWeight(computedWeight); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.