package com.example.lamano;

import java.io.IOException;
import java.io.InputStream;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/*
 * Clase del Fragment que despliega un perfil de un Local
 */
public class LocalFragment extends Fragment {
	String name, ubicacion, tipo, horario, ofertas;
	
	@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View toreturn = inflater.inflate(R.layout.local_view, container, false);
        initList();
        updateData(toreturn);
        return toreturn;
    }
	
	/* Método para definir nombre del amigo a buscar */
	public void setName(String n){
		name = n;
		
	}
	
	/* Método que guarda la información del Local */
	private void setData(String n, String u, String t, String h, String o){
		name = n;
		ubicacion = u;
		tipo = t;
		horario = h;
		ofertas = o;
	}
	
	/* Método que agrega la información al view */
	private void updateData(View v){
		TextView name_tv = (TextView) v.findViewById(R.id.Txt_Local_Name);
        name_tv.setText(name);
        TextView ubicacion_tv = (TextView) v.findViewById(R.id.Txt_Local_address);
        ubicacion_tv.setText(ubicacion);
        TextView tipo_tv = (TextView) v.findViewById(R.id.Txt_Local_Tipo);
        tipo_tv.setText(tipo);
        TextView horario_tv = (TextView) v.findViewById(R.id.Txt_Local_horario);
        horario_tv.setText(horario);
        TextView ofertas_tv = (TextView) v.findViewById(R.id.Txt_Local_Ofertas);
        ofertas_tv.setText(ofertas);
	}
	
	/* Método que inicializa el xml con los datos */
	private void initList(){
		XmlPullParserFactory pullParserFactory;
		try {
			pullParserFactory = XmlPullParserFactory.newInstance();
			XmlPullParser parser = pullParserFactory.newPullParser();

			    InputStream in_s = this.getActivity().getApplicationContext().getAssets().open("localdata.xml");
		        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
	            parser.setInput(in_s, null);

	            parseXML(parser);
	            in_s.close();

		} catch (XmlPullParserException e) {

			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	/* Método que recorre el xml en busca de los datos */
	private void parseXML(XmlPullParser parser) throws XmlPullParserException,IOException
	{
        int eventType = parser.getEventType();
        String nombre="ERR", ubicacion="ERR", tipo="ERR", horario="ERR",ofertas="ERR" ;
        while (eventType != XmlPullParser.END_DOCUMENT){
            String name = null;
            switch (eventType){
                case XmlPullParser.START_DOCUMENT:
        
                    break;
                case XmlPullParser.START_TAG:
                    name = parser.getName();
                    if(name.equalsIgnoreCase("nombre"))
                		nombre = parser.nextText();
                    else if(name.equalsIgnoreCase("ubicacion"))
                    	ubicacion = parser.nextText();
                    else if(name.equalsIgnoreCase("tipo"))
                    	tipo = parser.nextText();
                    else if(name.equalsIgnoreCase("horario"))
                    	horario = parser.nextText();
                    else if(name.equalsIgnoreCase("ofertas"))
                    	ofertas = parser.nextText();
                    break;
                case XmlPullParser.END_TAG:
                    name = parser.getName();
                    if (name.equalsIgnoreCase("localdata") && nombre.equals(this.name)){
                    	setData(nombre,ubicacion,tipo,horario,ofertas);
                    	return;
                    } 
            }
            eventType = parser.next();
        }

	}
}
