/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership. Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
package org.teiid.query.metadata;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.teiid.designer.query.metadata.IStoredProcedureInfo;
import org.teiid.designer.query.sql.lang.ISPParameter;
import org.teiid.query.mapping.relational.QueryNode;
import org.teiid.query.sql.lang.SPParameter;
/**
* This class encapsulates everything needed to pass between runtime metadata
* and the QueryResolver via the facades
*/
public class StoredProcedureInfo implements Serializable, IStoredProcedureInfo<SPParameter, QueryNode> {
/** Constant identifying an IN parameter */
public static final int IN = ISPParameter.ParameterInfo.IN.index();
/** Constant identifying an OUT parameter */
public static final int OUT = ISPParameter.ParameterInfo.OUT.index();
/** Constant identifying an INOUT parameter */
public static final int INOUT = ISPParameter.ParameterInfo.INOUT.index();
/** Constant identifying a RETURN parameter */
public static final int RETURN_VALUE = ISPParameter.ParameterInfo.RETURN_VALUE.index();
/** Constant identifying a RESULT SET parameter */
public static final int RESULT_SET = ISPParameter.ParameterInfo.RESULT_SET.index();
private Object modelID;
private Object procedureID;
private List<SPParameter> parameters = new ArrayList<SPParameter>();
private String callableName;
private QueryNode query;
private int updateCount = -1;
public String getProcedureCallableName(){
return this.callableName;
}
public void setProcedureCallableName(String callableName){
this.callableName = callableName;
}
public Object getModelID(){
return this.modelID;
}
public void setModelID(Object modelID){
this.modelID = modelID;
}
public Object getProcedureID(){
return this.procedureID;
}
public void setProcedureID(Object procedureID){
this.procedureID = procedureID;
}
public List<SPParameter> getParameters(){
return this.parameters;
}
public void setParameters(List<SPParameter> parameters){
this.parameters = parameters;
}
public void addParameter(SPParameter parameter){
this.parameters.add(parameter);
}
public QueryNode getQueryPlan(){
return this.query;
}
public void setQueryPlan(QueryNode queryNode){
this.query = queryNode;
}
public boolean returnsResultSet() {
for (SPParameter parameter : parameters) {
if (parameter.getParameterType() == ISPParameter.ParameterInfo.RESULT_SET.index()) {
return true;
}
}
return false;
}
public boolean returnsResultParameter() {
for (SPParameter parameter : parameters) {
if (parameter.getParameterType() == ISPParameter.ParameterInfo.RETURN_VALUE.index()) {
return true;
}
}
return false;
}
public int getUpdateCount() {
return updateCount;
}
public void setUpdateCount(int updateCount) {
this.updateCount = updateCount;
}
}