Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package uk.ac.uos.i2p.assignment;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class TemplateManager implements TemplateProcessor {
- private Map<String, String> map;
- public TemplateManager() {
- this.map = new HashMap<String, String>();
- }
- @Override
- public void loadTemplate(String name, String template) {
- if (name != "" && template != "")
- this.map.put(name, template);
- else
- System.err.println("Empty data, impossible to add in the Map");
- }
- @Override
- public void loadTemplates(Map<String, String> templates) {
- this.map.putAll(templates);
- }
- @Override
- public String expandTemplate(String templateName, Map<String, Object> context) {
- if (this.map.containsKey(templateName)) {
- int leftOffset = 2, rightOffset = 1;
- String result = map.get(templateName), extractedValue = "";
- StringBuffer sb = new StringBuffer();
- Pattern pattern = Pattern.compile("\\$\\{\\(?\\w+\\)?\\}");
- Matcher matcher = pattern.matcher(result);
- while (matcher.find()) {
- if (matcher.group().charAt(2) == '(') {
- leftOffset = 3;
- rightOffset = 2;
- } else {
- leftOffset = 2;
- rightOffset = 1;
- }
- extractedValue = matcher.group().substring(leftOffset, matcher.group().length() - rightOffset);
- if (context.containsKey(extractedValue)) {
- matcher.appendReplacement(sb, context.get(extractedValue).toString());
- }
- //First expression//
- if (context.containsKey(extractedValue) && context.get(extractedValue) != null) {
- matcher.appendReplacement(sb, context.get(extractedValue).toString());
- }
- }
- return sb.toString();
- } else {
- System.out.println("Template \"" + templateName + "\" not found!");
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement