package com.iblancasa.comedoresUGR; import android.os.AsyncTask; import android.util.Log; import android.widget.TextView; import android.widget.Toast; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Calendar; /** * Descarga la página del comedor, la parsea y obtiene los platos de la semana actual * */ public class ParserComedor extends AsyncTask<String, Void, String> { private ArrayList<Dia> semana = new ArrayList<>(); public ArrayList<Dia> getSemana(){ return semana; } private TextView pl1,pl2,pl3; ArrayList<String> platosMenu; public ParserComedor(TextView p1, TextView p2, TextView p3){ super(); pl1=p1; pl2=p2; pl3=p3; } @Override protected String doInBackground(String... strings) { Connection.Response response = null; try { response = Jsoup.connect(strings[0]) .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21") .execute(); } catch (IOException e) { e.printStackTrace(); } if(response!=null) { int statusCode = response.statusCode(); if (statusCode == 200) { Document doc = null; try { doc = response.parse(); } catch (IOException e) { e.printStackTrace(); } Elements metaElems = doc.select("#plato"); for (Element metaElem : metaElems) { platosMenu = new ArrayList<>(); Charset utf8charset = Charset.forName("UTF-8"); Charset iso88591charset = Charset.forName("ISO-8859-1"); String diaplato = metaElem.getElementById("diaplato").getElementById("fechaplato").text(); diaplato = diaplato.replaceAll("\\<.*?>",""); diaplato = diaplato.replaceAll(" +", " "); Element menuDia = metaElem.getElementById("platos"); Elements platos = menuDia.children(); for (Element plato : platos) { platosMenu.add(plato.html().replaceAll("\\<.*?>","").replaceAll(" +", " ")); } Dia d = new Dia(diaplato, platosMenu); semana.add(d); } } else{ platosMenu = new ArrayList<>(); platosMenu.add("No hay conexión"); Dia d = new Dia("Algo falló",platosMenu); semana.add(d); } } else{ platosMenu = new ArrayList<>(); platosMenu.add("No hay conexión"); Dia d = new Dia("Algo falló",platosMenu); semana.add(d); } return ""; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Dia d = getHoy(); ArrayList<String> platosHoy = d.getComida(); if(platosHoy.size()==3) { pl1.setText(platosHoy.get(0)); pl2.setText(platosHoy.get(1)); pl3.setText(platosHoy.get(2)); } else{ pl1.setText(platosHoy.get(0)); pl2.setText(""); pl3.setText(""); } } public Dia getHoy(){ if(semana.size()!=1) { Calendar rightNow = Calendar.getInstance(); String dia=null; switch (rightNow.get(Calendar.DAY_OF_WEEK)) { case Calendar.MONDAY: dia = "Lunes"; break; case Calendar.TUESDAY: dia = "Martes"; break; case Calendar.WEDNESDAY: dia = "Miércoles"; break; case Calendar.THURSDAY: dia = "Jueves"; break; case Calendar.FRIDAY: dia = "Viernes"; break; case Calendar.SATURDAY: dia = "Sábado"; break; case Calendar.SUNDAY: ArrayList<String> cerrado = new ArrayList<String>(); cerrado.add("Hoy el comedor está cerrado"); Dia domingo = new Dia("Domingo", cerrado); return domingo; } for (int i = 0; i < semana.size(); i++) { if (semana.get(i).getDia().contains(dia)) { return semana.get(i); } } } return semana.get(0); } }