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

com.ktanx.autocoder.config.CodeTask Maven / Gradle / Ivy

The newest version!
package com.ktanx.autocoder.config;

import com.ktanx.common.utils.NameUtils;
import lombok.Builder;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.util.Map;

@Getter
@Builder
public class CodeTask {

    /**
     * 任务名
     */
    private String name;

    /**
     * 属性
     */
    private Map properties;

    /**
     * 插件
     */
    private Map plugins;


    /**
     * 获取属性值
     *
     * @param key
     * @return
     */
    private String getPropertyValue(String key) {
        String s = properties.get(key);
        return s == null ? "" : s;
    }


    /**
     * 获取生成文件名,含包路径
     *
     * @param tableName
     * @return
     */
    public String getGeneratedFileName(String tableName) {
        String srcDir = this.getSrcDir();
        String longClassName = this.getLongClassName(tableName);
        longClassName = StringUtils.replace(longClassName, ".", "/");
        String suffix = this.getPropertyValue(Constants.SUFFIX);
        String packageFileDir = longClassName + suffix;
        return srcDir + File.separator + packageFileDir;
    }

    /**
     * 获取生成目录
     *
     * @return
     */
    public String getSrcDir() {
        return this.getPropertyValue(Constants.SRC_DIR);
    }


    /**
     * 获取生成的类名称,含包名
     *
     * @param tableName
     * @return
     */
    public String getLongClassName(String tableName) {

        String packageName = this.getPropertyValue(Constants.PACKAGE);
        String beginRemove = this.getPropertyValue(Constants.BEGIN_REMOVE);
        String endRemove = this.getPropertyValue(Constants.END_REMOVE);
        String beginFix = this.getPropertyValue(Constants.BEGIN_FIX);
        String endFix = this.getPropertyValue(Constants.END_FIX);
        String generateName = NameUtils.getCamelName(tableName);
        String delimiter = this.getPropertyValue(Constants.DELIMITER);
        if (StringUtils.isNotBlank(delimiter)) {
            generateName = NameUtils.getLowerDelimiterName(generateName, delimiter);
        }

        //移除开始指定字符
        if (StringUtils.isNotBlank(beginRemove) && StringUtils.startsWithIgnoreCase(generateName, beginRemove)) {
            generateName = StringUtils.substring(generateName, beginRemove.length());
        }
        //移除结尾指定字符
        if (StringUtils.isNotBlank(endRemove) && StringUtils.endsWithIgnoreCase(generateName, endRemove)) {
            generateName = StringUtils.substring(generateName, 0, generateName.length() - endRemove.length());
        }

        generateName = NameUtils.getFirstUpperName(generateName);

        String upper = this.getPropertyValue(Constants.UPPER);
        if (StringUtils.isNotBlank(upper) && Boolean.valueOf(upper)) {
            generateName = generateName.toUpperCase();
        }
        String lower = this.getPropertyValue(Constants.LOWER);
        if (StringUtils.isNotBlank(lower) && Boolean.valueOf(lower)) {
            generateName = generateName.toLowerCase();
        }

        return new StringBuilder(packageName).append(".").append(beginFix).append(generateName).append(endFix)
                .toString();
    }


    /**
     * 获取生成的类名称,不含包名
     *
     * @param tableName
     * @return
     */
    public String getShortClassName(String tableName) {
        String longClassName = this.getLongClassName(tableName);
        int index = StringUtils.lastIndexOf(longClassName, ".");
        return StringUtils.substring(longClassName, index + 1);
    }

    /**
     * 首字母小写类名
     *
     * @param tableName
     * @return
     */
    public String getFirstLowerClassName(String tableName) {
        return NameUtils.getFirstLowerName(getShortClassName(tableName));
    }

    /**
     * 中划线分隔
     *
     * @param tableName
     * @return
     */
    public String getLineThroughClassName(String tableName) {
        return NameUtils.getLineThroughName(getShortClassName(tableName));
    }

    /**
     * 小写名
     *
     * @param tableName
     * @return
     */
    public String getLowerClassName(String tableName) {
        return getShortClassName(tableName).toLowerCase();
    }

    /**
     * 大写名
     *
     * @param tableName
     * @return
     */
    public String getUpperClassName(String tableName) {
        return getShortClassName(tableName).toUpperCase();
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy