--- /dev/null
+package de.dhbwloe.campusapp.coursenames;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.net.URLEncoder;
+import java.util.ArrayList;
+
+import de.dhbwloe.campusapp.CampusAppContext;
+import de.dhbwloe.campusapp.network.JsonRequestHelper;
+
+/**
+ * Created by pk910 on 09.03.2016.
+ */
+public class CourseNameManager extends JsonRequestHelper {
+ private static final String COURSENAMES_API_HOST = "http://dev.pk910.de/DHBWCampusCourses";
+
+ private ArrayList<CourseNameManagerInterface> aCallbackInterfaces = new ArrayList<CourseNameManagerInterface>();
+ private boolean bSyncRequestRunning;
+
+ public void synchronizeCourseNames(CourseNameManagerInterface callback) {
+ aCallbackInterfaces.add(callback);
+ if(bSyncRequestRunning)
+ return;
+
+ bSyncRequestRunning = true;
+
+ String courseNamesSyncUrl = COURSENAMES_API_HOST + "?action=sync";
+ CourseName lastName = CampusAppContext.getInstance().getDatabaseManager().getLatestCourseName();
+ if(lastName != null)
+ courseNamesSyncUrl += "&time="+Long.toString(lastName.getLastUpdate());
+ requestJsonFromWeb(courseNamesSyncUrl);
+ }
+
+ public void addCourseName(String courseName) {
+ String courseNamesAddUrl = "?action=add&course="+ URLEncoder.encode(courseName);
+ JsonRequestHelper addCourseReqHelper = new JsonRequestHelper() {
+ @Override
+ protected void onJsonReceived(JSONObject json) {
+ /* unused - no JSON Response from action=add */
+ }
+
+ @Override
+ protected void onJsonReceived(JSONArray json) {
+ /* unused - no JSON Response from action=add */
+ }
+
+ @Override
+ protected void onTextReceived(String response) {
+
+ }
+
+ @Override
+ protected void onJsonRequestFail(int statusCode, String errorMessage) {
+
+ }
+ };
+ }
+
+
+ @Override
+ protected void onJsonReceived(JSONObject json) {
+ /* unused - we'll receive text (error) or a JSON array of results. */
+ }
+
+ @Override
+ protected void onJsonReceived(JSONArray json) {
+ for(int i = 0; i < json.length(); i++) {
+ try {
+ JSONObject courseNameEntry = json.getJSONObject(i);
+
+ String courseName = courseNameEntry.getString("name");
+ String courseStatus = courseNameEntry.getString("status");
+ long courseUpdate = courseNameEntry.getLong("lastupdate");
+
+ CourseName course = new CourseName(courseName, courseStatus, courseUpdate);
+ CampusAppContext.getInstance().getDatabaseManager().addCourseName(course);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ for(CourseNameManagerInterface callback : aCallbackInterfaces)
+ callback.onCourseNamesSynchronized();
+ }
+
+ @Override
+ protected void onTextReceived(String response) {
+ for(CourseNameManagerInterface callback : aCallbackInterfaces)
+ callback.onCourseNamesFailed(response);
+ }
+
+ @Override
+ protected void onJsonRequestFail(int statusCode, String errorMessage) {
+ for(CourseNameManagerInterface callback : aCallbackInterfaces)
+ callback.onCourseNamesFailed(errorMessage);
+ }
+}