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

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

The newest version!
/* 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 getParamAs(tmpObj, c);
    }

    /**
     * Convenient methods to return a Freemarker param wrapped object. 
     * NOTE: It assumes that the Class<C> 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 getParamAs(value, c);
    }

    @SuppressWarnings("unchecked")
    static public  C getParamAs(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;
    }
    
    
    static public Object getValue(Object freemarkerValue){
        Object value = null;
        try {
            if (freemarkerValue instanceof SimpleScalar) {
                value = freemarkerValue.toString();
            } else if (value instanceof BeanModel) {
                value =  ((BeanModel) value).getWrappedObject();
            } else if (value instanceof TemplateBooleanModel) {
                value = new Boolean(((TemplateBooleanModel) value).getAsBoolean());
            } else if (value instanceof SimpleNumber){
                value = new Long(((SimpleNumber)value).getAsNumber().intValue());
            }
        } catch (TemplateModelException e) {
            // TODO Auto-generated catch block
            logger.error(e.getMessage());
        }
        return value;        
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy