package com.cool.bang;

import com.cool.bang.modules.generate.config.GenerateConfig;
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.StringTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@SpringBootTest
class AdminApplicationTests {

    @Autowired
    GenerateConfig generatorConfig;

    @Autowired
    Configuration configuration;

    @Test
    void contextLoads() {
        System.out.println(generatorConfig);
    }

    @Test
    void generate() throws IOException, TemplateException {

        // Configuration cfg = new Configuration();

        String templates = this.getClass().getClassLoader().getResource("freemarker").getPath();

        System.out.println(templates);

        FileTemplateLoader fileTemplateLoader = new FileTemplateLoader(new File(templates));
        configuration.setTemplateLoader(fileTemplateLoader);

        //3，获取模板
        Template template = configuration.getTemplate("controller.ftl");

        //4，构造数据模型
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("username", "测试人员");
        map.put("password", 1234);

        List<String> list = new ArrayList<>();
        list.add("第一个");
        list.add("第二个");
        map.put("list", list);

        //5，文件输出
        /**
         * 处理模型
         *      参数一 数据模型
         *      参数二 writer对象（FileWriter（文件输出），printWriter（控制台输出））
         */
//        template.process(map,new FileWriter(new File("D:\\a.txt")));
        //template.process(map, new PrintWriter(new File("F:/test.java")));

//        configuration.setTemplateLoader(new StringTemplateLoader());
//
//        String templateString = "欢迎您${username}";
//
//        //通过字符串创建模板
//        Template template = new Template("templateNames", new StringReader(templateString), configuration);
//
//        Map<String, Object> map = new HashMap<String, Object>();
//        map.put("username", "测试人员");
//        map.put("password", 1234);
//
//        List<String> list = new ArrayList<>();
//        list.add("第一个");
//        list.add("第二个");
//        map.put("list", list);
//
//        template.process(map, new PrintWriter(System.out));
    }

}
