From 13501308b3d508466a3493749be7afc935010dec Mon Sep 17 00:00:00 2001 From: Joshua <8Joshua@web.de> Date: Thu, 2 Aug 2018 16:37:12 +0200 Subject: [PATCH] =?UTF-8?q?Ressourcen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fuplanner/services/KVV/KVVModuleList.java | 63 ++++++++++++++++++- .../fuplanner/services/KVV/types/Modules.java | 2 + .../services/KVV/types/Ressource.java | 50 +++++++++++++++ 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/de/sebse/fuplanner/services/KVV/types/Ressource.java 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 287e02b..8232733 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 @@ -24,6 +24,7 @@ import de.sebse.fuplanner.services.KVV.types.Lecturer; import de.sebse.fuplanner.services.KVV.types.LoginToken; import de.sebse.fuplanner.services.KVV.types.Modules; import de.sebse.fuplanner.services.KVV.types.AssignmentList; +import de.sebse.fuplanner.services.KVV.types.Ressource; import de.sebse.fuplanner.tools.AsyncQueue; import de.sebse.fuplanner.services.KVV.types.EventList; import de.sebse.fuplanner.tools.Regex; @@ -173,7 +174,8 @@ class KVVModuleList extends HTTPService { () -> this.getAssignments(module, successCb, errorCb, forceRefresh), () -> this.getEvents(module, successCb, errorCb, forceRefresh), () -> this.getAnnouncements(module, successCb, errorCb, forceRefresh), - () -> this.getGradebook(module, successCb, errorCb, forceRefresh) + () -> this.getGradebook(module, successCb, errorCb, forceRefresh), + () -> this.getRessourcen(module, successCb, errorCb, forceRefresh) }; items.set(methods.length); for (Runnable method: methods) { @@ -437,6 +439,65 @@ class KVVModuleList extends HTTPService { } + public void getRessourcen(Modules.Module module, final NetworkCallback callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) { + queueModuleDetails.add(module.getID(), () -> { + if (module.ressource != null && !forceRefresh) { + callback.onResponse(module); + queueModuleDetails.next(module.getID()); + return; + } + getRessourcenUpgrade(module.getID(), success -> { + module.ressource = success; + callback.onResponse(module); + queueModuleDetails.next(module.getID()); + }, queueModuleDetails.check(module.getID(), errorCallback)); + }); + } + + private void getRessourcenUpgrade(String ID, final NetworkCallback> callback, final NetworkErrorCallback errorCallback) { + //log.d("Ressourcen Aufgerufen"); + if (token == null) { + errorCallback.onError(new NetworkError(101604, 500, "Currently running in offline mode!")); + return; + } + get(String.format("https://kvv.imp.fu-berlin.de/direct/content/site/%s.json", ID ), token.getCookies(), response ->{ + String body = response.getParsed(); + if (body == null) { + errorCallback.onError(new NetworkError(101601, 403, "No Ressourcen retrieved!")); + return; + } + ArrayList ressourcen = new ArrayList<>(); + try { + JSONObject json = new JSONObject(body); + JSONArray sites = json.getJSONArray("content_collection"); + + for (int i = 0; i < sites.length(); i++) { + JSONObject site = sites.getJSONObject(i); + String author = site.getString("author"); + String title = site.getString("title"); + long modifiedDate = site.getLong("modifiedDate"); + String url = site.getString("url"); + //log.d("Ressourcen:", author, title, modifiedDate, url); + ressourcen.add(new Ressource(author, title, modifiedDate, url)); + } + + } catch (JSONException e) { + e.printStackTrace(); + errorCallback.onError(new NetworkError(101602, 403, "Cannot parse Ressourcen!")); + return; + } + // Empty announcements may *may be* because token is invalid -> check + if (ressourcen.size() == 0) + testLogin(token, token -> callback.onResponse(ressourcen), errorCallback); + else + callback.onResponse(ressourcen); + + + callback.onResponse(ressourcen); + }, error -> errorCallback.onError(new NetworkError(101603, error.networkResponse.statusCode, "Cannot get Ressourcen for Ressourcen!"))); + + } + diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Modules.java b/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Modules.java index 4e1ffd7..8440aa0 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Modules.java +++ b/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Modules.java @@ -96,6 +96,7 @@ public class Modules implements Iterable, Serializable { newModule.assignments = oldModule.assignments; newModule.events = oldModule.events; newModule.gradebook = oldModule.gradebook; + newModule.ressource = oldModule.ressource; } } } @@ -112,6 +113,7 @@ public class Modules implements Iterable, Serializable { @Nullable public AssignmentList assignments; @Nullable public EventList events; @Nullable public ArrayList gradebook; + public ArrayList ressource; /*private Module() { this(null, null, null, null, null); diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Ressource.java b/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Ressource.java new file mode 100644 index 0000000..be26cf3 --- /dev/null +++ b/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Ressource.java @@ -0,0 +1,50 @@ +package de.sebse.fuplanner.services.KVV.types; + +import java.io.Serializable; + + + +public class Ressource implements Serializable { + + private final String author; + private final long modifiedDate; + private final String title; + private final String url; + + + public Ressource(String author, String title, long modifiedDate, String url) { + this.author = author; + this.title = title; + this.modifiedDate = modifiedDate; + this.url = url; + } + + public String getAuthor() { + return author; + } + + public long getModifiedDate() { + return modifiedDate; + } + + public String getTitle() { + return title; + } + + public String getUrl() { + return url; + } + + @Override + public String toString() { + return "Ressource{" + + "author='" + author + '\'' + + ", modifiedDate=" + modifiedDate + + ", title='" + title + '\'' + + ", url='" + url + '\'' + + '}'; + } + + + +}