1 package de.dhbwloe.campusapp.coursenames;
3 import org.json.JSONArray;
4 import org.json.JSONException;
5 import org.json.JSONObject;
7 import java.net.URLEncoder;
8 import java.util.ArrayList;
10 import de.dhbwloe.campusapp.CampusAppContext;
11 import de.dhbwloe.campusapp.network.JsonRequestHelper;
14 * Created by pk910 on 09.03.2016.
16 public class CourseNameManager extends JsonRequestHelper {
17 private static final String COURSENAMES_API_HOST = "http://dev.pk910.de/DHBWCampusCourses";
19 private ArrayList<CourseNameManagerInterface> aCallbackInterfaces = new ArrayList<CourseNameManagerInterface>();
20 private boolean bSyncRequestRunning;
22 public void synchronizeCourseNames(CourseNameManagerInterface callback) {
23 aCallbackInterfaces.add(callback);
24 if(bSyncRequestRunning)
27 bSyncRequestRunning = true;
29 String courseNamesSyncUrl = COURSENAMES_API_HOST + "?action=sync";
30 CourseName lastName = CampusAppContext.getInstance().getDatabaseManager().getLatestCourseName();
32 courseNamesSyncUrl += "&time="+Long.toString(lastName.getLastUpdate());
33 requestJsonFromWeb(courseNamesSyncUrl);
36 public void addCourseName(String courseName) {
37 String courseNamesAddUrl = "?action=add&course="+ URLEncoder.encode(courseName);
38 JsonRequestHelper addCourseReqHelper = new JsonRequestHelper() {
40 protected void onJsonReceived(JSONObject json) {
41 /* unused - no JSON Response from action=add */
45 protected void onJsonReceived(JSONArray json) {
46 /* unused - no JSON Response from action=add */
50 protected void onTextReceived(String response) {
55 protected void onJsonRequestFail(int statusCode, String errorMessage) {
63 protected void onJsonReceived(JSONObject json) {
64 /* unused - we'll receive text (error) or a JSON array of results. */
68 protected void onJsonReceived(JSONArray json) {
69 for(int i = 0; i < json.length(); i++) {
71 JSONObject courseNameEntry = json.getJSONObject(i);
73 String courseName = courseNameEntry.getString("name");
74 String courseStatus = courseNameEntry.getString("status");
75 long courseUpdate = courseNameEntry.getLong("lastupdate");
77 CourseName course = new CourseName(courseName, courseStatus, courseUpdate);
78 CampusAppContext.getInstance().getDatabaseManager().addCourseName(course);
79 } catch (JSONException e) {
83 for(CourseNameManagerInterface callback : aCallbackInterfaces)
84 callback.onCourseNamesSynchronized();
88 protected void onTextReceived(String response) {
89 for(CourseNameManagerInterface callback : aCallbackInterfaces)
90 callback.onCourseNamesFailed(response);
94 protected void onJsonRequestFail(int statusCode, String errorMessage) {
95 for(CourseNameManagerInterface callback : aCallbackInterfaces)
96 callback.onCourseNamesFailed(errorMessage);