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

org.n3r.eql.ESelectStmt Maven / Gradle / Ivy

The newest version!
package org.n3r.eql;

import org.n3r.eql.impl.EqlRsRetriever;
import org.n3r.eql.map.EqlRun;
import org.n3r.eql.param.EqlParamsBinder;
import org.n3r.eql.util.Closes;
import org.n3r.eql.util.Fucks;
import org.slf4j.Logger;

import java.io.Closeable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class ESelectStmt implements Closeable, EStmt {
    private ResultSet resultSet;
    private PreparedStatement preparedStatement;
    private boolean resultSetNext;
    private EqlRsRetriever rsRetriever;
    private int rowNum;
    private EqlRun eqlRun;
    private Logger logger;
    private Object[] params;
    private int fetchSize;
    private String sqlClassPath;

    public void executeQuery() {
        executeQuery(params);
    }

    public void executeQuery(Object... params) {
        resultSetNext = true;
        rowNum = 0;
        try {
            eqlRun.setParams(params);
            new EqlParamsBinder().prepareBindParams(false, eqlRun);

            eqlRun.bindParams(preparedStatement, sqlClassPath);
            resultSet = preparedStatement.executeQuery();
            if (fetchSize > 0) resultSet.setFetchSize(fetchSize);
        } catch (SQLException e) {
            throw Fucks.fuck(e);
        }
    }

    @SuppressWarnings("unchecked")
    public  T next() {
        if (!resultSetNext) return null;

        try {
            T rowBean = (T) rsRetriever.selectRow(resultSet, ++rowNum);
            if (rowBean == null) {
                resultSetNext = false;
                closeRs();
            }
            return rowBean;
        } catch (SQLException e) {
            throw Fucks.fuck(e);
        }
    }

    public void closeRs() {
        Closes.closeQuietly(resultSet);
        resultSet = null;
    }

    @Override
    public void closeStmt() {
        Closes.closeQuietly(preparedStatement);
        preparedStatement = null;
    }

    @Override
    public void setPreparedStatment(PreparedStatement preparedStatement) {
        this.preparedStatement = preparedStatement;
    }

    public void setRsRetriever(EqlRsRetriever rsRetriever) {
        this.rsRetriever = rsRetriever;
    }

    @Override
    public void close() {
        closeRs();
        closeStmt();
    }

    @Override
    public void setEqlRun(EqlRun eqlRun) {
        this.eqlRun = eqlRun;
    }

    @Override
    public void setLogger(Logger logger) {
        this.logger = logger;
    }

    @Override
    public void setEqlTran(EqlTran eqlTran) {
    }

    @Override
    public void params(Object... params) {
        this.params = params;
    }

    @Override
    public Object[] getParams() {
        return this.params;
    }

    public void setFetchSize(int fetchSize) {
        this.fetchSize = fetchSize;
    }

    @Override
    public void setSqlClassPath(String sqlClassPath) {
        this.sqlClassPath = sqlClassPath;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy