
com.antwerkz.sofia.LocalizerGenerator Maven / Gradle / Ivy
package com.antwerkz.sofia;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.TreeMap;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class LocalizerGenerator {
private List methods = new ArrayList();
private String pkgName;
private File outputDirectory;
private String bundleName;
private SofiaConfig config;
private Map> loggers = new HashMap>();
public LocalizerGenerator(SofiaConfig sofiaConfig) throws IOException {
config = sofiaConfig;
this.pkgName = sofiaConfig.getPackageName();
this.outputDirectory = sofiaConfig.getOutputDirectory();
bundleName = sofiaConfig.getProperties().getName();
if (bundleName.contains(".")) {
bundleName = bundleName.substring(0, bundleName.indexOf("."));
}
for (String level : config.getType().getLoggingLevels()) {
loggers.put(level, new ArrayList());
}
Map map = loadPropertiesFile(sofiaConfig.getProperties());
for (Entry entry : map.entrySet()) {
Method method = new Method(config.getType(), entry.getKey(), entry.getValue());
methods.add(method);
if(method.getLogged()) {
List level = loggers.get(method.getLogLevel());
if(level == null) {
throw new IllegalArgumentException(
String.format("Invalid logging level '%s' for logging type '%s'", method.getLogLevel(),
config.getType()));
}
level.add(method);
}
}
}
public static String capitalize(String text) {
return Character.toTitleCase(text.charAt(0)) + text.substring(1);
}
private Map loadPropertiesFile(File file) throws IOException {
Properties props = new Properties();
Map map = new TreeMap();
props.load(new FileInputStream(file));
for (Entry
© 2015 - 2025 Weber Informatics LLC | Privacy Policy