package dao;

import java.util.ArrayList;
import java.util.List;
import java.io.ByteArrayInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import controleur.Journal;
import modele.StatistiquesAnnee;

public class AnneeDAO extends Telechargeur {
	
	private static final String URL_LISTE_STATISTIQUES = "https://sd.s0und.space/service-lumiere/";

	public List<StatistiquesAnnee> lireStatistiquesAnnee(int annee)
	{
		Journal.ecrire(Journal.NIVEAU.ROULEMENT, "AnneeDAO.lireStatistiquesAnnee("+annee+")");
	    List<StatistiquesAnnee> listeStatistiquesAnnee = new ArrayList<StatistiquesAnnee>();

	    // Parsing du XML
	    String xml = getXml(URL_LISTE_STATISTIQUES + annee);
	    try {
	        DocumentBuilder parseur = DocumentBuilderFactory.newInstance().newDocumentBuilder();
	        Document document = parseur.parse(new ByteArrayInputStream(xml.getBytes()));

	        Element elementResume = (Element) document.getElementsByTagName("resume").item(0);

//	    	int annee = Integer.parseInt(noeudElement.getElementsByTagName("annee").item(0).getTextContent()); // Déjà dans la requete
	    	double anneeMesureMinimum = Double.parseDouble(elementResume.getElementsByTagName("min").item(0).getTextContent());
	    	double anneeMesureMoyenne = Double.parseDouble(elementResume.getElementsByTagName("moyenne").item(0).getTextContent());
	    	double anneeMesureMaximum = Double.parseDouble(elementResume.getElementsByTagName("max").item(0).getTextContent());
	        
	        NodeList noeuds = document.getElementsByTagName("captureLumiere");
	        for(int i=0;i<noeuds.getLength();i++)
	        {
	            Element element = (Element) noeuds.item(i);

	        	int mois = Integer.parseInt(element.getElementsByTagName("mois").item(0).getTextContent());
	        	double mesureMinimum = Double.parseDouble(element.getElementsByTagName("min").item(0).getTextContent());
	            double mesureMoyenne = Double.parseDouble(element.getElementsByTagName("moyenne").item(0).getTextContent());
	        	double mesureMaximum = Double.parseDouble(element.getElementsByTagName("max").item(0).getTextContent());
	        	
	            StatistiquesAnnee statistiquesAnnee = new StatistiquesAnnee();
	            statistiquesAnnee.setAnnee(annee);
	            statistiquesAnnee.setAnneeMesureMinimum(anneeMesureMinimum);
	            statistiquesAnnee.setAnneeMesureMoyenne(anneeMesureMoyenne);
	            statistiquesAnnee.setAnneeMesureMaximum(anneeMesureMaximum);
	            
	            statistiquesAnnee.setMois(mois);
	            statistiquesAnnee.setMesureMinimum(mesureMinimum);
	            statistiquesAnnee.setMesureMoyenne(mesureMoyenne);
	            statistiquesAnnee.setMesureMaximum(mesureMaximum);
	            
	            listeStatistiquesAnnee.add(statistiquesAnnee);
	        }

	    } catch(Exception e){
	        e.printStackTrace();
	    }

	    return listeStatistiquesAnnee;
	}
}