package ecoparasite.poisson; import ecoparasite.input.DataParsing; import ecoparasite.input.InvalidParsingException; import ecoparasite.input.RawData; import ecoparasite.input.RawDataOverflow; import java.util.HashMap; import java.util.HashSet; import static java.lang.Double.valueOf; /** * Hérite de Poisson. * Ajoute les fonctions de Parsing liés aux données collectées sur le Mackerel. */ public class Mackerel extends Poisson implements DataParsing { /** * Constructeur de Mackerel * @param length * @param infestation */ public Mackerel(String id, Double length, Double infestation) { 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 parse(RawData data, int parseTypeId) throws RawDataOverflow, InvalidParsingException { return Mackerel.parse(data); } /** * Implémentation de la fonction parse de Dataparsing * @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 parse(RawData data) throws RawDataOverflow { HashMap temp = new HashMap<>(); HashSet fishSet; fishSet = new HashSet<>(); 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 parsePartiePoisson(HashMap entry){ HashSet 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; } }