summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src
diff options
context:
space:
mode:
authorChristian Klinger2016-07-26 16:28:44 +0200
committerChristian Klinger2016-07-26 16:28:44 +0200
commitad67840f6fb14ee2b2999ef5281309b6df41bf35 (patch)
treed3d014d0340dde6891b1f528b03ff18b6ef2e60d /dozentenmodulserver/src
parentMerge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1 (diff)
downloadtutor-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.java70
-rw-r--r--dozentenmodulserver/src/test/java/bwlehrpool/MailTemplateTest.java29
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));
+ }
+
+
+}