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

com.ktanx.autocoder.task.DefaultTaskProcessor Maven / Gradle / Ivy

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

import com.ktanx.autocoder.config.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;

import java.util.*;

public class DefaultTaskProcessor implements TaskProcessor {


    private RenderHandler renderHandler;

    private FileHandler fileHandler;

    public DefaultTaskProcessor() {
        this.renderHandler = new EnjoyRenderHandler();
        this.fileHandler = new DefaultFileHandler();
    }

    @Override
    public void doTask(TableMetaData tableMetaData, CodeTask codeTask, Map> allTaskInfoMap, Configuration configuration) {

        Map context = new HashMap<>();
        context.putAll(allTaskInfoMap);
        context.put("constants", configuration.getConstants());


        Set importClasses = this.mappingColumnTypeAndImportClasses(tableMetaData.getColumns(), configuration);
        context.put("importClasses", importClasses);

        context.put("date", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
        context.put("table", tableMetaData);
        context.put("packageName", codeTask.getProperties().get(Constants.PACKAGE));
        long serialVersionUID = Math.abs(UUID.randomUUID().getLeastSignificantBits());
        context.put("serialVersionUID", serialVersionUID);

        String template = codeTask.getProperties().get(Constants.TEMPLATE);
        String text = renderHandler.renderToString(template, context);

        fileHandler.writeToFile(text, tableMetaData, codeTask, configuration);
    }


    /**
     * 添加字段类型需要导入的包
     *
     * @param columns the columns
     * @return the columns import class
     */
    protected Set mappingColumnTypeAndImportClasses(List columns, Configuration configuration) {

        Set importSet = new HashSet<>();
        for (ColumnMetaData column : columns) {

            TypeMapping typeMapping = configuration.getTypeMapping(column.getDbType().toUpperCase());
            if (typeMapping != null) {
                column.defineJavaType(typeMapping.getJavaType());
            }

            if (!StringUtils.startsWith(column.getJavaType(), "java.lang")) {
                importSet.add(column.getJavaType());
            }
        }
        return importSet;
    }

    public void setRenderHandler(RenderHandler renderHandler) {
        this.renderHandler = renderHandler;
    }

    public void setFileHandler(FileHandler fileHandler) {
        this.fileHandler = fileHandler;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy