diff options
Diffstat (limited to 'dozentenmodulserver/src/main/java')
| -rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/MailTemplate.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/MailTemplate.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/MailTemplate.java new file mode 100644 index 00000000..368c43ec --- /dev/null +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/MailTemplate.java @@ -0,0 +1,70 @@ +package org.openslx.bwlp.sat.util; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Map; + +/** + * stores a mail template and offers methods to place variables + **/ +public class MailTemplate { + + private ArrayList<String> snippets = new ArrayList<>(); + private ArrayList<String> identifiers = new ArrayList<>(); + + public MailTemplate(String raw_template) { + this.parseTemplate(raw_template); + } + + public String format(Map<String, String> vars) { + Iterator<String> it_snippets = snippets.iterator(); + Iterator<String> it_identifiers = identifiers.iterator(); + + StringBuilder sb = new StringBuilder(); + + while (true) { + boolean progress = false; + if (it_snippets.hasNext()) { + sb.append(it_snippets.next()); + progress = true; + } + if (it_identifiers.hasNext()) { + sb.append(vars.get(it_identifiers.next())); + progress = true; + } + if ( progress == false) { + break; + } + } + return sb.toString(); + } + + /* + * read the raw string from % to % and the fragments either into snippets or + * variables + */ + private void parseTemplate(String raw) { + int i = 0; + while (true) { + int begin = raw.indexOf("%", i); + int end = raw.indexOf("%", begin + 1); + + if (begin == -1) { + /* no variable anymore, so just add a snippet until the end */ + String snippet = raw.substring(i); + this.snippets.add(snippet); + break; + } + String snippet = raw.substring(i, begin); + String identifier = raw.substring(begin + 1, end); + + this.snippets.add(snippet); + this.identifiers.add(identifier); + + i = end + 1; + + } + } + + +} |
