Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.82 KB | None | 0 0
  1. package uk.ac.uos.i2p.assignment;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7.  
  8. public class TemplateManager implements TemplateProcessor {
  9.  
  10.     private Map<String, String> map;
  11.  
  12.     public TemplateManager() {
  13.         this.map = new HashMap<String, String>();
  14.     }
  15.  
  16.     @Override
  17.     public void loadTemplate(String name, String template) {
  18.         if (name != "" && template != "")
  19.             this.map.put(name, template);
  20.         else
  21.             System.err.println("Empty data, impossible to add in the Map");
  22.        
  23.     }
  24.  
  25.     @Override
  26.     public void loadTemplates(Map<String, String> templates) {
  27.         this.map.putAll(templates);
  28.     }
  29.  
  30.     @Override
  31.     public String expandTemplate(String templateName, Map<String, Object> context) {
  32.         if (this.map.containsKey(templateName)) {
  33.             int leftOffset = 2, rightOffset = 1;
  34.             String result = map.get(templateName), extractedValue = "";
  35.             StringBuffer sb = new StringBuffer();
  36.             Pattern pattern = Pattern.compile("\\$\\{\\(?\\w+\\)?\\}");
  37.             Matcher matcher = pattern.matcher(result);
  38.            
  39.  
  40.             while (matcher.find()) {
  41.  
  42.                 if (matcher.group().charAt(2) == '(') {
  43.                     leftOffset = 3;
  44.                     rightOffset = 2;
  45.                 } else {
  46.                     leftOffset = 2;
  47.                     rightOffset = 1;
  48.                 }
  49.                 extractedValue = matcher.group().substring(leftOffset, matcher.group().length() - rightOffset);
  50.  
  51.                 if (context.containsKey(extractedValue)) {
  52.                     matcher.appendReplacement(sb, context.get(extractedValue).toString());
  53.                 }
  54.                 //First expression//
  55.                 if (context.containsKey(extractedValue) && context.get(extractedValue) != null) {
  56.                     matcher.appendReplacement(sb, context.get(extractedValue).toString());  
  57.                 }
  58.                
  59.             }
  60.             return sb.toString();
  61.         } else {
  62.             System.out.println("Template \"" + templateName + "\" not found!");
  63.             return null;
  64.         }
  65.        
  66.        
  67.        
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement