All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tech.ibit.mybatis.generator.impl.AbstractGenerator Maven / Gradle / Ivy

There is a newer version: 2.3
Show newest version
package tech.ibit.mybatis.generator.impl;


import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 抽象生成器
 *
 * @author IBIT程序猿
 */
abstract class AbstractGenerator {

    /**
     * 定义缩紧,4个空格
     */
    static final String BLANK = "    ";

    /**
     * 空格
     */
    static final String SPACE = " ";

    /**
     * java.lang包前缀
     */
    private static final String PACKAGE_JAVA_LANG_PREFIX = "java.lang";

    /**
     * 生成文件
     *
     * @param file     文件
     * @param javaCode java编码
     * @param override 是否覆盖
     */
    void generateFile(File file, String javaCode, boolean override) {
        if (needCreateNewFile(file, override)) {
            createParentDirs(file);
            try (FileOutputStream out = new FileOutputStream(file)) {
                IOUtils.write(javaCode, out, "utf-8");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 判断是否需要生成新的文件
     *
     * @param file     文件
     * @param override 是否覆盖
     * @return 判断结果
     */
    boolean needCreateNewFile(File file, boolean override) {
        return !file.exists() || !file.isFile() || override;
    }


    /**
     * 生成父目录
     *
     * @param file 文件
     */
    void createParentDirs(File file) {
        File parentFile = file.getParentFile();
        if (!parentFile.exists() || !parentFile.isDirectory()) {
            parentFile.mkdirs();
        }
    }

    /**
     * 获取最后导入的包(排除java.lang开头的,并排序)
     *
     * @param imports 导入包路径列表
     * @return 导入的包
     */
    List getFinalImports(Collection imports) {
        return imports.stream()
                .filter(importClazz -> !importClazz.startsWith(PACKAGE_JAVA_LANG_PREFIX))
                .sorted().collect(Collectors.toList());
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy