package es.upvmaster.fullmediaplayer;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.google.gson.Gson;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Vector;

import static es.upvmaster.fullmediaplayer.Libreria.imprimirLog;

public class PantallaPrincipal extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pantalla_principal);

        InfoGlobal.getINSTANCIA().inicializa(getApplicationContext());
        new ObtenerListas().execute();
    }

    private void iniciarListarListas() {
        Intent intent = new Intent(PantallaPrincipal.this,ListarListas.class);
        startActivity(intent);
        finish();
    }

    class ObtenerListas extends AsyncTask<Void, Void, Void> {
        private ProgressDialog pDialog;
        private Vector<ListaMedios> listasMedios;
        private ListaMedios listaMedios;
        private JSONArray lista_medios_json;
        private Context context;

        FilenameFilter fileNameFilter = new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                if(name.lastIndexOf('.')>0)
                {
                    int lastIndex = name.lastIndexOf('.');
                    String extension = name.substring(lastIndex);

                    if(extension.equals(".w3u")) return true;
                }
                return false;
            }
        };

        public ObtenerListas() {
            this.listasMedios = InfoGlobal.getINSTANCIA().getVectorListaListas();
            this.context = InfoGlobal.getINSTANCIA().getContextoAplicacion();
        }


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(PantallaPrincipal.this);
            pDialog.setMessage(getResources().getString(R.string.recuperando_listas_inicial));
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            listasMedios.clear();

            File[] ficherosJSON = InfoGlobal.getINSTANCIA().getDirectorio().listFiles(fileNameFilter);
            for (File fichero : ficherosJSON) {
                JSONParser sh = new JSONParser();
                String jsonStr = sh.makeServiceCall(fichero);
                if (jsonStr != null) {
                    Gson gson = new Gson();
                    ListaMedios listaMediosAuxiliar;
                    try {
                        listaMediosAuxiliar = gson.fromJson(jsonStr, ListaMedios.class);
                    } catch (Exception e) {
                        listaMediosAuxiliar = null;
                    }
                    if (listaMediosAuxiliar!=null) {
                        listaMedios = new ListaMedios();
                        listaMedios.setName(listaMediosAuxiliar.getName());
                        listaMedios.setAuthor(listaMediosAuxiliar.getAuthor());
                        listaMedios.setUrl(listaMediosAuxiliar.getUrl());
                        listaMedios.setNameFile(fichero.getName());
                        listaMedios.setParental(listaMediosAuxiliar.getParental());
                        listaMedios.setInfo(listaMediosAuxiliar.getInfo());
                        listasMedios.add(listaMedios);
                    }
                } else {
                    imprimirLog(Libreria.TipoLog.DEBUG,"Service Handler", "Esta habiendo problemas para cargar el JSON");
                }

            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            if (pDialog.isShowing()){
                pDialog.dismiss();
            }

            iniciarListarListas();
        }
    }
}
