Event list working
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user