Java SQL Type getParamArray(String signature, int numParam, boolean returnAllParams)

Here you can find the source of getParamArray(String signature, int numParam, boolean returnAllParams)

Description

Builds an array of Class type for the given signature.

License

Apache License

Parameter

Parameter Description
signature java signature
numParam number of parameters in the signature
returnAllParams flag to specify return of all params in signature

Exception

Parameter Description
ClassNotFoundException an exception

Return

Array of Class objects represting the parameter types in the signature

Declaration

private static Class[] getParamArray(String signature, int numParam,
        boolean returnAllParams) throws ClassNotFoundException 

Method Source Code

//package com.java2s;
/**********************************************************************
 // @@@ START COPYRIGHT @@@/*from   w  w w  .  jav  a2s  . co  m*/
 //
 // (C) Copyright 1997-2014 Hewlett-Packard Development Company, L.P.
 //
 //  Licensed under the Apache License, Version 2.0 (the "License");
 //  you may not use this file except in compliance with the License.
 //  You may obtain a copy of the License at
 //
 //      http://www.apache.org/licenses/LICENSE-2.0
 //
 //  Unless required by applicable law or agreed to in writing, software
 //  distributed under the License is distributed on an "AS IS" BASIS,
 //  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 //  See the License for the specific language governing permissions and
 //  limitations under the License.
 //
 // @@@ END COPYRIGHT @@@
 **********************************************************************/

import java.util.ArrayList;

public class Main {
    /**
     * Builds an array of Class type for the given signature.
     * This method parses the signature and returns the Class object
     * array. If we hit '[' then set outParam and revisit the same parameter.
     * @param   signature           java signature
     * @param   numParam            number of parameters in the signature
     * @param   returnAllParams     flag to specify return of all params in signature
     * @return  Array of Class objects represting the parameter types 
     *           in the signature
     * @throws  ClassNotFoundException
     *
     **/
    private static Class[] getParamArray(String signature, int numParam,
            boolean returnAllParams) throws ClassNotFoundException {
        ArrayList param = new ArrayList();
        boolean outMode = false;

        for (int index = 0; index < signature.length(); index++) {
            switch (signature.charAt(index)) {
            case ')':
                break;

            case '[':
                outMode = true; // This param has OUT/INOUT mode
                break;

            case 'V':
                break;

            case 'S':
                if (outMode == true)
                    param.add((new short[1]).getClass());
                else
                    param.add(Short.TYPE);
                outMode = false;
                break;

            case 'I':
                if (outMode == true)
                    param.add((new int[1]).getClass());
                else
                    param.add(Integer.TYPE);
                outMode = false;
                break;

            case 'J':
                if (outMode == true)
                    param.add((new long[1]).getClass());
                else
                    param.add(Long.TYPE);
                outMode = false;
                break;

            case 'F':
                if (outMode == true)
                    param.add((new float[1]).getClass());
                else
                    param.add(Float.TYPE);
                outMode = false;
                break;

            case 'D':
                if (outMode == true)
                    param.add((new double[1]).getClass());
                else
                    param.add(Double.TYPE);
                outMode = false;
                break;

            case 'L':
                String substr = signature.substring(index,
                        signature.indexOf(";", index));
                if (substr.equals("Ljava/lang/String")) {
                    if (outMode == true)
                        param.add((new java.lang.String[1]).getClass());
                    else
                        param.add(Class.forName("java.lang.String"));
                    index += 17;
                    outMode = false;
                    break;
                }

                if (substr.equals("Ljava/math/BigDecimal")) {
                    if (outMode == true)
                        param.add((new java.math.BigDecimal[1]).getClass());
                    else
                        param.add(Class.forName("java.math.BigDecimal"));
                    index += 21;
                    outMode = false;
                    break;
                }

                if (substr.equals("Ljava/sql/Date")) {
                    if (outMode == true)
                        param.add((new java.sql.Date[1]).getClass());
                    else
                        param.add(Class.forName("java.sql.Date"));
                    index += 14;
                    outMode = false;
                    break;
                }

                if (substr.equals("Ljava/sql/Timestamp")) {
                    if (outMode == true)
                        param.add((new java.sql.Timestamp[1]).getClass());
                    else
                        param.add(Class.forName("java.sql.Timestamp"));
                    index += 19;
                    outMode = false;
                    break;
                }

                if (substr.equals("Ljava/sql/Time")) {
                    if (outMode == true)
                        param.add((new java.sql.Time[1]).getClass());
                    else
                        param.add(Class.forName("java.sql.Time"));
                    index += 14;
                    outMode = false;
                    break;
                }

                if (substr.equals("Ljava/sql/ResultSet")) {
                    if (outMode == true)
                        param.add((new java.sql.ResultSet[1]).getClass());
                    else
                        param.add(Class.forName("java.sql.ResultSet"));
                    index += 19;
                    outMode = false;
                    break;
                }

                if (substr.equals("Ljava/lang/Integer")) {
                    if (outMode == true)
                        param.add((new java.lang.Integer[1]).getClass());
                    else
                        param.add(Class.forName("java.lang.Integer"));
                    index += 18;
                    outMode = false;
                    break;
                }

                if (substr.equals("Ljava/lang/Long")) {
                    if (outMode == true)
                        param.add((new java.lang.Long[1]).getClass());
                    else
                        param.add(Class.forName("java.lang.Long"));
                    index += 15;
                    outMode = false;
                    break;
                }

                if (substr.equals("Ljava/lang/Float")) {
                    if (outMode == true)
                        param.add((new java.lang.Float[1]).getClass());
                    else
                        param.add(Class.forName("java.lang.Float"));
                    index += 16;
                    outMode = false;
                    break;
                }

                if (substr.equals("Ljava/lang/Double")) {
                    if (outMode == true)
                        param.add((new java.lang.Double[1]).getClass());
                    else
                        param.add(Class.forName("java.lang.Double"));
                    index += 17;
                    outMode = false;
                    break;
                }
                outMode = false;
                break;
            } // switch ends
        } // for loop ends

        Class[] retParam;
        int paramCount = param.size();

        if (!returnAllParams)
            paramCount = numParam;

        retParam = new Class[paramCount];
        for (int i = 0; i < paramCount; i++)
            retParam[i] = (Class) param.get(i);

        return retParam;

    }
}

Related

  1. getNumTypeWidth(int type)
  2. getObject(int sqlType, String value)
  3. getObjectType(Object param)
  4. getObjectType(Object param)
  5. getOdaTypeName(int odaTypeCode)
  6. getPartitionSizeValidationError(int colType, String column, String partitionSize)
  7. getPreferredHibernateType(int sqlType, int size, int precision, int scale, boolean nullable, boolean generatedIdentifier)
  8. getPreparedStatementSetMethodMap()
  9. getPrimitiveInstance(Type type, String valueString)