More robust blackboard module checking
This commit is contained in:
@@ -12,6 +12,7 @@ import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.regex.MatchResult;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import de.sebse.fuplanner.services.kvv.types.Lecturer;
|
||||
import de.sebse.fuplanner.services.kvv.types.Modules;
|
||||
@@ -265,30 +266,35 @@ public class ModulesList extends HTTPService {
|
||||
try {
|
||||
JSONObject json = new JSONObject(body1);
|
||||
String name = json.getString("name");
|
||||
String type = Regex.regex("[A-Za-z0-9]*_([A-Za-z0-9]*)_([A-Za-z0-9]*)_([0-9]*)([A-Z]*)", json.getString("courseId"), 1);
|
||||
String lvNumber = Regex.regex("[A-Za-z0-9]*_([A-Za-z0-9]*)_([A-Za-z0-9]*)_([0-9]*)([A-Z]*)", json.getString("courseId"), 2);
|
||||
String semYear = Regex.regex("[A-Za-z0-9]*_([A-Za-z0-9]*)_([A-Za-z0-9]*)_([0-9]*)([A-Z]*)", json.getString("courseId"), 3);
|
||||
String semType = Regex.regex("[A-Za-z0-9]*_([A-Za-z0-9]*)_([A-Za-z0-9]*)_([0-9]*)([A-Z]*)", json.getString("courseId"), 4);
|
||||
boolean found = false;
|
||||
for (Modules.Module module: modulesKVV) {
|
||||
if (module.lvNumber.contains(lvNumber)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
String type, lvNumber, semYear, semType;
|
||||
Semester semester = null;
|
||||
HashSet<String> lvNumberSet = new HashSet<>();
|
||||
lvNumberSet.add(lvNumber);
|
||||
boolean found = false;
|
||||
try {
|
||||
Matcher match = Regex.match("[A-Za-z0-9]*_([A-Za-z0-9]*)_([A-Za-z0-9]*)_([0-9]*)([A-Z]*)", json.getString("courseId"));
|
||||
type = match.group(1);
|
||||
lvNumber = match.group(2);
|
||||
semYear = match.group(3);
|
||||
semType = match.group(4);
|
||||
semester = new Semester(semType.equals("W") ? Semester.SEM_WS : Semester.SEM_SS, Integer.valueOf(semYear));
|
||||
lvNumberSet.add(lvNumber);
|
||||
for (Modules.Module module: modulesKVV) {
|
||||
if (module.lvNumber.contains(lvNumber)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (NoSuchFieldException e) {
|
||||
type = "Project";
|
||||
}
|
||||
if (!found)
|
||||
modulesKVV.addModule(new Semester(semType.equals("W") ? Semester.SEM_WS : Semester.SEM_SS, Integer.valueOf(semYear)), lvNumberSet, name, new LinkedHashSet<>(), type, "", courseId, Modules.TYPE_BB);
|
||||
modulesKVV.addModule(semester, lvNumberSet, name, new LinkedHashSet<>(), type, "", courseId, Modules.TYPE_BB);
|
||||
latch[0]--;
|
||||
if (latch[0] == 0)
|
||||
callback.onResponse(modulesKVV);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
errorCallback.onError(new NetworkError(101125, 403, "Cannot parse module list!"));
|
||||
} catch (NoSuchFieldException e) {
|
||||
e.printStackTrace();
|
||||
errorCallback.onError(new NetworkError(101127, 403, "Cannot parse module list!"));
|
||||
}
|
||||
}, error -> errorCallback.onError(new NetworkError(101126, error.networkResponse.statusCode, "Cannot get module list!")));
|
||||
} catch (JSONException e) {
|
||||
|
||||
@@ -30,6 +30,15 @@ public class Regex {
|
||||
return matcher.group(group);
|
||||
}
|
||||
|
||||
public static Matcher match(@Language("Regexp") String regex, String match) throws NoSuchFieldException {
|
||||
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
|
||||
Matcher matcher = pattern.matcher(match);
|
||||
if (!matcher.find()) {
|
||||
throw new NoSuchFieldException(String.format("Pattern: %s - String: %s", regex, match));
|
||||
}
|
||||
return matcher;
|
||||
}
|
||||
|
||||
public static Iterable<MatchResult> allMatches(@Language("Regexp") String regex, final CharSequence input) {
|
||||
final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
|
||||
return () -> new Iterator<MatchResult>() {
|
||||
|
||||
Reference in New Issue
Block a user