Event list working
This commit is contained in:
@@ -96,20 +96,7 @@ public class ModDetailOverviewFragment extends Fragment {
|
|||||||
Modules.Module module = success.get(mItemPos);
|
Modules.Module module = success.get(mItemPos);
|
||||||
log.d("Print c");
|
log.d("Print c");
|
||||||
adapter.setModule(module);
|
adapter.setModule(module);
|
||||||
kvv.getModuleAnnouncements(module, module1 -> {
|
kvv.getModuleDetails(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);
|
|
||||||
adapter.setModule();
|
adapter.setModule();
|
||||||
}, error -> log.e(error));
|
}, error -> log.e(error));
|
||||||
}, 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) {
|
public void getModuleAnnouncements(Modules.Module module, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback error) {
|
||||||
this.getLastToken(token -> {
|
this.getLastToken(token -> {
|
||||||
KVVModuleList modules = (KVVModuleList) addons.get("modules");
|
KVVModuleList modules = (KVVModuleList) addons.get("modules");
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import org.json.JSONObject;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.regex.MatchResult;
|
import java.util.regex.MatchResult;
|
||||||
|
|
||||||
import de.sebse.fuplanner.services.KVV.types.Announcement;
|
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) {
|
public void getAnnouncements(Modules.Module module, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback errorCallback) {
|
||||||
queueModuleDetails.add(module.getID(), () -> {
|
queueModuleDetails.add(module.getID(), () -> {
|
||||||
@@ -175,7 +214,7 @@ public class KVVModuleList extends HTTPService {
|
|||||||
JSONArray sites = json.getJSONArray("assignment_collection");
|
JSONArray sites = json.getJSONArray("assignment_collection");
|
||||||
|
|
||||||
for (int i = 0; i < sites.length(); i++) {
|
for (int i = 0; i < sites.length(); i++) {
|
||||||
log.d("Assignment FOUND!", i);
|
//log.d("Assignment FOUND!", i);
|
||||||
JSONObject site = sites.getJSONObject(i);
|
JSONObject site = sites.getJSONObject(i);
|
||||||
String id = site.getString("id");
|
String id = site.getString("id");
|
||||||
String title = site.getString("title");
|
String title = site.getString("title");
|
||||||
@@ -189,41 +228,11 @@ public class KVVModuleList extends HTTPService {
|
|||||||
ArrayList<String> urls = new ArrayList<>();
|
ArrayList<String> urls = new ArrayList<>();
|
||||||
for (int j =0; j<attachments.length(); j++){
|
for (int j =0; j<attachments.length(); j++){
|
||||||
urls.add(attachments.getJSONObject(j).optString("url",null));
|
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 );
|
//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!")));
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
assignments.add(0, new Assignment(id, title, dueTime, gradebookItemName, gradeScale, urls));
|
assignments.add(0, new Assignment(id, title, dueTime, gradebookItemName, gradeScale, urls));
|
||||||
}
|
}
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
@@ -271,7 +280,7 @@ public class KVVModuleList extends HTTPService {
|
|||||||
JSONArray sites = json.getJSONArray("calendar_collection");
|
JSONArray sites = json.getJSONArray("calendar_collection");
|
||||||
|
|
||||||
for (int i = 0; i < sites.length(); i++) {
|
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);
|
JSONObject site = sites.getJSONObject(i);
|
||||||
String id = site.getString("eventId");
|
String id = site.getString("eventId");
|
||||||
String type = site.getString("type");
|
String type = site.getString("type");
|
||||||
@@ -320,13 +329,13 @@ public class KVVModuleList extends HTTPService {
|
|||||||
JSONArray sites = json.getJSONArray("assignments");
|
JSONArray sites = json.getJSONArray("assignments");
|
||||||
|
|
||||||
for (int i = 0; i < sites.length(); i++) {
|
for (int i = 0; i < sites.length(); i++) {
|
||||||
log.d("gradebook FOUND!", i);
|
//log.d("gradebook FOUND!", i);
|
||||||
JSONObject site = sites.getJSONObject(i);
|
JSONObject site = sites.getJSONObject(i);
|
||||||
String grade = site.optString("grade", null);
|
String grade = site.optString("grade", null);
|
||||||
String itemName = site.optString("itemName", null);
|
String itemName = site.optString("itemName", null);
|
||||||
double maxPoints = site.optDouble("points", -1);
|
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));
|
gradebook.add(0, new Gradebook(itemName, grade, maxPoints));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package de.sebse.fuplanner.tools;
|
package de.sebse.fuplanner.tools;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
@@ -58,20 +59,31 @@ public class EventList extends ArrayList<Event> {
|
|||||||
public Iterator<Event> getEventsOfMonth(int year, int month) {
|
public Iterator<Event> getEventsOfMonth(int year, int month) {
|
||||||
if (split < 0)
|
if (split < 0)
|
||||||
sort();
|
sort();
|
||||||
int i = 0;
|
final int[] i = {0};
|
||||||
for (; ; i++) {
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return new Iterator<Event>() {
|
return new Iterator<Event>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean hasNext() {
|
public boolean hasNext() {
|
||||||
return false;
|
return i[0] < EventList.this.size() && EventList.this.get(i[0]).getEndDate() < maxC.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Event next() {
|
public Event next() {
|
||||||
|
if (hasNext()) {
|
||||||
|
i[0]++;
|
||||||
|
return EventList.this.get(i[0]);
|
||||||
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user