001package cn.mybatis.mp.generator.template;
002
003import cn.mybatis.mp.generator.config.GeneratorConfig;
004import cn.mybatis.mp.generator.database.meta.EntityInfo;
005import cn.mybatis.mp.generator.util.GeneratorUtil;
006
007import java.time.LocalDate;
008import java.util.HashMap;
009import java.util.Map;
010
011public class DaoTemplateBuilder extends AbstractTemplateBuilder {
012
013    public DaoTemplateBuilder(GeneratorConfig generatorConfig, EntityInfo entityInfo) {
014        super(generatorConfig, entityInfo);
015    }
016
017    @Override
018    public boolean enable() {
019        return generatorConfig.getDaoConfig().isEnable();
020    }
021
022    @Override
023    public String targetFilePath() {
024        return generatorConfig.getBaseFilePath() + "/" + (entityInfo.getDaoPackage() + "." + entityInfo.getDaoName()).replaceAll("\\.", "/") + ".java";
025    }
026
027    @Override
028    public String templateFilePath() {
029        return generatorConfig.getTemplateRootPath() + "/dao";
030    }
031
032    @Override
033    public Map<String, Object> contextData() {
034        Map<String, Object> data = new HashMap<>();
035        data.put("imports", GeneratorUtil.buildDaoImports(generatorConfig, entityInfo));
036        if (generatorConfig.getDaoConfig().getSuperClass() != null) {
037            int dotIndex = generatorConfig.getDaoConfig().getSuperClass().lastIndexOf(".");
038            String superName;
039            if (dotIndex > 0) {
040                superName = generatorConfig.getDaoConfig().getSuperClass().substring(dotIndex + 1);
041            } else {
042                superName = generatorConfig.getDaoConfig().getSuperClass();
043            }
044            data.put("superExtend", "extends " + superName);
045        } else {
046            data.put("superExtend", "");
047        }
048        data.put("date", LocalDate.now().toString());
049        data.put("author", generatorConfig.getAuthor());
050        data.put("entityInfo", entityInfo);
051        data.put("daoConfig", generatorConfig.getDaoConfig());
052        return data;
053    }
054}