Event list working

This commit is contained in:
Caesar2011
2018-07-03 17:21:57 +02:00
parent 45d436c5fb
commit a7044c2408
4 changed files with 74 additions and 55 deletions

View File

@@ -96,20 +96,7 @@ public class ModDetailOverviewFragment extends Fragment {
Modules.Module module = success.get(mItemPos);
log.d("Print c");
adapter.setModule(module);
kvv.getModuleAnnouncements(module, module1 -> {
//log.d("announcements", module.announcements);
adapter.setModule();
}, error -> log.e(error));
kvv.getModuleAssignments(module, module1 -> {
//log.d("assignments", module.assignments);
adapter.setModule();
}, error -> log.e(error));
kvv.getModuleEvents(module, module1 -> {
//log.d("events", module.events);
adapter.setModule();
}, error -> log.e(error));
kvv.getModuleGradebook(module, module1 -> {
log.d("gradebook", module.gradebook);
kvv.getModuleDetails(module, module1 -> {
adapter.setModule();
}, error -> log.e(error));
}, error -> log.e(error));

View File

@@ -52,6 +52,17 @@ public class KVV {
});
}
public void getModuleDetails(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.getModuleDetails(module, callback, error);
});
}
public void getModuleAnnouncements(Modules.Module module, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback error) {
this.getLastToken(token -> {
KVVModuleList modules = (KVVModuleList) addons.get("modules");

View File

@@ -10,6 +10,8 @@ import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.MatchResult;
import de.sebse.fuplanner.services.KVV.types.Announcement;
@@ -93,6 +95,43 @@ public class KVVModuleList extends HTTPService {
public void getModuleDetails(Modules.Module module, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback errorCallback) {
AtomicInteger returns = new AtomicInteger(0);
AtomicReference<NetworkError> lastError = new AtomicReference<>(null);
final int items = 4;
NetworkCallback<Modules.Module> successCb = success -> {
returns.getAndIncrement();
callback.onResponse(module);
if (returns.get() == items-1) {
if (lastError.get() != null)
errorCallback.onError(lastError.get());
}
};
NetworkErrorCallback errorCb = error -> {
lastError.set(error);
returns.getAndIncrement();
if (returns.get() == items-1) {
if (lastError.get() != null)
errorCallback.onError(lastError.get());
}
};
Runnable[] methods = { // UPDATE VARIABLE items ABOVE
() -> this.getAssignments(module, successCb, errorCb),
() -> this.getEvents(module, successCb, errorCb),
() -> this.getAnnouncements(module, successCb, errorCb),
() -> this.getGradebook(module, successCb, errorCb)
};
//noinspection ConstantConditions
if (methods.length != items) throw new AssertionError();
for (Runnable method: methods) {
method.run();
}
}
public void getAnnouncements(Modules.Module module, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback errorCallback) {
queueModuleDetails.add(module.getID(), () -> {
@@ -175,7 +214,7 @@ public class KVVModuleList extends HTTPService {
JSONArray sites = json.getJSONArray("assignment_collection");
for (int i = 0; i < sites.length(); i++) {
log.d("Assignment FOUND!", i);
//log.d("Assignment FOUND!", i);
JSONObject site = sites.getJSONObject(i);
String id = site.getString("id");
String title = site.getString("title");
@@ -189,41 +228,11 @@ public class KVVModuleList extends HTTPService {
ArrayList<String> urls = new ArrayList<>();
for (int j =0; j<attachments.length(); j++){
urls.add(attachments.getJSONObject(j).optString("url",null));
log.d("URL:", attachments.getJSONObject(j).optString("url",null));
//log.d("URL:", attachments.getJSONObject(j).optString("url",null));
}
log.d("Assignment:", id, dueTime, gradebookItemName, gradeScale );
//Für Punkte
//AtomicReference<String> comment = null;//ToDO Sebasian Fragen ????????????????????????
//AtomicReference<String> 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!")));
}*/
//log.d("Assignment:", id, dueTime, gradebookItemName, gradeScale);
assignments.add(0, new Assignment(id, title, dueTime, gradebookItemName, gradeScale, urls));
}
} catch (JSONException e) {
@@ -271,7 +280,7 @@ public class KVVModuleList extends HTTPService {
JSONArray sites = json.getJSONArray("calendar_collection");
for (int i = 0; i < sites.length(); i++) {
log.d("CALENDAR ENTRY FOUND!", i);
//log.d("CALENDAR ENTRY FOUND!", i);
JSONObject site = sites.getJSONObject(i);
String id = site.getString("eventId");
String type = site.getString("type");
@@ -320,13 +329,13 @@ public class KVVModuleList extends HTTPService {
JSONArray sites = json.getJSONArray("assignments");
for (int i = 0; i < sites.length(); i++) {
log.d("gradebook FOUND!", 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);
//log.d("Gradebook:",itemName, grade, maxPoints);
gradebook.add(0, new Gradebook(itemName, grade, maxPoints));
}

View File

@@ -1,6 +1,7 @@
package de.sebse.fuplanner.tools;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Iterator;
@@ -58,20 +59,31 @@ public class EventList extends ArrayList<Event> {
public Iterator<Event> getEventsOfMonth(int year, int month) {
if (split < 0)
sort();
int i = 0;
for (; ; i++) {
final int[] i = {0};
Calendar minC = Calendar.getInstance();
minC.set(year, month-1, 1, 0, 0);
Calendar maxC = Calendar.getInstance();
maxC.set(year, month, 1, 0, 0);
for (; i[0] < this.size(); i[0]++) {
if (this.get(i[0]).getEndDate() > minC.getTimeInMillis()) {
break;
}
}
return new Iterator<Event>() {
@Override
public boolean hasNext() {
return false;
return i[0] < EventList.this.size() && EventList.this.get(i[0]).getEndDate() < maxC.getTimeInMillis();
}
@Override
public Event next() {
if (hasNext()) {
i[0]++;
return EventList.this.get(i[0]);
} else {
return null;
}
}
};
}
}