package com.fast.family.generator; import com.fast.family.generator.config.GeneratorConfig; import freemarker.template.Configuration; import freemarker.template.DefaultObjectWrapper; import freemarker.template.Template; import freemarker.template.Version; import java.io.File; import java.io.FileWriter; import java.net.URL; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * @author 张顺 * @version 1.0 */ public class ServiceGenerator { public static void genServiceCode(String className, String classComment, GeneratorConfig generatorConfig) { genServiceInterface(className, classComment, generatorConfig); genServiceImpl(className, classComment, generatorConfig); } public static void genServiceInterface(String className, String classComment, GeneratorConfig generatorConfig) { genServiceInterface(className, classComment, "ftl", generatorConfig); } public static void genServiceImpl(String className, String classComment, GeneratorConfig generatorConfig) { genServiceImpl(className, classComment, "ftl", generatorConfig); } public static void genOneToOneServiceInterface(String className, String classComment, GeneratorConfig generatorConfig) { genServiceInterface(className, classComment, "ftl/onetoone", generatorConfig); } public static void genOneToOneServiceImpl(String className, String classComment, GeneratorConfig generatorConfig) { genServiceImpl(className, classComment, "ftl/onetoone", generatorConfig); } public static void genOneToManyServiceInterface(String className, String classComment, GeneratorConfig generatorConfig) { genServiceInterface(className, classComment, "ftl/onetomany", generatorConfig); } public static void genOneToManyServiceImpl(String className, String classComment, GeneratorConfig generatorConfig) { genServiceImpl(className, classComment, "ftl/onetomany", generatorConfig); } public static void genManyToOneServiceInterface(String className, String classComment, GeneratorConfig generatorConfig) { genServiceInterface(className, classComment, "ftl/manytoone", generatorConfig); } public static void genManyToOneServiceImpl(String className, String classComment, GeneratorConfig generatorConfig) { genServiceImpl(className, classComment, "ftl/manytoone", generatorConfig); } private static void genServiceImpl(String className, String classComment, String resourcePath, GeneratorConfig generatorConfig) { Map<String, Object> paramMap = new HashMap<>(); paramMap.put("className", className); paramMap.put("classComment", classComment); paramMap.put("sysTime", new Date()); paramMap.put("packageName", generatorConfig.getPackageName()); Version version = new Version("2.3.27"); Configuration configuration = new Configuration(version); try { URL url = ServiceGenerator.class.getClassLoader().getResource(resourcePath); configuration.setDirectoryForTemplateLoading(new File(url.getPath())); configuration.setObjectWrapper(new DefaultObjectWrapper(version)); String filePath = generatorConfig.getSrcBasePath() + "service//impl//"; String savePath = filePath + className + "ServiceImpl.java"; File dirPath = new File(filePath); if (!dirPath.exists()) { dirPath.mkdirs(); } try (FileWriter fileWriter = new FileWriter(new File(savePath))) { Template template = configuration.getTemplate("service_impl.ftl"); template.process(paramMap, fileWriter); } } catch (Exception e) { e.printStackTrace(); } } private static void genServiceInterface(String className, String classComment, String resourcePath, GeneratorConfig generatorConfig) { Map<String, Object> paramMap = new HashMap<>(); paramMap.put("className", className); paramMap.put("classComment", classComment); paramMap.put("sysTime", new Date()); paramMap.put("packageName", generatorConfig.getPackageName()); Version version = new Version("2.3.27"); Configuration configuration = new Configuration(version); try { URL url = ServiceGenerator.class.getClassLoader().getResource(resourcePath); configuration.setDirectoryForTemplateLoading(new File(url.getPath())); configuration.setObjectWrapper(new DefaultObjectWrapper(version)); String filePath = generatorConfig.getSrcBasePath() + "service//"; String savePath = filePath + className + "Service.java"; File dirPath = new File(filePath); if (!dirPath.exists()) { dirPath.mkdirs(); } try (FileWriter fileWriter = new FileWriter(new File(savePath))) { Template template = configuration.getTemplate("service.ftl"); template.process(paramMap, fileWriter); } } catch (Exception e) { e.printStackTrace(); } } }