diff options
author | Christian Klinger | 2016-07-26 16:28:44 +0200 |
---|---|---|
committer | Christian Klinger | 2016-07-26 16:28:44 +0200 |
commit | ad67840f6fb14ee2b2999ef5281309b6df41bf35 (patch) | |
tree | d3d014d0340dde6891b1f528b03ff18b6ef2e60d /dozentenmodulserver/src/main/java/org/openslx | |
parent | Merge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1 (diff) | |
download | tutor-module-ad67840f6fb14ee2b2999ef5281309b6df41bf35.tar.gz tutor-module-ad67840f6fb14ee2b2999ef5281309b6df41bf35.tar.xz tutor-module-ad67840f6fb14ee2b2999ef5281309b6df41bf35.zip |
basic version of MailTemplate.
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx')
-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; + + } + } + + +} |