Merge branch 'master' into 1.04.26
This commit is contained in:
@@ -9,7 +9,21 @@ import java.util.HashSet;
|
||||
*/
|
||||
public interface DataParsing {
|
||||
|
||||
public static HashSet<Poisson> parse(RawData data) throws RawDataOverflow {
|
||||
/**
|
||||
* Permet de parser un élément à partir d'un objet RawData.
|
||||
* @param data l'objet RawData
|
||||
* @param parseTypeId Permet d'indiquer le type de Parsing que l'on veut.
|
||||
* @return Un HashSet de données T retourné.
|
||||
* @param <T> Notre paramètre générique adaptable à plusieurs classes.
|
||||
* @throws RawDataOverflow Si on dépasse la taille de l'objet RawData.
|
||||
* @throws InvalidParsingException Si le type de parsing n'existe pas.
|
||||
*/
|
||||
public static <T> HashSet<T> parse(RawData data, int parseTypeId ) throws RawDataOverflow, InvalidParsingException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static <T> HashSet<T> parse(RawData data) throws RawDataOverflow, InvalidParsingException {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
37
src/ecoparasite/input/InvalidParsingException.java
Normal file
37
src/ecoparasite/input/InvalidParsingException.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package ecoparasite.input;
|
||||
|
||||
/**
|
||||
* Gère une exception lorsque qu'un type de parsing n'existe pas ou bien
|
||||
* qu'une erreur est survenue durant le parsing d'une donnée.
|
||||
*/
|
||||
public class InvalidParsingException extends Exception {
|
||||
|
||||
/**
|
||||
* L'ID du parsing voulant être réalisé.
|
||||
*/
|
||||
private int parsingId;
|
||||
|
||||
/**
|
||||
* De quel classe provient ce parsing.
|
||||
*/
|
||||
private String parsingSource;
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* @param parsingId ID du parsing
|
||||
* @param parsingSource La classe d'où provient ce parsing.
|
||||
*/
|
||||
public InvalidParsingException(int parsingId, String parsingSource) {
|
||||
this.parsingId = parsingId;
|
||||
this.parsingSource = parsingSource;
|
||||
super();
|
||||
}
|
||||
|
||||
public int getParsingId() {
|
||||
return parsingId;
|
||||
}
|
||||
public String getParsingSource() {
|
||||
return parsingSource;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -99,7 +99,7 @@ public class RawData {
|
||||
* Permet d'obtenir tous les champs d'une entrée.
|
||||
* @param index Entrée que vous voulez obtenir, le minimum est l'entrée 1. Le maximum dépend du Dataframe.
|
||||
* @return Une HashMap <colonne, valeur>.
|
||||
* @throws RawDataOverflow Si vous avez dépasses le maximum d'entrées du DataFrame.
|
||||
* @throws RawDataOverflow Si vous avez dépassé le maximum d'entrées du DataFrame.
|
||||
*/
|
||||
public HashMap<String,String> getEntry(int index) throws RawDataOverflow {
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package ecoparasite.poisson;
|
||||
|
||||
import ecoparasite.input.DataParsing;
|
||||
import ecoparasite.input.InvalidParsingException;
|
||||
import ecoparasite.input.RawData;
|
||||
import ecoparasite.input.RawDataOverflow;
|
||||
|
||||
@@ -24,10 +25,25 @@ public class Mackerel extends Poisson implements DataParsing {
|
||||
super(id, length, null, infestation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implémentation de la fonction parse de DataParsing.
|
||||
* Renvoie un tableau de poissons à partir d'un RawData.
|
||||
*
|
||||
* @param data Notre RawData
|
||||
* @param parseTypeId L'ID du type de parsing, ignoré ici.
|
||||
* @return Le tableau de poissons.
|
||||
* @throws RawDataOverflow Si on a un dépassement de données dans notre RawData.
|
||||
* @throws InvalidParsingException
|
||||
*/
|
||||
public static HashSet<Poisson> parse(RawData data, int parseTypeId) throws RawDataOverflow, InvalidParsingException {
|
||||
return Mackerel.parse(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implémentation de la fonction parse de Dataparsing
|
||||
* @param data
|
||||
* @param data Notre RawData.
|
||||
* @return tableau des poissons
|
||||
* @throws RawDataOverflow Si on a un dépassement de données dans notre RawDataOverflow.
|
||||
*/
|
||||
public static HashSet<Poisson> parse(RawData data) throws RawDataOverflow {
|
||||
|
||||
@@ -39,11 +55,27 @@ public class Mackerel extends Poisson implements DataParsing {
|
||||
for (int i = 0; i < data.getData().getFirst().size(); i++) {
|
||||
temp = data.getEntry(i);
|
||||
Poisson newP = new Mackerel(temp.get("Sample_code"),valueOf(temp.get("StandardLength")),valueOf(temp.get("NParasitesViscera")));
|
||||
|
||||
newP.setFishParts( Mackerel.parsePartiePoisson(temp) );
|
||||
fishSet.add(newP);
|
||||
}
|
||||
|
||||
|
||||
return fishSet;
|
||||
}
|
||||
|
||||
private static HashSet<PartiePoisson> parsePartiePoisson(HashMap<String,String> entry){
|
||||
|
||||
HashSet<PartiePoisson> response = new HashSet<>();
|
||||
|
||||
for( String k: entry.keySet() ){
|
||||
if( k.contains( "Anisakis_" ) ){
|
||||
String bodyPart = k.split( "Anisakis_" )[1];
|
||||
Double value = valueOf(entry.get(k));
|
||||
PartiePoisson p = new PartiePoisson(bodyPart, value);
|
||||
response.add(p);
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package ecoparasite.poisson;
|
||||
|
||||
import ecoparasite.input.DataParsing;
|
||||
import ecoparasite.input.InvalidParsingException;
|
||||
import ecoparasite.input.RawData;
|
||||
import ecoparasite.input.RawDataOverflow;
|
||||
|
||||
@@ -24,10 +25,24 @@ public class Merlu extends Poisson implements DataParsing {
|
||||
super(id, length, null, infestation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implémentation de la fonction parse de DataParsing.
|
||||
* Renvoie un tableau de poissons à partir d'un RawData.
|
||||
*
|
||||
* @param data Notre RawData
|
||||
* @param parseTypeId L'ID du type de parsing, ignoré ici.
|
||||
* @return Le tableau de poissons.
|
||||
* @throws RawDataOverflow Si on a un dépassement de données dans notre RawData.
|
||||
*/
|
||||
public static HashSet<Poisson> parse(RawData data, int parseTypeId) throws RawDataOverflow, InvalidParsingException {
|
||||
return Mackerel.parse(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implémentation de la fonction parse de Dataparsing
|
||||
* @param data
|
||||
* @param data Notre RawData
|
||||
* @return tableau des poissons
|
||||
* @throws RawDataOverflow Si on a un dépassement des données de notre objet RawData.
|
||||
*/
|
||||
public static HashSet<Poisson> parse(RawData data) throws RawDataOverflow {
|
||||
|
||||
|
||||
@@ -1,4 +1,61 @@
|
||||
package ecoparasite.poisson;
|
||||
|
||||
public abstract class PartiePoisson {
|
||||
/**
|
||||
* Permet d'illustrer une partie d'un poisson.
|
||||
*/
|
||||
public class PartiePoisson {
|
||||
|
||||
/**
|
||||
* Nom de la partie du poisson.
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* Le taux d'infestation de cette partie du poisson.
|
||||
*/
|
||||
private Double infestation;
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Génère une partie complète.
|
||||
*
|
||||
* @param name Le nom de la partie.
|
||||
* @param infestation Le taux d'infestation de la partie du poisson.
|
||||
*/
|
||||
public PartiePoisson(String name, Double infestation) {
|
||||
this.name = name;
|
||||
this.infestation = infestation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Génère une infestation de null comme non communiqué.
|
||||
*
|
||||
* @param name Le nom de la partie.
|
||||
*/
|
||||
public PartiePoisson(String name){
|
||||
this.name = name;
|
||||
this.infestation = null;
|
||||
}
|
||||
|
||||
/*
|
||||
GETTERS / SETTERS
|
||||
*/
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Double getInfestation() {
|
||||
return infestation;
|
||||
}
|
||||
|
||||
public void setInfestation(Double infestation) {
|
||||
this.infestation = infestation;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -61,6 +61,22 @@ public class Poisson{
|
||||
return infestation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter de l'attribut des parties de poisson.
|
||||
* @return Le HashSet des parties de poisson.
|
||||
*/
|
||||
public HashSet<PartiePoisson> getFishParts() {
|
||||
return fishParts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter de l'attribut des parties de poisson.
|
||||
* @param fishParts Un hashset de parties de poisson.
|
||||
*/
|
||||
public void setFishParts(HashSet<PartiePoisson> fishParts) {
|
||||
this.fishParts = fishParts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Permet d'afficher les informations de notre poisson
|
||||
* @return La string contenant les informations
|
||||
|
||||
@@ -1,50 +1,118 @@
|
||||
package ecoparasite.population;
|
||||
package ecoparasite.population;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import ecoparasite.input.DataParsing;
|
||||
import ecoparasite.input.InvalidParsingException;
|
||||
import ecoparasite.input.RawData;
|
||||
import ecoparasite.input.RawDataOverflow;
|
||||
|
||||
public class Population {
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
||||
private String id;
|
||||
private PopulationArgs total;
|
||||
private HashMap<Integer,PopulationArgs> perYear;
|
||||
/**
|
||||
* Permet de gérer une population selon les années.
|
||||
*/
|
||||
public class Population implements DataParsing {
|
||||
|
||||
public Population(String id, PopulationArgs total, HashMap<Integer,PopulationArgs> perYear) {
|
||||
this.id = id;
|
||||
this.total = total;
|
||||
this.perYear = perYear;
|
||||
}
|
||||
/**
|
||||
* Espèce de la population.
|
||||
*/
|
||||
private String id;
|
||||
|
||||
public Population(String id, PopulationArgs total) {
|
||||
this.id = id;
|
||||
this.total = total;
|
||||
this.perYear = new HashMap<>();
|
||||
}
|
||||
/**
|
||||
* Les informations de la population sur le total.
|
||||
*/
|
||||
private PopulationArgs total;
|
||||
|
||||
public Population(String id) {
|
||||
this.id = id;
|
||||
this.total = null;
|
||||
this.perYear = new HashMap<>();
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public PopulationArgs getTotal() {
|
||||
return total;
|
||||
}
|
||||
|
||||
public HashMap<Integer,PopulationArgs> getPerYear() {
|
||||
return perYear;
|
||||
}
|
||||
|
||||
public void setTotal(PopulationArgs total) {
|
||||
this.total = total;
|
||||
}
|
||||
|
||||
public void setPerYear(HashMap<Integer,PopulationArgs> perYear) {
|
||||
this.perYear = perYear;
|
||||
}
|
||||
/**
|
||||
* Les informations de la population par année.
|
||||
* Clé : Année, Valeur : Informations de la population.
|
||||
*/
|
||||
private HashMap<Integer,PopulationArgs> perYear;
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* @param id Espèce
|
||||
* @param total Les informations totales.
|
||||
* @param perYear Les informations par année.
|
||||
*/
|
||||
public Population(String id, PopulationArgs total, HashMap<Integer,PopulationArgs> perYear) {
|
||||
this.id = id;
|
||||
this.total = total;
|
||||
this.perYear = perYear;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Pour les informations par année, crée une HashMap vide. Devra être rempli après coup.
|
||||
* @param id Espèce de la population.
|
||||
* @param total Les informations totales.
|
||||
*/
|
||||
public Population(String id, PopulationArgs total) {
|
||||
this.id = id;
|
||||
this.total = total;
|
||||
this.perYear = new HashMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Pour les informations du total, sont remplacés par null.
|
||||
* Pour les informations par année, crée une HashMap vide. Devra être rempli après coup.
|
||||
* @param id Espèce de la population.
|
||||
*/
|
||||
public Population(String id) {
|
||||
this.id = id;
|
||||
this.total = null;
|
||||
this.perYear = new HashMap<>();
|
||||
}
|
||||
|
||||
/*
|
||||
GETTERS / SETTERS
|
||||
*/
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public PopulationArgs getTotal() {
|
||||
return total;
|
||||
}
|
||||
|
||||
public HashMap<Integer,PopulationArgs> getPerYear() {
|
||||
return perYear;
|
||||
}
|
||||
|
||||
public void setTotal(PopulationArgs total) {
|
||||
this.total = total;
|
||||
}
|
||||
|
||||
public void setPerYear(HashMap<Integer,PopulationArgs> perYear) {
|
||||
this.perYear = perYear;
|
||||
}
|
||||
|
||||
/**
|
||||
* Raccourci vers les méthodes de DataParsing.
|
||||
* @param data Notre objet RawData.
|
||||
* @param parseTypeId L'ID de parsing.
|
||||
* @return
|
||||
*/
|
||||
public static HashSet<Population> parse(RawData data, int parseTypeId ) throws RawDataOverflow, InvalidParsingException {
|
||||
switch (parseTypeId) {
|
||||
case 1:
|
||||
return PopulationParsing.parseParasitesPeru(data);
|
||||
default:
|
||||
throw new InvalidParsingException(parseTypeId, Population.class.getSimpleName() );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Raccourci vers les méthodes de DataParsing.
|
||||
* Va par défaut faire ceux des parasites du Perou.
|
||||
*
|
||||
* @param data Notre objet RawData.
|
||||
* @return Notre tableau de populations.
|
||||
*/
|
||||
public static HashSet<Population> parse(RawData data){
|
||||
return PopulationParsing.parseParasitesPeru(data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,17 +1,44 @@
|
||||
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;
|
||||
@@ -28,12 +55,26 @@ public class PopulationArgInterval {
|
||||
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.
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
package ecoparasite.population;
|
||||
|
||||
/**
|
||||
* Permet de stocker les paramètres d'une population pour une année spécifique.
|
||||
* Par convention, si on est sur le total, on mettra comme année 0.
|
||||
*/
|
||||
public class PopulationArgs {
|
||||
|
||||
/**
|
||||
* Année de référence pour ces paramètres.
|
||||
*/
|
||||
private int year;
|
||||
|
||||
/**
|
||||
* Le nombre d'individus analysés.
|
||||
*/
|
||||
private int number;
|
||||
private PopulationArgInterval length;
|
||||
private PopulationArgInterval width;
|
||||
@@ -12,6 +22,19 @@ public class PopulationArgs {
|
||||
private Double intensity;
|
||||
private Double abondance;
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Toutes les données peuvent être préremplis dans ce constructeur sauf l'année.
|
||||
* L'année sera par défaut à zéro.
|
||||
*
|
||||
* @param N
|
||||
* @param length
|
||||
* @param width
|
||||
* @param prevalence
|
||||
* @param ic
|
||||
* @param intensity
|
||||
* @param abondance
|
||||
*/
|
||||
public PopulationArgs(
|
||||
int N,
|
||||
PopulationArgInterval length,
|
||||
@@ -31,6 +54,19 @@ public class PopulationArgs {
|
||||
this.abondance = abondance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Toutes les données ainsi que l'année peuvent être préremplis.
|
||||
*
|
||||
* @param year
|
||||
* @param N
|
||||
* @param length
|
||||
* @param width
|
||||
* @param prevalence
|
||||
* @param ic
|
||||
* @param intensity
|
||||
* @param abondance
|
||||
*/
|
||||
public PopulationArgs(
|
||||
int year,
|
||||
int N,
|
||||
@@ -51,16 +87,30 @@ public class PopulationArgs {
|
||||
this.abondance = abondance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Permet de remplir tout d'abord l'année, les autres paramètres seront remplis par les setters.
|
||||
*
|
||||
* @param year
|
||||
*/
|
||||
public PopulationArgs(
|
||||
int year
|
||||
){
|
||||
this.year = year;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructeur.
|
||||
* Initialise l'objet avec une année par défaut (0).
|
||||
*/
|
||||
public PopulationArgs(){
|
||||
this.year = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
GETTERS / SETTERS
|
||||
*/
|
||||
|
||||
public int getYear() {
|
||||
return year;
|
||||
}
|
||||
|
||||
@@ -6,9 +6,18 @@ import ecoparasite.input.RawDataOverflow;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* Permet de parser une population spécifique via les schémas fournis.
|
||||
*/
|
||||
public class PopulationParsing {
|
||||
|
||||
public static HashMap<String,Population> parseParasitesPeru(RawData peruRawData ){
|
||||
/**
|
||||
* Permet, à partir d'un objet RawData, de parse les données tel que le fichier parasitesPeru est structuré.
|
||||
*
|
||||
* @param peruRawData
|
||||
* @return Une liste des populations incluses.
|
||||
*/
|
||||
public static HashSet<Population> parseParasitesPeru(RawData peruRawData ){
|
||||
|
||||
HashMap<String,Population> response = new HashMap<>();
|
||||
|
||||
@@ -19,9 +28,9 @@ public class PopulationParsing {
|
||||
HashMap<String,String> fields = peruRawData.getEntry(index);
|
||||
|
||||
String espece = fields.get("Espèce");
|
||||
System.out.println(espece);
|
||||
String parametre = fields.get("Paramètre");
|
||||
|
||||
// Récupère la population si elle existe déjà.
|
||||
Population population = null;
|
||||
if( response.containsKey( espece ) ){
|
||||
population = response.get(espece);
|
||||
@@ -59,13 +68,20 @@ public class PopulationParsing {
|
||||
response.put( espece, population );
|
||||
index++;
|
||||
}
|
||||
} catch (RawDataOverflow e){
|
||||
} catch (RawDataOverflow e){ // Débordement, on a atteint la fin de l'objet RawData.
|
||||
// Stop.
|
||||
}
|
||||
|
||||
return response;
|
||||
return new HashSet<Population>( response.values() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Permet d'appliquer la valeur au paramètre respectif en se basant sur le nom de la colonne.
|
||||
*
|
||||
* @param populationArgs Les paramètres de la population actuelle.
|
||||
* @param column Le nom de la colonne dans le fichier CSV
|
||||
* @param value La valeur a affecter
|
||||
*/
|
||||
private static void applyValueForParasitesPeru( PopulationArgs populationArgs, String column, String value ){
|
||||
switch( column ){
|
||||
case "N":
|
||||
|
||||
Reference in New Issue
Block a user