Skip to content

Commit 77d61df

Browse files
committed
Merge branch 'dev-2.1' into development
# Conflicts: # src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/moodle/plugin/MoodlePluginCourseAccess.java
2 parents d62798b + 7771789 commit 77d61df

File tree

3 files changed

+17
-56
lines changed

3 files changed

+17
-56
lines changed

src/main/java/ch/ethz/seb/sebserver/gbl/util/Utils.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -629,11 +629,13 @@ public static String toColorFractionString(final int fraction) {
629629
}
630630

631631
public static String toAppFormUrlEncodedBody(final MultiValueMap<String, String> attributes) {
632-
if (attributes == null) {
633-
return StringUtils.EMPTY;
634-
}
635-
636-
return reduceFormUrlAttributes(attributes);
632+
return toAppFormUrlEncodedBodyForSPService(attributes);
633+
// TODO do it all the same with toAppFormUrlEncodedBody
634+
// if (attributes == null) {
635+
// return StringUtils.EMPTY;
636+
// }
637+
//
638+
// return reduceFormUrlAttributes(attributes);
637639
}
638640

639641
public static String toAppFormUrlEncodedBodyForSPService(final MultiValueMap<String, String> attributes) {

src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/moodle/plugin/MoodlePluginCourseAccess.java

+8-29
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.ArrayList;
1313
import java.util.Collection;
1414
import java.util.Collections;
15+
import java.util.HashMap;
1516
import java.util.HashSet;
1617
import java.util.Iterator;
1718
import java.util.List;
@@ -57,6 +58,7 @@
5758
import ch.ethz.seb.sebserver.webservice.servicelayer.lms.impl.moodle.MoodleRestTemplateFactory;
5859
import ch.ethz.seb.sebserver.webservice.servicelayer.lms.impl.moodle.MoodleUtils;
5960
import ch.ethz.seb.sebserver.webservice.servicelayer.lms.impl.moodle.MoodleUtils.CourseData;
61+
import ch.ethz.seb.sebserver.webservice.servicelayer.lms.impl.moodle.MoodleUtils.Courses;
6062
import ch.ethz.seb.sebserver.webservice.servicelayer.lms.impl.moodle.MoodleUtils.CoursesPlugin;
6163
import ch.ethz.seb.sebserver.webservice.servicelayer.lms.impl.moodle.MoodleUtils.MoodleUserDetails;
6264
import io.micrometer.core.instrument.util.StringUtils;
@@ -84,12 +86,7 @@ public class MoodlePluginCourseAccess extends AbstractCachedCourseAccess impleme
8486
public static final String SQL_COURSE_NAME = "shortname";
8587

8688
public static final String SQL_CONDITION_TEMPLATE =
87-
"(startdate is null OR startdate = 0 OR startdate >= %s) AND (enddate is null or enddate = 0 OR enddate >= %s)";
88-
89-
public static final String FROM_DATE_CONDITION_TEMPLATE =
90-
"(startdate is null OR startdate = 0 OR startdate >= %s) AND (startdate is null OR startdate = 0 OR startdate <= %s)";
91-
92-
public static final String CUTOFF_DATE_CONDITION_TEMPLATE =
89+
//"(startdate >= %s or timecreated >=%s) and (enddate is null or enddate = 0 or enddate >= %s)";
9390
"(startdate is null OR startdate = 0 OR startdate >= %s) AND (enddate is null or enddate = 0 OR enddate >= %s)";
9491

9592
private final JSONMapper jsonMapper;
@@ -406,7 +403,7 @@ private void fetchQuizzesPage(
406403
MoodleUtils.quizDataOf(lmsSetup, c, urlPrefix, this.prependShortCourseName)
407404
.stream()
408405
.filter(quizFilter)
409-
.toList()));
406+
.collect(Collectors.toList())));
410407

411408
// check thresholds
412409
if (asyncQuizFetchBuffer.buffer.size() > this.maxSize) {
@@ -433,32 +430,14 @@ private Collection<CourseData> fetchCoursesPage(
433430
final long defaultCutOff = Utils.toUnixTimeInSeconds(
434431
DateTime.now(DateTimeZone.UTC).minusYears(this.cutoffTimeOffset));
435432
final long cutoffDate = Math.min(filterDate, defaultCutOff);
436-
String sqlCondition = String.format(SQL_CONDITION_TEMPLATE, cutoffDate, filterDate);
437-
438-
// String sqlCondition = null;
439-
// if (quizFromTime != null) {
440-
// final long dayStart = Utils.toUnixTimeInSeconds(quizFromTime.withTime(0, 0, 0, 0));
441-
// final long dayEnd = Utils.toUnixTimeInSeconds(quizFromTime.withTime(23, 59, 59, 999));
442-
// sqlCondition = String.format(FROM_DATE_CONDITION_TEMPLATE, dayStart, dayEnd);
443-
// } else {
444-
// final DateTime now = DateTime.now(DateTimeZone.UTC);
445-
// final long defaultCutOff = Utils.toUnixTimeInSeconds(now.minusYears(this.cutoffTimeOffset));
446-
// final long new_sec = Utils.toUnixTimeInSeconds(now );
447-
// sqlCondition = String.format(CUTOFF_DATE_CONDITION_TEMPLATE, defaultCutOff, new_sec);
448-
// }
433+
String sqlCondition = String.format(
434+
SQL_CONDITION_TEMPLATE, cutoffDate, filterDate);
449435
final String fromElement = String.valueOf(page * size);
450436
final LinkedMultiValueMap<String, String> attributes = new LinkedMultiValueMap<>();
451437

452438
if (this.applyNameCriteria && StringUtils.isNotBlank(nameCondition)) {
453-
sqlCondition = sqlCondition + " AND (" +
454-
SQL_QUIZ_NAME +
455-
" LIKE '" +
456-
Utils.toSQLWildcard(nameCondition) +
457-
"' OR " +
458-
SQL_COURSE_NAME +
459-
" LIKE '" +
460-
Utils.toSQLWildcard(nameCondition) +
461-
"')";
439+
final String n = Utils.toSQLWildcard(nameCondition);
440+
sqlCondition = sqlCondition + " AND (" + SQL_QUIZ_NAME + " LIKE '" + n + "' OR " + SQL_COURSE_NAME + " LIKE '" + n + "')";
462441
}
463442

464443
// Note: courseid[]=0 means all courses. Moodle don't like empty parameter

src/test/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/moodle/plugin/MoodlePluginCourseAccessTest.java

+2-22
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,7 @@ public void testFetchQuizzes() {
8080
assertNull(asyncQuizFetchBuffer.error);
8181

8282
assertEquals(
83-
"MoodlePluginCourseAccess [pageSize=500, maxSize=10000, cutoffTimeOffset=3, "
84-
+ "restTemplate=MockupMoodleRestTemplate [accessToken=MockupMoodleRestTemplate-Test-Token, url=https://test.org/, "
85-
+ "testLog=["
86-
+ "callMoodleAPIFunction: quizaccess_sebserver_get_exams, "
87-
+ "callMoodleAPIFunction: quizaccess_sebserver_get_exams], "
88-
+ "callLog=["
89-
+ "<courseid[]=0&conditions=(startdate is null OR startdate = 0 OR startdate >= -94694400) AND (enddate is null or enddate = 0 OR enddate >= -94694400)&startneedle=0&perpage=500,[Content-Type:\"application/x-www-form-urlencoded\"]>, "
90-
+ "<courseid[]=0&conditions=(startdate is null OR startdate = 0 OR startdate >= -94694400) AND (enddate is null or enddate = 0 OR enddate >= -94694400)&startneedle=500&perpage=500,[Content-Type:\"application/x-www-form-urlencoded\"]>]]]",
83+
"MoodlePluginCourseAccess [pageSize=500, maxSize=10000, cutoffTimeOffset=3, restTemplate=MockupMoodleRestTemplate [accessToken=MockupMoodleRestTemplate-Test-Token, url=https://test.org/, testLog=[callMoodleAPIFunction: quizaccess_sebserver_get_exams, callMoodleAPIFunction: quizaccess_sebserver_get_exams], callLog=[<courseid[]=0&conditions=%28startdate+is+null+OR+startdate+%3D+0+OR+startdate+%3E%3D+-94694400%29+AND+%28enddate+is+null+or+enddate+%3D+0+OR+enddate+%3E%3D+-94694400%29&startneedle=0&perpage=500,[Content-Type:\"application/x-www-form-urlencoded\"]>, <courseid[]=0&conditions=%28startdate+is+null+OR+startdate+%3D+0+OR+startdate+%3E%3D+-94694400%29+AND+%28enddate+is+null+or+enddate+%3D+0+OR+enddate+%3E%3D+-94694400%29&startneedle=500&perpage=500,[Content-Type:\"application/x-www-form-urlencoded\"]>]]]",
9184
candidate.toTestString());
9285

9386
final List<String> ids =
@@ -145,20 +138,7 @@ public void testFetchQuizzes_smallPaging() {
145138
assertNull(asyncQuizFetchBuffer.error);
146139

147140
assertEquals(
148-
"MoodlePluginCourseAccess [pageSize=5, maxSize=10000, cutoffTimeOffset=3, "
149-
+ "restTemplate=MockupMoodleRestTemplate [accessToken=MockupMoodleRestTemplate-Test-Token, url=https://test.org/, "
150-
+ "testLog=["
151-
+ "callMoodleAPIFunction: quizaccess_sebserver_get_exams, "
152-
+ "callMoodleAPIFunction: quizaccess_sebserver_get_exams, "
153-
+ "callMoodleAPIFunction: quizaccess_sebserver_get_exams, "
154-
+ "callMoodleAPIFunction: quizaccess_sebserver_get_exams, "
155-
+ "callMoodleAPIFunction: quizaccess_sebserver_get_exams], "
156-
+ "callLog=["
157-
+ "<courseid[]=0&conditions=(startdate is null OR startdate = 0 OR startdate >= -94694400) AND (enddate is null or enddate = 0 OR enddate >= -94694400)&startneedle=0&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>, "
158-
+ "<courseid[]=0&conditions=(startdate is null OR startdate = 0 OR startdate >= -94694400) AND (enddate is null or enddate = 0 OR enddate >= -94694400)&startneedle=5&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>, "
159-
+ "<courseid[]=0&conditions=(startdate is null OR startdate = 0 OR startdate >= -94694400) AND (enddate is null or enddate = 0 OR enddate >= -94694400)&startneedle=10&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>, "
160-
+ "<courseid[]=0&conditions=(startdate is null OR startdate = 0 OR startdate >= -94694400) AND (enddate is null or enddate = 0 OR enddate >= -94694400)&startneedle=15&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>, "
161-
+ "<courseid[]=0&conditions=(startdate is null OR startdate = 0 OR startdate >= -94694400) AND (enddate is null or enddate = 0 OR enddate >= -94694400)&startneedle=20&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>]]]",
141+
"MoodlePluginCourseAccess [pageSize=5, maxSize=10000, cutoffTimeOffset=3, restTemplate=MockupMoodleRestTemplate [accessToken=MockupMoodleRestTemplate-Test-Token, url=https://test.org/, testLog=[callMoodleAPIFunction: quizaccess_sebserver_get_exams, callMoodleAPIFunction: quizaccess_sebserver_get_exams, callMoodleAPIFunction: quizaccess_sebserver_get_exams, callMoodleAPIFunction: quizaccess_sebserver_get_exams, callMoodleAPIFunction: quizaccess_sebserver_get_exams], callLog=[<courseid[]=0&conditions=%28startdate+is+null+OR+startdate+%3D+0+OR+startdate+%3E%3D+-94694400%29+AND+%28enddate+is+null+or+enddate+%3D+0+OR+enddate+%3E%3D+-94694400%29&startneedle=0&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>, <courseid[]=0&conditions=%28startdate+is+null+OR+startdate+%3D+0+OR+startdate+%3E%3D+-94694400%29+AND+%28enddate+is+null+or+enddate+%3D+0+OR+enddate+%3E%3D+-94694400%29&startneedle=5&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>, <courseid[]=0&conditions=%28startdate+is+null+OR+startdate+%3D+0+OR+startdate+%3E%3D+-94694400%29+AND+%28enddate+is+null+or+enddate+%3D+0+OR+enddate+%3E%3D+-94694400%29&startneedle=10&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>, <courseid[]=0&conditions=%28startdate+is+null+OR+startdate+%3D+0+OR+startdate+%3E%3D+-94694400%29+AND+%28enddate+is+null+or+enddate+%3D+0+OR+enddate+%3E%3D+-94694400%29&startneedle=15&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>, <courseid[]=0&conditions=%28startdate+is+null+OR+startdate+%3D+0+OR+startdate+%3E%3D+-94694400%29+AND+%28enddate+is+null+or+enddate+%3D+0+OR+enddate+%3E%3D+-94694400%29&startneedle=20&perpage=5,[Content-Type:\"application/x-www-form-urlencoded\"]>]]]",
162142
candidate.toTestString());
163143

164144
final List<String> ids =

0 commit comments

Comments
 (0)