// Path: 2014Spring/src/main/java/org/techbooster/app/abc/models/ConferenceSession.java
// public class ConferenceSession {
// 
//     private String mTrackName;
//     private String mSessionTitle;
//     private String mSpeakerName;
//     private String mSpeakerProfile;
//     private String mDescription;
//     private String mBeginTime;
//     private String mRoom;
// 
//     public String getTrackName() {
//         return mTrackName;
//     }
// 
//     public void setTrackName(String trackName) {
//         mTrackName = trackName;
//     }
// 
//     public String getSessionTitle() {
//         return mSessionTitle;
//     }
// 
//     public void setSessionTitle(String sessionTitle) {
//         mSessionTitle = sessionTitle;
//     }
// 
//     public String getSpeakerName() {
//         return mSpeakerName;
//     }
// 
//     public void setSpeakerName(String speakerName) {
//         mSpeakerName = speakerName;
//     }
// 
//     public String getSpeakerProfile() {
//         return mSpeakerProfile;
//     }
// 
//     public void setSpeakerProfile(String speakerProfile) {
//         mSpeakerProfile = speakerProfile;
//     }
// 
//     public String getDescription() {
//         return mDescription;
//     }
// 
//     public void setDescription(String description) {
//         mDescription = description;
//     }
// 
//     public String getBeginTime() {
//         return mBeginTime;
//     }
// 
//     public void setBeginTime(String beginTime) {
//         mBeginTime = beginTime;
//     }
// 
//     public String getRoom() {
//         return mRoom;
//     }
// 
//     public void setRoom(String room) {
//         mRoom = room;
//     }
// }
// 
// Path: 2014Spring/src/main/java/org/techbooster/app/abc/tools/VolleyManager.java
// public class VolleyManager {
// 
//     public interface ResponseListener {
//         public void onResponse(String body);
// 
//         public void onError(VolleyError error);
//     }
// 
//     private static VolleyManager INSTANCE;
// 
//     private RequestQueue mRequestQueue;
// 
//     private VolleyManager(Context context) {
//         mRequestQueue = Volley.newRequestQueue(context);
//         mRequestQueue.start();
//     }
// 
//     public static synchronized VolleyManager getInstance(Context context) {
//         if (INSTANCE == null) {
//             INSTANCE = new VolleyManager(context.getApplicationContext());
//         }
//         return INSTANCE;
//     }
// 
//     public void get(String url, final ResponseListener listener) {
// 
//         StringRequest request = new StringRequest(url,
//                 new Response.Listener<String>() {
//                     @Override
//                     public void onResponse(String s) {
//                         listener.onResponse(s);
//                     }
//                 },
//                 new Response.ErrorListener() {
//                     @Override
//                     public void onErrorResponse(VolleyError volleyError) {
//                         listener.onError(volleyError);
//                     }
//                 }
//         );
// 
//         mRequestQueue.add(request);
//     }
// }


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 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());

// Path: 2014Spring/src/main/java/org/techbooster/app/abc/models/ConferenceSession.java
// public class ConferenceSession {
// 
//     private String mTrackName;
//     private String mSessionTitle;
//     private String mSpeakerName;
//     private String mSpeakerProfile;
//     private String mDescription;
//     private String mBeginTime;
//     private String mRoom;
// 
//     public String getTrackName() {
//         return mTrackName;
//     }
// 
//     public void setTrackName(String trackName) {
//         mTrackName = trackName;
//     }
// 
//     public String getSessionTitle() {
//         return mSessionTitle;
//     }
// 
//     public void setSessionTitle(String sessionTitle) {
//         mSessionTitle = sessionTitle;
//     }
// 
//     public String getSpeakerName() {
//         return mSpeakerName;
//     }
// 
//     public void setSpeakerName(String speakerName) {
//         mSpeakerName = speakerName;
//     }
// 
//     public String getSpeakerProfile() {
//         return mSpeakerProfile;
//     }
// 
//     public void setSpeakerProfile(String speakerProfile) {
//         mSpeakerProfile = speakerProfile;
//     }
// 
//     public String getDescription() {
//         return mDescription;
//     }
// 
//     public void setDescription(String description) {
//         mDescription = description;
//     }
// 
//     public String getBeginTime() {
//         return mBeginTime;
//     }
// 
//     public void setBeginTime(String beginTime) {
//         mBeginTime = beginTime;
//     }
// 
//     public String getRoom() {
//         return mRoom;
//     }
// 
//     public void setRoom(String room) {
//         mRoom = room;
//     }
// }
// 
// Path: 2014Spring/src/main/java/org/techbooster/app/abc/tools/VolleyManager.java
// public class VolleyManager {
// 
//     public interface ResponseListener {
//         public void onResponse(String body);
// 
//         public void onError(VolleyError error);
//     }
// 
//     private static VolleyManager INSTANCE;
// 
//     private RequestQueue mRequestQueue;
// 
//     private VolleyManager(Context context) {
//         mRequestQueue = Volley.newRequestQueue(context);
//         mRequestQueue.start();
//     }
// 
//     public static synchronized VolleyManager getInstance(Context context) {
//         if (INSTANCE == null) {
//             INSTANCE = new VolleyManager(context.getApplicationContext());
//         }
//         return INSTANCE;
//     }
// 
//     public void get(String url, final ResponseListener listener) {
// 
//         StringRequest request = new StringRequest(url,
//                 new Response.Listener<String>() {
//                     @Override
//                     public void onResponse(String s) {
//                         listener.onResponse(s);
//                     }
//                 },
//                 new Response.ErrorListener() {
//                     @Override
//                     public void onErrorResponse(VolleyError volleyError) {
//                         listener.onError(volleyError);
//                     }
//                 }
//         );
// 
//         mRequestQueue.add(request);
//     }
// }


// Path: 2014Spring/src/main/java/org/techbooster/app/abc/loaders/ConferenceSessionLoader.java
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 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);