package org.techbooster.app.abc.loaders;
import android.content.Context;
import android.util.Log;
import com.android.volley.VolleyError;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.techbooster.app.abc.models.ConferenceSession;
import org.techbooster.app.abc.tools.VolleyManager;
import java.util.ArrayList;
import java.util.List;
public class ConferenceSessionLoader {
public interface Listener {
public void onSuccess(List<ConferenceSession> sessions);
public void onError(VolleyError error);
}
private VolleyManager mVolleyManager;
public ConferenceSessionLoader(Context context) {
mVolleyManager = VolleyManager.getInstance(context);
}
public void getSessions(String conferenceUrl, final Listener listener) {
mVolleyManager.get(conferenceUrl, new VolleyManager.ResponseListener() {
@Override
public void onResponse(String body) {
List<ConferenceSession> sessions = new ArrayList<ConferenceSession>();
Document document = Jsoup.parse(body);
//track name
Elements h1 = document.select("h1.entry-title");
String trackName = null;
if (!h1.isEmpty()) {
trackName = h1.first().text();
}
Elements elements = document.select("table.track");
if (!elements.isEmpty()) {
Elements trs = elements.first().select("tr");
for (Element tr : trs) {
ConferenceSession session = new ConferenceSession();
session.setTrackName(trackName);
session.setSessionTitle(text(tr.select("span.session_title")));
session.setSpeakerName(text(tr.select("span.speaker_name")));
if (!tr.select("span.speaker_profile").isEmpty()) {
session.setSpeakerProfile(text(tr.select("span.speaker_profile")));
}
session.setBeginTime(text(tr.select("span.starttime")));
if (!tr.select("span.session_description").isEmpty()) {
session.setDescription(
tr.select("span.session_description").first().text()
.replace("【 講演内容 】<br />", "")
);
}
session.setRoom(tr.select("span.roomname").first().text());
sessions.add(session);
}
}
listener.onSuccess(sessions);
}
@Override
public void onError(VolleyError error) {
listener.onError(error);
}
});
}
private static String text(Elements elms){
if (elms == null || elms.isEmpty()) {
return "";
}
Element elm = elms.first();
String text = elm.text();
return text != null ? text : "";
}
}