Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2004 - 2011 Brian McCallister
   *
   * 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.
  */
 
 package org.skife.jdbi.v2;
 
 
 import java.sql.Types;
 import java.util.List;

Used for invoking stored procedures.
 
 public class Call extends SQLStatement<Call>
 {
 	private final List<OutParamArgumentparams = new ArrayList<OutParamArgument>();
 
 	Call(Handle handle,
          StatementLocator locator,
          StatementRewriter rewriter,
          StatementBuilder cache,
          String sql,
          ConcreteStatementContext ctx,
          SQLLog log,
          TimingCollector timingCollector,
          Collection<StatementCustomizercustomizers,
          Foreman foreman,
          ContainerFactoryRegistry containerFactoryRegistry )
 	{
 		super(new Binding(), locatorrewriterhandlecachesqlctxlogtimingCollectorcustomizersforemancontainerFactoryRegistry);
 	}

Register output parameter
 
 	public Call registerOutParameter(int positionint sqlType)
 	{
 		return registerOutParameter(positionsqlTypenull);
 	}
 
 	public Call registerOutParameter(int positionint sqlTypeCallableStatementMapper mapper)
 	{
 	    getParams().addPositional(positionnew OutParamArgument(sqlTypemappernull));
 	    return this;
 	}

Register output parameter
 
 	public Call registerOutParameter(String nameint sqlType)
 	{
 	    return registerOutParameter(namesqlTypenull);
 	}
 
 	public Call registerOutParameter(String nameint sqlTypeCallableStatementMapper mapper)
 	{
 	    getParams().addNamed(namenew OutParamArgument(sqlTypemappername));
 	    return this;
 	}

Invoke the callable statement
 
 	public OutParameters invoke()
 	{
 	    try {
 	        return this.internalExecute(new QueryResultMunger<OutParameters>() {
 	            public OutParameters munge(Statement resultsthrows SQLException
 	            {
 	                OutParameters out = new OutParameters();
 	                for ( OutParamArgument param :  ) {
 	                    Object obj = param.map((CallableStatement)results);
 	                    out.getMap().put(param.positionobj);
 	                    if ( param.name != null ) {
 	                        out.getMap().put(param.nameobj);
	                    }
	                }
	                return out;
	            }
	        });
	    }
	    finally {
	        cleanup();
	    }
	}
	private class OutParamArgument implements Argument
	{
		private final int sqlType;
		private final String name;
		private int position ;
		public OutParamArgument(int sqlTypeCallableStatementMapper mapperString name)
		{
			this. = sqlType;
			this. = mapper;
			this. = name;
			.add(this);
		}
		public void apply(int positionPreparedStatement statementStatementContext ctxthrows SQLException
		{
			this. = position ;
		}
		public Object map(CallableStatement stmtthrows SQLException
		{
			if (  != null ) {
				return .map(stmt);
			}
			switch (  ) {
				case . : case . :
			    case . :
		        case . :
	            case . :
                case . :
					return stmt.getString() ;
				case . :
			    case . :
					return stmt.getBytes() ;
				case . :
					return stmt.getShort();
				case . :
					return stmt.getInt();
				case . :
				    return stmt.getLong();
				case . : case . :
					return stmt.getTimestamp() ;
				case . :
					return stmt.getDate() ;
				case . :
					return stmt.getFloat();
				case . : case . :
				    return stmt.getDouble();
				default :
					return stmt.getObject();
			}
		}
	}
New to GrepCode? Check out our FAQ X