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 MapperTemplateBuilder extends AbstractTemplateBuilder {
012
013    public MapperTemplateBuilder(GeneratorConfig generatorConfig, EntityInfo entityInfo) {
014        super(generatorConfig, entityInfo);
015    }
016
017    @Override
018    public String targetFilePath() {
019        return generatorConfig.getBaseFilePath() + "/" + (entityInfo.getMapperPackage() + "." + entityInfo.getMapperName()).replaceAll("\\.", "/") + ".java";
020    }
021
022    @Override
023    public String templateFilePath() {
024        return generatorConfig.getTemplateRootPath() + "/mapper";
025    }
026
027    @Override
028    public Map<String, Object> contextData() {
029        Map<String, Object> data = new HashMap<>();
030        data.put("imports", GeneratorUtil.buildMapperImports(generatorConfig, entityInfo));
031        if (generatorConfig.getMapperConfig().getSuperClass() != null) {
032            int dotIndex = generatorConfig.getMapperConfig().getSuperClass().lastIndexOf(".");
033            String superName;
034            if (dotIndex > 0) {
035                superName = generatorConfig.getMapperConfig().getSuperClass().substring(dotIndex + 1);
036            } else {
037                superName = generatorConfig.getMapperConfig().getSuperClass();
038            }
039            data.put("superExtend", "extends " + superName);
040        } else {
041            data.put("superExtend", "");
042        }
043        data.put("date", LocalDate.now().toString());
044        data.put("author", generatorConfig.getAuthor());
045        data.put("entityInfo", entityInfo);
046        data.put("mapperConfig", generatorConfig.getMapperConfig());
047        return data;
048    }
049}