package ecoparasite.population; /** * Classe qui permet de gérer un intervalle de données issues d'un CSV. * * Trois données : minimum, maximum et moyenne entre minimum et maximum. */ public class PopulationArgInterval { /** * Valeur minimale. */ private Double min; /** * Valeur maximale. */ private Double max; /** * Moyenne entre la valeur minimale et maximale. */ private Double mean; /** * Constructeur. La moyenne doit être précisée. * @param min Valeur minimale * @param max Valeur maximale * @param mean Moyenne */ public PopulationArgInterval(Double min, Double max, Double mean) { this.min = min; this.max = max; this.mean = mean; } /** * Constructeur. La moyenne est calculé automatiquement. * @param min Valeur minimale * @param max Valeur maximale. */ public PopulationArgInterval(Double min, Double max) { this.min = min; this.max = max; this.mean = ( this.max + this.min ) / 2; } public Double getMin() { return this.min; } public Double getMax() { return this.max; } public Double getMean() { return this.mean; } /** * Permet de transformer un intervalle en double. * Si le minimum est égal au maximum, cette valeur est retourné. * Sinon la moyenne est retourné. * * @return La valeur transformée en Double. */ public Double transformToDouble(){ if( this.min == this.max ) return this.min; return this.mean; } /** * Permet de transformer une String (Extraite d'un fichier CSV) et de la transformer en Intervalle. * Gère les séparateurs +/- ainsi que l'entre deux. Sinon, elle sera juste convertie avec minimum = maximum. * * @param rawValue La valeur brute. * @return La valeur en tant qu'intervalle. */ public static PopulationArgInterval fromString( String rawValue ){ if( rawValue.contains( "±" ) ){ // Plus ou moins. String[] numbers = rawValue.split("±"); Double mean = Double.parseDouble(numbers[0].trim()); Double interval = Double.parseDouble(numbers[1].trim()); return new PopulationArgInterval(mean - interval, mean + interval, mean); } else if( rawValue.contains( " - " ) ){ // Entre. String[] numbers = rawValue.split("-"); Double min = Double.parseDouble(numbers[0].trim()); Double max = Double.parseDouble(numbers[1].trim()); return new PopulationArgInterval(min, max); } else { Double number = Double.parseDouble(rawValue); return new PopulationArgInterval(number, number); } } }