Package cave.nice.testMessage.templates

Source Code of cave.nice.testMessage.templates.TemplateManager

/*
* Copyright 2011 Michele Mancioppi [michele.mancioppi@gmail.com]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package cave.nice.testMessage.templates;

import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;

import javax.servlet.ServletContext;

import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;

public class TemplateManager {

  public enum TemplateType {
    CONFIGURATIONS_FORWARD, CONFIGURATIONS_PROCMAILRC, CONFIRMATION_REGISTRATION, TEST_MESSAGE
  }

  private final VelocityEngine engine;

  public synchronized final static TemplateManager getInstance(ServletContext servletContext) {
    return new TemplateManager(servletContext);
  }

  private TemplateManager(ServletContext servletContext) {
    engine = new VelocityEngine();
    engine.setProperty("resource.loader", "webapp");
    engine.setProperty("webapp.resource.loader.class", "org.apache.velocity.tools.view.WebappResourceLoader");
    engine.setProperty("webapp.resource.loader.path", "/WEB-INF/templates/");
    engine.setApplicationAttribute("javax.servlet.ServletContext", servletContext);
  }

  public String applyTemplate(TemplateType type, Map<String, Object> parameters) throws TemplateException {
    String templateName = null;
    switch (type) {
    case CONFIGURATIONS_FORWARD: {
      templateName = "forward.vtl";
      break;
    }
    case CONFIGURATIONS_PROCMAILRC: {
      templateName = "procmailrc.vtl";
      break;
    }
    case CONFIRMATION_REGISTRATION: {
      templateName = "confirmRegistration.vtl";
      break;
    }
    case TEST_MESSAGE: {
      templateName = "testMessage.vtl";
      break;
    }
    default:
      throw new TemplateException("Unknown template type: " + type);
    }

    VelocityContext context = new VelocityContext(parameters);
    StringWriter sw = new StringWriter();
    try {
      engine.getTemplate(templateName).merge(context, sw);
      return sw.toString();
    } catch (Exception e) {
      throw new TemplateException("Error while applying the template: " + templateName, e);
    } finally {
      try {
        sw.close();
      } catch (IOException e) {
        /*
         * TODO Log this?
         */
      }
    }
  }

}
 
TOP

Related Classes of cave.nice.testMessage.templates.TemplateManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.