package com.elab.core.spring.method;

import com.elab.core.dao.model.JdbcParamsModel;
import com.elab.core.exception.CoreException;

/**
 * 默认的SQL检验执行
 *
 * @author Liukx
 * @create 2018-02-05 17:37
 * @email liukx@elab-plus.com
 **/
public class DefaultCheckSQLProcess implements CheckSqlProcess {

    private final String whereName = "where";

    private final String updateType = "update";

    private final String insertType = "insert";

    @Override
    public void checkProcess(JdbcParamsModel model, Object o) throws Exception {

        String sql = model.getSql();

//        if (o == null && isUpdate(sql) && isUpdate(sql)) {
//            throw new CoreException(" 当前SQL执行,参数不能为null ");
//        }

        if (isUpdate(sql) && sql.indexOf(whereName) < 0) {
            throw new CoreException(" 每个UPDATE - SQL执行,where条件后面必须有一个参数以上 ");
        }

    }

    /**
     * 是否是修改类型的SQL
     *
     * @param sql
     * @return
     */
    private boolean isUpdate(String sql) {
        return sql.toLowerCase().startsWith(updateType);
    }

    /**
     * 是否是添加类型的SQL
     *
     * @param sql
     * @return
     */
    private boolean isInsert(String sql) {
        return sql.toLowerCase().startsWith(insertType);
    }
}
