/** * OpenKM, Open Document Management System (http://www.openkm.com) * Copyright (c) 2006-2011 Paco Avila & Josep Llort * * No bytes were intentionally harmed during the development of this application. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package com.openkm.util; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.StringReader; import java.io.StringWriter; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.openkm.core.Config; import freemarker.template.Configuration; import freemarker.template.DefaultObjectWrapper; import freemarker.template.Template; import freemarker.template.TemplateException; public class TemplateUtils { private static Logger log = LoggerFactory.getLogger(Config.class); private static Configuration cfg = null; /** * Singleton FreeMaker configuration */ public static Configuration getConfig() { if (cfg == null) { try { cfg = new Configuration(); cfg.setDirectoryForTemplateLoading(new File(Config.HOME_DIR)); cfg.setObjectWrapper(new DefaultObjectWrapper()); } catch (IOException e) { log.error(e.getMessage(), e); } } return cfg; } /** * Check for template existence */ public static boolean templateExists(String name) { try { getConfig().getTemplate(name); return true; } catch (IOException e) { return false; } } /** * Quick replace utility function */ public static String replace(String name, String template, Map<String, Object> model) throws IOException, TemplateException { StringReader sr = new StringReader(template); Template tpl = new Template(name, sr, cfg); StringWriter sw = new StringWriter(); tpl.process(model, sw); sw.close(); sr.close(); return sw.toString(); } /** * Quick replace utility function */ public static void replace(String name, InputStream input, Map<String, Object> model, OutputStream out) throws IOException, TemplateException { InputStreamReader isr = new InputStreamReader(input); Template tpl = new Template(name, isr, cfg); OutputStreamWriter osw = new OutputStreamWriter(out); tpl.process(model, osw); osw.close(); isr.close(); } }