All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.britesnow.snow.web.renderer.freemarker.FreemarkerUtil Maven / Gradle / Ivy

/* Copyright 2009 Jeremy Chone - Licensed under the Apache License, Version 2.0
 * http://www.apache.org/licenses/LICENSE-2.0
 */
package com.britesnow.snow.web.renderer.freemarker;

import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import freemarker.core.Environment;
import freemarker.ext.beans.BeanModel;
import freemarker.template.SimpleNumber;
import freemarker.template.SimpleScalar;
import freemarker.template.TemplateBooleanModel;
import freemarker.template.TemplateHashModel;
import freemarker.template.TemplateModelException;

public class FreemarkerUtil {
    static private Logger logger = LoggerFactory.getLogger(FreemarkerUtil.class);
    
    static public  C getDataModel(String mapName, Class c) {
        Environment env = Environment.getCurrentEnvironment();

        TemplateHashModel rootModel = env.getDataModel();
        Object tmpObj = rootModel;
        try {
            for (String key : mapName.split("\\.")) {
                if (tmpObj instanceof TemplateHashModel) {
                    tmpObj = ((TemplateHashModel) tmpObj).get(key);
                } 
            }

        } catch (Exception e) {
            logger.warn(e.getMessage());
            tmpObj = null;
        }

        return getParam(tmpObj, c);
    }

    /**
     * Convenient methods to return a Freemarker param wrapped object.
NOTE: It assumes that the Class c will * be the correct type. * * @param * Class to return * @param params * Freemarker params * @param name * param name * @param c * Object class type to return * @return */ static public C getParam(Map params, String name, Class c) { Object value = params.get(name); return getParam(value, c); } @SuppressWarnings("unchecked") static public C getParam(Object value, Class c) { try { if (value instanceof SimpleScalar) { return (C) value.toString(); } else if (value instanceof BeanModel) { return (C) ((BeanModel) value).getWrappedObject(); } else if (value instanceof TemplateBooleanModel) { return (C) new Boolean(((TemplateBooleanModel) value).getAsBoolean()); } else if (value instanceof SimpleNumber){ if (c == Integer.class){ return (C) new Integer(((SimpleNumber)value).getAsNumber().intValue()); }else if (c == Long.class){ return (C) new Long(((SimpleNumber)value).getAsNumber().intValue()); } } } catch (TemplateModelException e) { // TODO Auto-generated catch block logger.error(e.getMessage()); } return null; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy