00001 /* 00002 * OpenMobileIS - a free Java(TM) Framework for mobile applications Java(TM) 00003 * Copyright (C) 2004-2006 Philippe Delrieu 00004 * All rights reserved. 00005 * Contact: pdelrieu@openmobileis.org 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00020 * USA 00021 * 00022 * Author : Philippe Delrieu 00023 * 00024 * Modifications : 00025 * 2004 Creation P.Delrieu 00026 * 2004 Modified by Romain Beaugrand 00027 * 00028 */ 00029 00030 package org.openmobileis.embedded.webserver.templates; 00031 00032 import javax.servlet.http.HttpServletResponse; 00033 00034 import freemarker.template.TemplateModelRoot; 00035 00051 public class TemplateManager { 00052 00053 private static TemplateManager manager = null; 00054 private static TemplateManagerDelegate delegate; 00055 00056 private TemplateManager() { 00057 // LogManager.traceDebug(0, "TemplateManager constructor"); 00058 if (delegate == null) delegate = new Freemarkerv1TemplateDelegate(); //init default delegate. 00059 this.init(); 00060 00061 } 00062 00063 public static TemplateManager getManager() { 00064 if (manager == null) { 00065 synchronized(TemplateManager.class) { 00066 if (manager == null) { 00067 manager = new TemplateManager(); 00068 } 00069 } 00070 } 00071 return manager; 00072 } 00073 00074 public static void registerTemplateDelegate(TemplateManagerDelegate indelegate) { 00075 delegate = indelegate; 00076 } 00077 00082 protected void init() { 00083 delegate.init(); 00084 } 00085 00086 public void updateTemplateWithNavigationBarData(Object modelRoot, String data) { 00087 delegate.updateTemplateWithNavigationBarData(modelRoot, data); 00088 } 00089 00093 public TemplateModelRoot getTemplateModelRoot() { 00094 return delegate.getTemplateModelRoot(); 00095 } 00096 00097 /* 00098 * Get the template called templateName (load it if it is not already done), 00099 * replace all variables tree of TemplateModelRoot in the template. 00100 * Write the HTTP response in the output stream with a basic header (mime type + status) 00101 * @param: String templateName the name of the template to use 00102 * @param: Hashtable variables (varName -> variable value) pairs 00103 * @param: HttpServletResponse response 00104 * @return: none 00105 * @OpenMSPException : IOEXception if an error occurs during sending data 00106 * @OpenMSPException : TemplateNotFoundException if the template is not found 00107 */ 00108 public void sendResponse (String templateName, TemplateModelRoot modelRoot, HttpServletResponse res) throws java.io.IOException, TemplateNotFoundException { 00109 delegate.sendResponse(templateName, modelRoot, res); 00110 } 00111 00112 00113 } 00114 00115 00116