// Path: src/fr/formation/exo11/HEADER.java
// public enum HEADER {
// 	TYPE("Type"), YEAR("Année"), SCORE("Cote");
// 
// 	public final String column;
// 
// 	private HEADER(String column) {
// 		this.column = column;
// 	}
// }
// 
// Path: src/fr/formation/exo11/domain/RoundPlate.java
// public class RoundPlate extends Utensil implements Plate {
// 
// 	private float radius;
// 
// 	@Override
// 	public float calcArea() {
// 		return (float) (Math.pow(this.radius, 2) * Math.PI);
// 	}
// 
// 	@Override
// 	public void setScore(Object obj) {
// 		this.setRadius(Float.parseFloat(obj.toString()));
// 	}
// 
// 	public float getRadius() {
// 		return radius;
// 	}
// 
// 	public void setRadius(float radius) {
// 		this.radius = radius;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return super.toString().replace("Ustensile", "Assiette ronde");
// 	}
// 
// }
// 
// Path: src/fr/formation/exo11/domain/Spoon.java
// public class Spoon extends Utensil {
// 
// 	private float length;
// 
// 	public float getLength() {
// 		return length;
// 	}
// 
// 	public void setLength(float length) {
// 		this.length = length;
// 	}
// 
// 	@Override
// 	public void setScore(Object obj) {
// 		this.setLength(Float.parseFloat(obj.toString()));
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return super.toString().replace("Ustensile", "Cuillère");
// 	}
// 
// }
// 
// Path: src/fr/formation/exo11/domain/SquarePlate.java
// public class SquarePlate extends Utensil implements Plate {
// 
// 	private float score;
// 
// 	@Override
// 	public float calcArea() {
// 		return (float) Math.pow(score, 2);
// 	}
// 
// 	public float getScore() {
// 		return score;
// 	}
// 
// 	@Override
// 	public void setScore(Object score) {
// 		this.score = Float.parseFloat(score.toString());
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return super.toString().replace("Ustensile", "Assiette carré");
// 	}
// 
// }
// 
// Path: src/fr/formation/exo11/domain/Utensil.java
// public abstract class Utensil {
// 	private LocalDate creation;
// 
// 	public abstract void setScore(Object obj);
// 
// 	/**
// 	 * Calcul générique de la valeur d'un ustensile si il a plus de 50 ans
// 	 * (sinon sa valeur est 0).
// 	 * 
// 	 * @param current la date à partir de laquelle calculer l'année en cours.
// 	 * @return int la valeur calculée.
// 	 */
// 	public int calcValue(LocalDate current) {
// 		final int age = current.getYear() - this.creation.getYear();
// 		return age > 50 ? age - 50 : 0;
// 	}
// 
// 	public LocalDate getCreation() {
// 		return creation;
// 	}
// 
// 	public void setCreation(LocalDate creation) {
// 		this.creation = creation;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		final StringBuilder sb = new StringBuilder("Ustensile[");
// 		sb.append("Fabrication->");
// 		sb.append(this.creation);
// 		return sb.toString();
// 	}
// 
// }


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.formation.exo11.HEADER;
import fr.formation.exo11.domain.RoundPlate;
import fr.formation.exo11.domain.Spoon;
import fr.formation.exo11.domain.SquarePlate;
import fr.formation.exo11.domain.Utensil;
package fr.formation.exo11.parser;




public class CsvParser implements Parser {

	private static final String CSV_SEPARATOR = ",";

	private static final Logger LOGGER = LoggerFactory
			.getLogger(CsvParser.class);

	private InputStream inputData;
	private Map<HEADER, Integer> headerMap;

	@Override
// Path: src/fr/formation/exo11/HEADER.java
// public enum HEADER {
// 	TYPE("Type"), YEAR("Année"), SCORE("Cote");
// 
// 	public final String column;
// 
// 	private HEADER(String column) {
// 		this.column = column;
// 	}
// }
// 
// Path: src/fr/formation/exo11/domain/RoundPlate.java
// public class RoundPlate extends Utensil implements Plate {
// 
// 	private float radius;
// 
// 	@Override
// 	public float calcArea() {
// 		return (float) (Math.pow(this.radius, 2) * Math.PI);
// 	}
// 
// 	@Override
// 	public void setScore(Object obj) {
// 		this.setRadius(Float.parseFloat(obj.toString()));
// 	}
// 
// 	public float getRadius() {
// 		return radius;
// 	}
// 
// 	public void setRadius(float radius) {
// 		this.radius = radius;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return super.toString().replace("Ustensile", "Assiette ronde");
// 	}
// 
// }
// 
// Path: src/fr/formation/exo11/domain/Spoon.java
// public class Spoon extends Utensil {
// 
// 	private float length;
// 
// 	public float getLength() {
// 		return length;
// 	}
// 
// 	public void setLength(float length) {
// 		this.length = length;
// 	}
// 
// 	@Override
// 	public void setScore(Object obj) {
// 		this.setLength(Float.parseFloat(obj.toString()));
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return super.toString().replace("Ustensile", "Cuillère");
// 	}
// 
// }
// 
// Path: src/fr/formation/exo11/domain/SquarePlate.java
// public class SquarePlate extends Utensil implements Plate {
// 
// 	private float score;
// 
// 	@Override
// 	public float calcArea() {
// 		return (float) Math.pow(score, 2);
// 	}
// 
// 	public float getScore() {
// 		return score;
// 	}
// 
// 	@Override
// 	public void setScore(Object score) {
// 		this.score = Float.parseFloat(score.toString());
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return super.toString().replace("Ustensile", "Assiette carré");
// 	}
// 
// }
// 
// Path: src/fr/formation/exo11/domain/Utensil.java
// public abstract class Utensil {
// 	private LocalDate creation;
// 
// 	public abstract void setScore(Object obj);
// 
// 	/**
// 	 * Calcul générique de la valeur d'un ustensile si il a plus de 50 ans
// 	 * (sinon sa valeur est 0).
// 	 * 
// 	 * @param current la date à partir de laquelle calculer l'année en cours.
// 	 * @return int la valeur calculée.
// 	 */
// 	public int calcValue(LocalDate current) {
// 		final int age = current.getYear() - this.creation.getYear();
// 		return age > 50 ? age - 50 : 0;
// 	}
// 
// 	public LocalDate getCreation() {
// 		return creation;
// 	}
// 
// 	public void setCreation(LocalDate creation) {
// 		this.creation = creation;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		final StringBuilder sb = new StringBuilder("Ustensile[");
// 		sb.append("Fabrication->");
// 		sb.append(this.creation);
// 		return sb.toString();
// 	}
// 
// }


// Path: src/fr/formation/exo11/parser/CsvParser.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.formation.exo11.HEADER;
import fr.formation.exo11.domain.RoundPlate;
import fr.formation.exo11.domain.Spoon;
import fr.formation.exo11.domain.SquarePlate;
import fr.formation.exo11.domain.Utensil;

package fr.formation.exo11.parser;




public class CsvParser implements Parser {

	private static final String CSV_SEPARATOR = ",";

	private static final Logger LOGGER = LoggerFactory
			.getLogger(CsvParser.class);

	private InputStream inputData;
	private Map<HEADER, Integer> headerMap;

	@Override
	public List<Utensil> parse() {