package it.fdev.scraper.esse3; import it.fdev.unisaconnect.data.Libretto; import it.fdev.unisaconnect.data.Libretto.CorsoLibretto; import it.fdev.unisaconnect.data.LibrettoDB; import it.fdev.unisaconnect.data.SharedPrefDataManager; import it.fdev.utils.Utils; import java.io.IOException; import java.util.ArrayList; import org.jsoup.HttpStatusException; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import android.content.Context; import android.util.Log; /** * Frammento che si occupa del riperimento del libretto dalla esse3 * * @author francesco * */ public class Esse3LibrettoScraper extends Esse3BasicScraper { public final String librettoURL = "https://esse3web.unisa.it/unisa/auth/studente/Libretto/LibrettoHome.do"; public Esse3LibrettoScraper(Context context, SharedPrefDataManager dataManager, String base64login, String broadcastID) { super(context, dataManager, base64login, broadcastID); } @Override public LoadStates startScraper() { Libretto libretto = new Libretto(); ArrayList<CorsoLibretto> corsiList = new ArrayList<CorsoLibretto>(); try { corsiList = scraperStepLibretto(); if (corsiList != null) { // Log.d(Utils.TAG, "Ci sono #" + corsiList.size() + " corsi da inserire"); libretto.setCorsi(corsiList); LibrettoDB librettoDB = new LibrettoDB(mContext); try { librettoDB.open(); librettoDB.resetLibretto(libretto); } finally { librettoDB.close(); } return LoadStates.FINISHED; } Log.d(Utils.TAG, "Corsi non trovati!"); return LoadStates.NO_DATA; } catch (HttpStatusException e) { Log.w(Utils.TAG, "ERROR ", e); int code = e.getStatusCode(); if (code == 401) return LoadStates.WRONG_DATA; } catch (Exception e) { Log.w(Utils.TAG, "ERROR ", e); } return LoadStates.UNKNOWN_PROBLEM; } private ArrayList<CorsoLibretto> scraperStepLibretto() throws HttpStatusException, IOException, InterruptedException { Document document = scraperGetUrl(librettoURL); if (document == null) { return null; } ArrayList<CorsoLibretto> corsiList = new ArrayList<CorsoLibretto>(); Elements detailsTables = document.getElementsByClass("detail_table"); if (detailsTables.size() > 0) { Elements rows = detailsTables.get(0).getElementsByTag("tr"); for (int i = 1; i < rows.size(); i++) { Element row = rows.get(i); Elements cells = row.getElementsByTag("td"); if (cells.size() < 12) { return null; } String courseName = cells.get(1).text(); courseName = courseName.substring(courseName.indexOf("-") + 1); String courseCFU = cells.get(6).text(); String courseMarkDate = cells.get(9).text(); String courseMark; String courseDate; try { courseMark = courseMarkDate.substring(0, courseMarkDate.indexOf("-")); courseDate = courseMarkDate.substring(courseMarkDate.indexOf("-") + 1); } catch (Exception e) { courseMark = ""; courseDate = ""; } corsiList.add(new CorsoLibretto(courseName.replace("\u00a0", "").trim(), courseCFU.replace("\u00a0", "").trim(), courseDate.replace("\u00a0", "").trim(), courseMark.replace("\u00a0", "").trim())); } return corsiList; } return null; } }