InitFreemarkerServlet.java

package sk.iway.iwcm;

import java.io.IOException;
import java.util.Locale;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import freemarker.ext.servlet.FreemarkerServlet;
import freemarker.template.Configuration;
import freemarker.template.TemplateModelException;
import sk.iway.iwcm.users.UsersDB;

/**
 * Date: 12.02.2018
 * Time: 7:45
 * Project: webjet8
 * Company: InterWay a. s. (www.interway.sk)
 * Copyright: InterWay a. s. (c) 2001-2018
 *
 * @author mpijak
 */
public class InitFreemarkerServlet extends FreemarkerServlet {

    private static final long serialVersionUID = 1L;

    /* Vo freemarker templatach .ftl netreba deklarovat PageParams ani lang
    * ${pageParams.getValue("nazovParametra", "default")
    * ${lng}
    *
    * Ostatne global parametre sa daju definovat v metodach createConfiguration a preprocessRequest
    */
    @Override
    protected Configuration createConfiguration() {
        Configuration config = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
        config.setDefaultEncoding("windows-1250");
        config.setEncoding(Locale.getDefault(), "windows-1250");
//        config.setSetting();

        try {
            config.setSharedVariable("Tools", new Tools());
//            config.setSharedVariable("iwcm", t.get("/WEB-INF/iwcm.tld");
        } catch (TemplateModelException e) {
            sk.iway.iwcm.Logger.error(e);
        }
        return config;
    }

    /* Tu definovat globalne premenne ktore chceme ziskat pri spracovani requestu */
    @Override
    protected boolean preprocessRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Configuration config = this.getConfiguration();
        //String queryStringParams = this.getQueryStringParams(request);
        String queryString = (String) request.getAttribute("path_filter_query_string");

        try {
            config.setSharedVariable("WebjetHelpers", new FreemarkerHelpers(request));
            config.setSharedVariable("pageParams", new PageParams(request));
            config.setSharedVariable("queryString", queryString);
            config.setSharedVariable("lng", PageLng.getUserLng(request));
            config.setSharedVariable("origPath", PathFilter.getOrigPath(request));
            config.setSharedVariable("currentUser", UsersDB.getCurrentUser(request));
        } catch (TemplateModelException e) {
            sk.iway.iwcm.Logger.error(e);
        }
        return false;
    }

    /*private String getQueryStringParams(HttpServletRequest request) {
        StringBuilder queryStringParams = new StringBuilder();
        Map<String, String[]> params = request.getParameterMap();

        Iterator<Map.Entry<String, String[]>> it = params.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String[]> entry = it.next();
            String queryParamName = entry.getKey();
            String[] queryParamValues = entry.getValue();
            for (int i = 0; i < queryParamValues.length; i++) {
                String qpv = queryParamValues[i];
                queryStringParams
                        .append(queryParamName)
                        .append("=")
                        .append(qpv);
                if (i == 0) {
                    break;
                    // TODO: vyriesit multiple parameter value pre nazov parametra?
                }
                if (i+1 < queryParamValues.length) {
                    queryStringParams.append("&");
                }
            }
            if (it.hasNext()) {
                queryStringParams.append("&");
            }
        }
        return queryStringParams.toString();
    }*/
}