Package com.nexirius.framework.jdbc

Source Code of com.nexirius.framework.jdbc.JnexCallableStatement

package com.nexirius.framework.jdbc;

import com.nexirius.framework.datamodel.StructModel;
import com.nexirius.framework.datamodel.DataModelVector;
import com.nexirius.framework.datamodel.DataModelEnumeration;
import com.nexirius.framework.datamodel.DataModel;

import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ParameterMetaData;
import java.util.Iterator;

public class JnexCallableStatement extends JnexPreparedStatement {
    private String storedProcedureName;
    public JnexCallableStatement(DatabaseTableMapping mapping, String storedProcedureName, int numberOfParameters) throws SQLException {
        super(mapping, createStoredProcedureSql(storedProcedureName, numberOfParameters), false);
        this.storedProcedureName = storedProcedureName;
    }

    public void setParameters(DataModelVector children) throws SQLException {
        DataModelEnumeration en = children.getEnumeration();

        int index = 0;

        while(en.hasMore()) {
            DataModel param = en.next();

            mapping.setValue(this, ++index, param);
        }
    }

    //todo check if OK
    public String toString() {
        StringBuffer ret = new StringBuffer();
        ret.append("call " + this.storedProcedureName + "(");

        if (parameters != null) {

            for (Iterator it = parameters.iterator(); it.hasNext();) {
                ret.append("'");
                Parameter parameter = (Parameter) it.next();

                ret.append(parameter.toString() + "'");

                if (it.hasNext()) {
                    ret.append(", ");
                }
            }

        }

        ret.append(");");
        return ret.toString();

    }

    private static String createStoredProcedureSql(String storedProcedureName, int numberOfParameters) {
        //"{call PROCEDURENAME(?,?,?,?)}"
        //{call <procedure-name>[(<arg1>,<arg2>, ...)]}

        StringBuffer ret = new StringBuffer(256);

        ret.append("{call ");
        ret.append(storedProcedureName);
        ret.append("(");
        for (int i = 0; i < numberOfParameters; ++i) {
            if (i > 0) {
                ret.append(",?");
            } else {
                ret.append("?");
            }
        }
        ret.append(")}");

        return ret.toString();
    }
}
TOP

Related Classes of com.nexirius.framework.jdbc.JnexCallableStatement

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.