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

com.ktanx.autocoder.AutoCoder Maven / Gradle / Ivy

The newest version!
package com.ktanx.autocoder;

import com.ktanx.autocoder.config.CodeTask;
import com.ktanx.autocoder.config.Configuration;
import com.ktanx.autocoder.config.TableMetaData;
import com.ktanx.autocoder.db.DatabaseProcessor;
import com.ktanx.autocoder.db.MysqlProcessor;
import com.ktanx.autocoder.parse.ConfigParser;
import com.ktanx.autocoder.parse.xml.XmlConfigParser;
import com.ktanx.autocoder.task.DefaultTaskProcessor;
import com.ktanx.autocoder.task.TaskProcessor;

import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class AutoCoder {

    private ConfigParser configParser;

    private DatabaseProcessor dbProcessor;

    private TaskProcessor taskProcessor;

    /**
     * 以默认配置文件运行
     */
    public static void execute() {
        new AutoCoder("autocoder").generate();
    }

    /**
     * 指定配置文件名称,不带后缀
     *
     * @param configName
     */
    public static void execute(String configName) {
        new AutoCoder(configName).generate();
    }

    public AutoCoder() {
        this("autocoder");
    }

    public AutoCoder(String configName) {
        this.configParser = new XmlConfigParser(configName);
        this.dbProcessor = new MysqlProcessor();
        this.taskProcessor = new DefaultTaskProcessor();
    }

    public void generate() {
        Configuration configuration = configParser.parse();
        Collection codeTasks = configuration.getCodeTasks();

        Map> tableCodeTasks = configuration.getTableCodeTasks();
        for (Map.Entry> entry : tableCodeTasks.entrySet()) {

            String tableName = entry.getKey();

            Map> taskInfoMap = new HashMap<>();
            //先初始化及放入所有任务信息,以便在任何任务中都能获取别的任务生成的代码信息,特别只生成service等操作时,能够得到实体信息
            for (CodeTask codeTask : codeTasks) {
                Map map = new HashMap<>();
                map.put("longClassName", codeTask.getLongClassName(tableName));
                map.put("shortClassName", codeTask.getShortClassName(tableName));
                map.put("firstLowerClassName", codeTask.getFirstLowerClassName(tableName));
                map.put("lineThroughClassName", codeTask.getLineThroughClassName(tableName));
                map.put("lowerClassName", codeTask.getLowerClassName(tableName));
                map.put("upperClassName", codeTask.getUpperClassName(tableName));
                map.put("properties", codeTask.getProperties());
                map.put("plugins", codeTask.getPlugins());

                taskInfoMap.put(codeTask.getName(), map);
            }

            TableMetaData tableMetaData = dbProcessor.getTableMetaData(tableName, configuration.getJdbcConfig());
            List taskList = entry.getValue();

            for (String taskName : taskList) {
                CodeTask codeTask = configuration.getCodeTask(taskName);
                taskProcessor.doTask(tableMetaData, codeTask, taskInfoMap, configuration);
            }
        }
    }

    public void setConfigParser(ConfigParser configParser) {
        this.configParser = configParser;
    }

    public void setDbProcessor(DatabaseProcessor dbProcessor) {
        this.dbProcessor = dbProcessor;
    }

    public void setTaskProcessor(TaskProcessor taskProcessor) {
        this.taskProcessor = taskProcessor;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy