package com.twasyl.slideshowfx.utils;
import freemarker.template.Configuration;
import static com.twasyl.slideshowfx.global.configuration.GlobalConfiguration.getDefaultCharset;
/**
* This class provides utility methods to interact with the template library, which is currently freemarker.
*
* @author Thierry Wasylczenko
* @version 1.0
* @since SlideshowFX 1.0
*/
public class TemplateProcessor {
private static Configuration configurationSingleton;
private static Configuration jsConfigurationSingleton;
private static Configuration htmlConfigurationSingleton;
/**
* This method returns a {@link freemarker.template.Configuration} as a singleton object, as recommended in the
* freemarker documentation.
* @return A never {code null} Configuration object.
*/
public static synchronized Configuration getDefaultConfiguration() {
if(configurationSingleton == null) {
configurationSingleton = new Configuration(Configuration.VERSION_2_3_23);
configurationSingleton.setIncompatibleImprovements(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
configurationSingleton.setDefaultEncoding(getDefaultCharset().displayName());
}
return configurationSingleton;
}
/**
* This method returns a {@link freemarker.template.Configuration} as a singleton object, as recommended in the
* freemarker documentation.
* This configuration is initialized with the {@code /com/twasyl/slideshowfx/js/} path for
* {@link freemarker.template.Configuration#setDirectoryForTemplateLoading(java.io.File)}
* @return A never {code null} Configuration object.
*/
public static synchronized Configuration getJsConfiguration() {
if(jsConfigurationSingleton == null) {
jsConfigurationSingleton = new Configuration(Configuration.VERSION_2_3_23);
jsConfigurationSingleton.setIncompatibleImprovements(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
jsConfigurationSingleton.setDefaultEncoding(getDefaultCharset().displayName());
jsConfigurationSingleton.setClassForTemplateLoading(TemplateProcessor.class, "/com/twasyl/slideshowfx/js/");
}
return jsConfigurationSingleton;
}
/**
* This method returns a {@link freemarker.template.Configuration} as a singleton object, as recommended in the
* freemarker documentation.
* This configuration is initialized with the {@code /com/twasyl/slideshowfx/html/} path for
* {@link freemarker.template.Configuration#setDirectoryForTemplateLoading(java.io.File)}
* @return A never {code null} Configuration object.
*/
public static synchronized Configuration getHtmlConfiguration() {
if(htmlConfigurationSingleton == null) {
htmlConfigurationSingleton = new Configuration(Configuration.VERSION_2_3_23);
htmlConfigurationSingleton.setIncompatibleImprovements(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
htmlConfigurationSingleton.setDefaultEncoding(getDefaultCharset().displayName());
htmlConfigurationSingleton.setClassForTemplateLoading(TemplateProcessor.class, "/com/twasyl/slideshowfx/html/");
}
return htmlConfigurationSingleton;
}
}