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 ServiceImplTemplateBuilder extends AbstractTemplateBuilder {
012
013    public ServiceImplTemplateBuilder(GeneratorConfig generatorConfig, EntityInfo entityInfo) {
014        super(generatorConfig, entityInfo);
015    }
016
017    @Override
018    public boolean enable() {
019        return generatorConfig.getServiceConfig().isEnable();
020    }
021
022    @Override
023    public String targetFilePath() {
024        return generatorConfig.getBaseFilePath() + "/" + (entityInfo.getServiceImplPackage() + "." + entityInfo.getServiceImplName()).replaceAll("\\.", "/") + ".java";
025    }
026
027    @Override
028    public String templateFilePath() {
029        return generatorConfig.getTemplateRootPath() + "/service.impl";
030    }
031
032    @Override
033    public Map<String, Object> contextData() {
034        Map<String, Object> data = new HashMap<>();
035        data.put("imports", GeneratorUtil.buildServiceImplImports(generatorConfig, entityInfo));
036        if (generatorConfig.getServiceImplConfig().getSuperClass() != null) {
037            int dotIndex = generatorConfig.getServiceImplConfig().getSuperClass().lastIndexOf(".");
038            String superName;
039            if (dotIndex > 0) {
040                superName = generatorConfig.getServiceImplConfig().getSuperClass().substring(dotIndex + 1);
041            } else {
042                superName = generatorConfig.getServiceImplConfig().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        data.put("serviceConfig", generatorConfig.getServiceConfig());
053        data.put("serviceImplConfig", generatorConfig.getServiceImplConfig());
054        return data;
055    }
056}