package fr.opensagres.xdocreport.template.freemarker.internal; import java.util.HashMap; import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import foundation.dao.PackageStringMap; import fr.opensagres.xdocreport.template.IContext; import fr.opensagres.xdocreport.template.utils.TemplateUtils; public class XDocFreemarkerContext implements IContext { protected static Logger logger; private Map<String, Object> contextMap; private Map<String, String> dataMap; static { logger = LogManager.getLogger(XDocFreemarkerContext.class); } public XDocFreemarkerContext() { this(new HashMap<String, Object>()); } public XDocFreemarkerContext(Map<String, Object> contextMap) { this.contextMap = contextMap; } public Object put(String key, Object value) { Object result = TemplateUtils.putContextForDottedKey(this, key, value); if (result == null) { return this.contextMap.put(key, value); } return result; } public Object get(String key) { Object result = this.contextMap.get(key); if (result != null) { return result; } if (dataMap == null || key.startsWith("__")) { return null; } int pos = key.indexOf(PackageStringMap.Spliter); if (pos > 0) { result = dataMap.get(key); } return result; } public void putMap(Map<String, Object> contextMap) { this.contextMap.putAll(contextMap); } public Map<String, Object> getContextMap() { return this.contextMap; } public void setDataMap(Map<String, String> dataMap) { this.dataMap = dataMap; } }