001 /**
002 *
003 */
004 package edu.samplu.common;
005
006 import java.io.File;
007 import java.io.InputStream;
008 import java.util.Properties;
009 import org.apache.commons.io.FileUtils;
010 import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
011 import freemarker.cache.ClassTemplateLoader;
012 import freemarker.cache.TemplateLoader;
013 import freemarker.template.Configuration;
014 import sun.applet.Main;
015
016 /**
017 * @author hardik
018 *
019 */
020 public class FreemarkerSmoketestGenerator {
021 private static Configuration cfg = new Configuration();
022
023 // Templates for File Generation
024 private static String DIR_TMPL = "/Gen/";
025
026 //Configuration
027 private static TemplateLoader templateLoader = new ClassTemplateLoader(Main.class, DIR_TMPL);
028
029 public static void main(String[] args) throws Exception {
030 cfg.setTemplateLoader(templateLoader);
031 String DEFAULT_PROPS_LOCATION = "/GenFiles/WorkFlowDocType.properties";
032 String STJUNITBASE_TMPL = "STJUnitBase.ftl";
033 String STJUNITBKMRKGEN_TMPL = "STJUnitBkMrkGen.ftl";
034 String STJUNITNAVGEN_TMPL = "STJUnitNavGen.ftl";
035 String STNGBASE_TMPL = "STNGBase.ftl";
036 String STNGBKMRKGEN_TMPL = "STNGBkMrkGen.ftl";
037 String STNGNAVGEN_TMPL = "STNGNavGen.ftl";
038
039 //Here we can prepare a list of template & properties file and can iterate to generate files dynamically on single run.
040 createFile(DEFAULT_PROPS_LOCATION,STJUNITBASE_TMPL);
041 createFile(DEFAULT_PROPS_LOCATION,STJUNITBKMRKGEN_TMPL);
042 createFile(DEFAULT_PROPS_LOCATION,STJUNITNAVGEN_TMPL);
043 createFile(DEFAULT_PROPS_LOCATION,STNGBASE_TMPL);
044 createFile(DEFAULT_PROPS_LOCATION,STNGBKMRKGEN_TMPL);
045 createFile(DEFAULT_PROPS_LOCATION,STNGNAVGEN_TMPL);
046 }
047
048 private static void createFile(String DEFAULT_PROPS_LOCATION, String TMPL) throws Exception
049 {
050 try {
051 //Loading Properties file
052 Properties props = new Properties();
053 InputStream in = null;
054 in = Main.class.getResourceAsStream(DEFAULT_PROPS_LOCATION);
055
056 if (in != null) {
057 props.load(in);
058 in.close();
059 }
060 else
061 {
062 throw new Exception("Problem with input stream.");
063 }
064
065 // build file STJUnitBase and add to array
066 File f1 = new File("src" + File.separatorChar + "it" + File.separatorChar + "resources"
067 + File.separatorChar + "GenFiles" + File.separatorChar + props.getProperty("className")
068 + TMPL.substring(0, TMPL.length() - 4) + ".java");
069
070 String output1 = FreeMarkerTemplateUtils.processTemplateIntoString(cfg.getTemplate(TMPL),
071 props);
072 FileUtils.writeStringToFile(f1, output1);
073
074 } catch (Exception e) {
075 e.printStackTrace();
076 throw new Exception("Unable to generate files", e);
077 }
078
079 }
080
081 }