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

com.yomahub.liteflow.parser.sql.read.impl.ScriptRead Maven / Gradle / Ivy

package com.yomahub.liteflow.parser.sql.read.impl;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.yomahub.liteflow.enums.NodeTypeEnum;
import com.yomahub.liteflow.enums.ScriptTypeEnum;
import com.yomahub.liteflow.parser.constant.ReadType;
import com.yomahub.liteflow.parser.constant.SqlReadConstant;
import com.yomahub.liteflow.parser.sql.exception.ELSQLException;
import com.yomahub.liteflow.parser.sql.read.AbstractSqlRead;
import com.yomahub.liteflow.parser.sql.read.vo.ScriptVO;
import com.yomahub.liteflow.parser.sql.util.LiteFlowJdbcUtil;
import com.yomahub.liteflow.parser.sql.vo.SQLParserVO;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Objects;

/**
 * 脚本读取
 *
 * @author tangkc
 * @author houxinyu
 * @since 2.11.1
 */
public class ScriptRead extends AbstractSqlRead {

    public ScriptRead(SQLParserVO config) {
        super(config);
    }

    @Override
    protected ScriptVO parse(ResultSet rs) throws SQLException {
        ScriptVO scriptVO = new ScriptVO();
        scriptVO.setNodeId(getStringFromRsWithCheck(rs, super.config.getScriptIdField()));
        scriptVO.setName(getStringFromRs(rs, super.config.getScriptNameField()));
        scriptVO.setType(getStringFromRsWithCheck(rs, super.config.getScriptTypeField()));
        scriptVO.setLanguage(getStringFromRs(rs, super.config.getScriptLanguageField()));
        scriptVO.setScript(getStringFromRsWithCheck(rs, super.config.getScriptDataField()));
        return scriptVO;
    }

    @Override
    public boolean hasEnableFiled() {
        String scriptEnableField = super.config.getScriptEnableField();
        return StrUtil.isNotBlank(scriptEnableField);
    }

    @Override
    public boolean getEnableFiledValue(ResultSet rs) throws SQLException {
        String scriptEnableField = super.config.getScriptEnableField();
        byte enable = rs.getByte(scriptEnableField);

        return enable == 1;
    }

    @Override
    public String buildQuerySql() {
        String scriptTableName = super.config.getScriptTableName();
        String scriptApplicationNameField = super.config.getScriptApplicationNameField();

        return StrUtil.format(
                SqlReadConstant.SCRIPT_SQL_PATTERN,
                scriptTableName,
                scriptApplicationNameField);
    }

    @Override
    public void checkConfig() {
        String scriptTableName = super.config.getScriptTableName();
        String scriptIdField = super.config.getScriptIdField();
        String scriptDataField = super.config.getScriptDataField();
        String scriptTypeField = super.config.getScriptTypeField();
        String scriptApplicationNameField = super.config.getScriptApplicationNameField();

        if(StrUtil.isBlank(scriptTableName)){
            throw new ELSQLException("You did not define the scriptTableName property");
        }
        if(StrUtil.isBlank(scriptIdField)){
            throw new ELSQLException("You did not define the scriptIdField property");
        }
        if(StrUtil.isBlank(scriptDataField)){
            throw new ELSQLException("You did not define the scriptDataField property");
        }
        if(StrUtil.isBlank(scriptTypeField)){
            throw new ELSQLException("You did not define the scriptTypeField property");
        }
        if(StrUtil.isBlank(scriptApplicationNameField)){
            throw new ELSQLException("You did not define the scriptApplicationNameField property");
        }
    }

    @Override
    public boolean needRead() {
        if (StrUtil.isBlank(super.config.getScriptTableName())) {
            return false;
        }

        String sqlCmd = StrUtil.format(
                SqlReadConstant.SCRIPT_SQL_CHECK_PATTERN,
                super.config.getScriptTableName()
        );

        Connection conn = LiteFlowJdbcUtil.getConn(super.config);
        return LiteFlowJdbcUtil.checkConnectionCanExecuteSql(conn, sqlCmd);
    }

    @Override
    public ReadType type() {
        return ReadType.SCRIPT;
    }

    /**
     * 脚本是否带语言
     */
    private boolean withLanguage() {
        return StrUtil.isNotBlank(super.config.getScriptLanguageField());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy