From fc1cb3a62d34be0708a7b1c21c0c44a00eb1a293 Mon Sep 17 00:00:00 2001 From: Joshua <8Joshua@web.de> Date: Thu, 7 Jun 2018 19:00:36 +0200 Subject: [PATCH] =?UTF-8?q?Herunterladen=20der=20Assignment=20Hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fuplanner/services/KVV/Assignment.java | 17 ++++- .../fuplanner/services/KVV/KVVModuleList.java | 72 ++++++++++++++++++- 2 files changed, 85 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/Assignment.java b/app/src/main/java/de/sebse/fuplanner/services/KVV/Assignment.java index 496a223..01f9fc3 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/Assignment.java +++ b/app/src/main/java/de/sebse/fuplanner/services/KVV/Assignment.java @@ -4,9 +4,20 @@ import java.util.Date; public class Assignment { private final String id; + private String title; + private long dueTime; + private int gradeScaleMaxPoints; + private String gradebookItemName; + private String gradeScale; + private String grade; - Assignment(String id) { + Assignment(String id, String title, long dueTime, String gradebookItemName, String gradeScale) {//, String grade this.id = id; + this.title = title; + this.dueTime = dueTime; + this.gradebookItemName = gradebookItemName; + this.gradeScale = gradeScale; + //this.grade = grade; } public String getId() { @@ -19,7 +30,7 @@ public class Assignment { } public String getTitle() { - return "Assignment Title"; + return title; } public String getStatus() { @@ -27,6 +38,6 @@ public class Assignment { } public long getDueDate() { - return (new Date()).getTime(); + return dueTime; } } diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVModuleList.java b/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVModuleList.java index 8196b0a..5a62cbf 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVModuleList.java +++ b/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVModuleList.java @@ -10,6 +10,7 @@ import org.json.JSONObject; import java.util.ArrayList; import java.util.HashSet; +import java.util.concurrent.atomic.AtomicReference; import java.util.regex.MatchResult; import de.sebse.fuplanner.tools.AsyncQueue; @@ -139,6 +140,7 @@ public class KVVModuleList extends HTTPService { public void getAssignments(Modules.Module module, final NetworkCallback callback, final NetworkErrorCallback errorCallback) { + //log.d("In getAssignments"); queueModuleDetails.add(module.getID(), () -> { if (module.assignments != null) { callback.onResponse(module); @@ -154,7 +156,75 @@ public class KVVModuleList extends HTTPService { } private void getAssignmentsUpgrade(String ID, final NetworkCallback> callback, final NetworkErrorCallback errorCallback) { - callback.onResponse(new ArrayList()); + get(String.format("https://kvv.imp.fu-berlin.de/direct/assignment/site/%s.json", ID), token.getCookies(), response ->{ + String body = response.getParsed(); + if (body == null) { + errorCallback.onError(new NetworkError(101301, 403, "No assignments retrieved!")); + return; + } + ArrayList assignments = new ArrayList<>(); + try { + JSONObject json = new JSONObject(body); + JSONArray sites = json.getJSONArray("assignment_collection"); + + for (int i = 0; i < sites.length(); i++) { + log.d("Assignment FOUND!", i); + JSONObject site = sites.getJSONObject(i); + String id = site.getString("id"); + String title = site.getString("title"); + long dueTime = site.getJSONObject("dueTime").getLong("time"); + String gradebookItemName = site.getString("gradebookItemName"); + String gradeScale = site.getString("gradeScale"); + + //ToDO PDFs links rausziehen + //JSONObject attachments = site.getJSONObject("attachments"); + //JSONArray urls = json.getJSONArray("attachments"); + /*for (int j =0; j comment = null;//ToDO Sebasian Fragen ???????????????????????? + //AtomicReference grade = null; //Variable used in lambda expression should be final or effectively final + if ( !gradebookItemName.equals("null") ){//Wenn gradebookItemName vorhanden dann erhaltene Punkte nachschauen + //https://kvv.imp.fu-berlin.de/direct/gradebook/item/{ModulID}/{gradebookItemName}.json + get(String.format("https://kvv.imp.fu-berlin.de/direct/gradebook/item/%s/%s.json", ID, gradebookItemName ), token.getCookies(), response2 ->{ + String bodygradebook = response2.getParsed(); + if (bodygradebook == null) { + errorCallback.onError(new NetworkError(101302, 403, "No gradebook for assignments!")); + return; + } + try { + JSONObject json2 = new JSONObject(bodygradebook); + //JSONArray sites2 = json2.getJSONArray("assignment_collection"); + //comment.set(json2.getString("comment")); + //grade.set(json2.getString("grade")); + String comment = json2.getString("comment"); + String grade = json2.getString("grade"); + log.d("Note:", comment, grade ); + }catch (JSONException e) { + errorCallback.onError(new NetworkError(101304, 403, "Cannot parse gradebook for announcements!")); + return; + } + }, error -> errorCallback.onError(new NetworkError(101305, error.networkResponse.statusCode, "Cannot get gradebook for assignments!"))); + } + + + + assignments.add(new Assignment(id, title, dueTime, gradebookItemName, gradeScale)); + } + } catch (JSONException e) { + errorCallback.onError(new NetworkError(101306, 403, "Cannot parse announcements!")); + return; + } + callback.onResponse(assignments); + }, error -> errorCallback.onError(new NetworkError(101303, error.networkResponse.statusCode, "Cannot get assignments!"))); + + }