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 | |
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')
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/MailTemplate.java | 70 | ||||
-rw-r--r-- | dozentenmodulserver/src/test/java/bwlehrpool/MailTemplateTest.java | 29 |
2 files changed, 99 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; + + } + } + + +} diff --git a/dozentenmodulserver/src/test/java/bwlehrpool/MailTemplateTest.java b/dozentenmodulserver/src/test/java/bwlehrpool/MailTemplateTest.java new file mode 100644 index 00000000..85c066ca --- /dev/null +++ b/dozentenmodulserver/src/test/java/bwlehrpool/MailTemplateTest.java @@ -0,0 +1,29 @@ +package bwlehrpool; + +import java.util.HashMap; + +import org.openslx.bwlp.sat.util.MailTemplate; + +import junit.framework.TestCase; + +public class MailTemplateTest extends TestCase { + + public void testMailTemplate() { + String test = "Hallo Eins %zwei% drei"; + MailTemplate template = new MailTemplate(test); + + /* variables */ + HashMap<String, String> map = new HashMap<>(); + map.put("eins", "1"); + map.put("zwei", "2"); + map.put("drei", "3"); + + assertEquals("Hallo Eins 2 drei", template.format(map)); + assertEquals("1", new MailTemplate("%eins%").format(map)); + assertEquals("x1", new MailTemplate("x%eins%").format(map)); + assertEquals("1x", new MailTemplate("%eins%x").format(map)); + assertEquals("123", new MailTemplate("%eins%%zwei%%drei%").format(map)); + } + + +} |