summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx
diff options
context:
space:
mode:
authorSimon Rettberg2017-01-13 13:03:42 +0100
committerSimon Rettberg2017-01-13 13:03:42 +0100
commite757d5904d5ee3db61d06b034b3023368e2dd94c (patch)
tree40b21dfb8c0f0d4821bb7adf6552b9be695f7ed4 /dozentenmodulserver/src/main/java/org/openslx
parent[server] use mail template from the configuration database when generating ma... (diff)
downloadtutor-module-e757d5904d5ee3db61d06b034b3023368e2dd94c.tar.gz
tutor-module-e757d5904d5ee3db61d06b034b3023368e2dd94c.tar.xz
tutor-module-e757d5904d5ee3db61d06b034b3023368e2dd94c.zip
[server] Refine mail template parsing; fix too many mails being sent for invalid lectures
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java11
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/mail/MailTemplate.java36
2 files changed, 37 insertions, 10 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
index 8a8f6bd9..147b6b8a 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
@@ -250,9 +250,12 @@ public class DbLecture {
}
protected static List<LectureSummary> getAllUsingImageVersion(MysqlConnection connection,
- String imageVersionId) throws SQLException {
- MysqlStatement stmt = connection.prepareStatement(summaryBaseSql
- + " WHERE imageversionid = :imageversionid");
+ String imageVersionId, boolean enabledOnly) throws SQLException {
+ String query = summaryBaseSql + " WHERE i.imageversionid = :imageversionid";
+ if (enabledOnly) {
+ query += " AND l.isenabled = 1";
+ }
+ MysqlStatement stmt = connection.prepareStatement(query);
stmt.setString("imageversionid", imageVersionId);
stmt.setString("userid", "-");
ResultSet rs = stmt.executeQuery();
@@ -398,7 +401,7 @@ public class DbLecture {
|| (newVersion != null && newVersion.imageVersionId.equals(oldVersion.imageVersionId)))
return;
// First, get list of lectures using the image version to switch away from
- List<LectureSummary> lectures = getAllUsingImageVersion(connection, oldVersion.imageVersionId);
+ List<LectureSummary> lectures = getAllUsingImageVersion(connection, oldVersion.imageVersionId, true);
if (lectures.isEmpty())
return;
MysqlStatement stmt;
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/mail/MailTemplate.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/mail/MailTemplate.java
index 6ed88e28..46eec60b 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/mail/MailTemplate.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/mail/MailTemplate.java
@@ -40,17 +40,38 @@ public class MailTemplate {
return sb.toString();
}
- /*
+ private boolean validVarChar(char c) {
+ if (c >= 'a' && c <= 'z')
+ return true;
+ if (c >= 'A' && c <= 'Z')
+ return true;
+ if (c >= '0' && c <= '9')
+ return true;
+ return c == '_';
+ }
+
+ /**
* read the raw string from % to % and the fragments either into snippets or
- * variables
+ * variables. Valid variable names are surrounded are /%[a-zA-Z0-9_]+%/
+ * The trailing % might be missing. The name simply ends at the first
+ * character that is not valid for variable names. So the regexp is actually
+ * /%[a-zA-Z0-9_]+%?/
+ * Why? Compatibility with an old release that had a borked default template
+ * :(
*/
private void parseTemplate(String raw) {
int i = 0;
while (true) {
+ final int len = raw.length();
int begin = raw.indexOf("%", i);
- int end = raw.indexOf("%", begin + 1);
+ int end = begin + 1;
+ if (begin != -1) {
+ while (end < len && validVarChar(raw.charAt(end))) {
+ end++;
+ }
+ }
- if (begin == -1 || end == -1) {
+ if (begin == -1 || end >= len) {
/* no variable anymore, so just add a snippet until the end */
/* OR: stray %, add rest as literal text */
String snippet = raw.substring(i);
@@ -63,8 +84,11 @@ public class MailTemplate {
this.snippets.add(snippet);
this.identifiers.add(identifier);
- i = end + 1;
-
+ if (raw.charAt(end) == '%') {
+ i = end + 1;
+ } else {
+ i = end;
+ }
}
}