Gradebook hinzugefügt

This commit is contained in:
Joshua
2018-06-12 18:34:42 +02:00
parent b959153b06
commit 950e12ac8e
7 changed files with 92 additions and 4 deletions

View File

@@ -0,0 +1,25 @@
package de.sebse.fuplanner.services.KVV;
public class Gradebook {
private final String itemName;
private final String grade;
private final double maxPoints;
public Gradebook(String itemName, String grade, double maxPoints) {
this.itemName = itemName;
this.grade = grade;
this.maxPoints = maxPoints;
}
public double getMaxPoints() {
return maxPoints;
}
public String getGrade() {
return grade;
}
public String getItemName() {
return itemName;
}
}

View File

@@ -83,6 +83,17 @@ public class KVV {
});
}
public void getModuleGradebook(Modules.Module module, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback error) {
this.getLastToken(token -> {
KVVModuleList modules = (KVVModuleList) addons.get("modules");
if (modules == null) {
modules = new KVVModuleList(KVV.this.context, token);
addons.put("modules", modules);
}
modules.getGradebook(module, callback, error);
});
}
private void getLastToken(LastTokenCallback lastTokenCallback) {
if (this.isUpdating) {
this.updatingList.add(lastTokenCallback);

View File

@@ -232,9 +232,8 @@ public class KVVModuleList extends HTTPService {
}
// private void getGradebookUpgrade(String ID, final NetworkCallback<ArrayList<Assignment>> callback, final NetworkErrorCallback errorCallback) {
// }
@@ -285,4 +284,56 @@ public class KVVModuleList extends HTTPService {
callback.onResponse(events);
}, error -> errorCallback.onError(new NetworkError(101403, error.networkResponse.statusCode, "Cannot get calendar entries!")));
}
public void getGradebook(Modules.Module module, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback errorCallback) {
//log.d("In getAssignments");
queueModuleDetails.add(module.getID(), () -> {
if (module.gradebook != null) {
callback.onResponse(module);
queueModuleDetails.next(module.getID());
return;
}
getGradebookUpgrade(module.getID(), success -> {
module.gradebook = success;
callback.onResponse(module);
queueModuleDetails.next(module.getID());
}, errorCallback);
});
}
private void getGradebookUpgrade(String ID, final NetworkCallback<ArrayList<Gradebook>> callback, final NetworkErrorCallback errorCallback) {
get(String.format("https://kvv.imp.fu-berlin.de/direct/gradebook/site/%s.json", ID ), token.getCookies(), response ->{
String body = response.getParsed();
if (body == null) {
errorCallback.onError(new NetworkError(101501, 403, "No assignments retrieved!"));
return;
}
ArrayList<Gradebook> gradebook = new ArrayList<>();
try {
JSONObject json = new JSONObject(body);
JSONArray sites = json.getJSONArray("assignments");
for (int i = 0; i < sites.length(); i++) {
log.d("gradebook FOUND!", i);
JSONObject site = sites.getJSONObject(i);
String grade = site.optString("grade", null);
String itemName = site.optString("itemName", null);
double maxPoints = site.optDouble("points", -1);
log.d("Gradebook:",itemName, grade, maxPoints);
gradebook.add(0, new Gradebook(itemName, grade, maxPoints));
}
}catch (JSONException e) {
errorCallback.onError(new NetworkError(101504, 403, "Cannot parse gradebook for announcements!"));
return;
}
callback.onResponse(gradebook);
}, error -> errorCallback.onError(new NetworkError(101505, error.networkResponse.statusCode, "Cannot get gradebook for assignments!")));
}
}

View File

@@ -194,6 +194,7 @@ public class Modules /*extends EventEmitter<Triplet<Integer, Modules.UpgradeModu
public ArrayList<Announcement> announcements;
public ArrayList<Assignment> assignments;
public EventList events;
public ArrayList<Gradebook> gradebook;
/*private Module() {
this(null, null, null, null, null);