public ProcedureParameterTableModel(Procedure procedure, ProjectController mediator, Object eventSource) { super(mediator, eventSource, new ArrayList<>(procedure.getCallParameters())); this.procedure = procedure; }
@Override public boolean isNameInUse(String name) { // it doesn't matter if we create a parameter with a duplicate name.. parameters are positional anyway.. // still try to use unique names for visual consistency Procedure procedure = (Procedure) parent; for (ProcedureParameter parameter : procedure.getCallParameters()) { if (name.equals(parameter.getName())) { return true; } } return false; } });
protected boolean isNameInUse(String name, Object namingContext) { // it doesn't matter if we create a parameter with // a duplicate name.. parameters are positional anyway.. // still try to use unique names for visual consistency Procedure procedure = (Procedure) namingContext; Iterator it = procedure.getCallParameters().iterator(); while (it.hasNext()) { ProcedureParameter parameter = (ProcedureParameter) it.next(); if (name.equals(parameter.getName())) { return true; } } return false; } }
protected ProcedureParameter[] getLastProcedureParameters(Procedure procedure) { List<ProcedureParameter> procedureParameterList = new ArrayList<ProcedureParameter>(); ProcedureParameter[] parameters = new ProcedureParameter[0]; String procedureParams = preferences.getProcedureParams(); if (procedureParams.isEmpty()) { return procedureParameterList.toArray(parameters); } for (String procedureParamName : procedureParams.split(",")) { for (ProcedureParameter procedureParameter : procedure.getCallParameters()) { if (procedureParameter.getName().equals(procedureParamName)) { procedureParameterList.add(procedureParameter); } } } return procedureParameterList.toArray(parameters); } }
public PreparedStatement createStatement() throws Exception { long t1 = System.currentTimeMillis(); this.callParams = getProcedure().getCallParameters(); this.values = new ArrayList(callParams.size()); initValues(); String sqlStr = createSqlString(); if (QueryLogger.isLoggable()) { // need to convert OUT/VOID parameters to loggable strings long time = System.currentTimeMillis() - t1; List loggableParameters = new ArrayList(values.size()); Iterator it = values.iterator(); while (it.hasNext()) { Object val = it.next(); if (val instanceof NotInParam) { val = val.toString(); } loggableParameters.add(val); } QueryLogger.logQuery(sqlStr, loggableParameters, time); } CallableStatement stmt = connection.prepareCall(sqlStr); initStatement(stmt); return stmt; }
/** * Creates and returns a ResultDescriptor for the stored procedure parameters. */ public static ResultDescriptor createDescriptor( Procedure procedure, ExtendedTypeMap typeConverters) { ResultDescriptor descriptor = new ResultDescriptor(typeConverters); Iterator it = procedure.getCallParameters().iterator(); while (it.hasNext()) { descriptor.addDbAttribute(new ProcedureParameterWrapper( (ProcedureParameter) it.next())); } descriptor.index(); return descriptor; }
/** * Set IN and OUT parameters. */ protected void initStatement(CallableStatement stmt) throws Exception { if (values != null && values.size() > 0) { List<ProcedureParameter> params = getProcedure().getCallParameters(); int len = values.size(); for (int i = 0; i < len; i++) { ProcedureParameter param = params.get(i); // !Stored procedure parameter can be both in and out // at the same time if (param.isOutParam()) { setOutParam(stmt, param, i + 1); } if (param.isInParameter()) { setInParam(stmt, param, values.get(i), i + 1); } } } }
/** * Set IN and OUT parameters. */ protected void initStatement(CallableStatement stmt) throws Exception { if (values != null && values.size() > 0) { List params = getProcedure().getCallParameters(); int len = values.size(); for (int i = 0; i < len; i++) { ProcedureParameter param = (ProcedureParameter) params.get(i); // !Stored procedure parameter can be both in and out // at the same time if (param.isOutParam()) { setOutParam(stmt, param, i + 1); } if (param.isInParameter()) { setInParam(stmt, param, values.get(i), i + 1); } } } }
void validate(Procedure procedure, ValidationResult validationResult) { validateName(procedure, validationResult); // check that return value is present if (procedure.isReturningValue()) { List<ProcedureParameter> parameters = procedure.getCallParameters(); if (parameters.isEmpty()) { addFailure( validationResult, procedure, "Procedure '%s' returns a value, but has no parameters", procedure.getName()); } } }
public void validateObject(ProjectPath treeNodePath, Validator validator) { Procedure procedure = (Procedure) treeNodePath.getObject(); validateName(procedure, treeNodePath, validator); // check that return value is present if (procedure.isReturningValue()) { List parameters = procedure.getCallParameters(); if (parameters.size() == 0) { validator.registerWarning( "Procedure returns a value, but has no parameters.", treeNodePath); } } }
/** * Performs recusrive traversal of an Iterator of Cayenne Procedure objects. */ public void traverseProcedures(Iterator procedures, ProjectPath path) { if (sort) { procedures = Util.sortedIterator( procedures, ProjectTraversal.mapObjectComparator); } while (procedures.hasNext()) { Procedure procedure = (Procedure) procedures.next(); ProjectPath procedurePath = path.appendToPath(procedure); handler.projectNode(procedurePath); if (handler.shouldReadChildren(procedure, path)) { this.traverseProcedureParameters( procedure.getCallParameters().iterator(), procedurePath); } } }
/** * Creates and binds a PreparedStatement to execute query SQL via JDBC. */ public PreparedStatement createStatement() throws Exception { this.callParams = getProcedure().getCallParameters(); this.values = new ArrayList<>(callParams.size()); initValues(); String sqlStr = createSqlString(); if (logger.isLoggable()) { // need to convert OUT/VOID parameters to loggable strings ParameterBinding[] parameterBindings = new ParameterBinding[values.size()]; for (int i=0; i<values.size(); i++) { ProcedureParameter procedureParameter = callParams.get(i); Object value = values.get(i); if(value instanceof NotInParam) { value = value.toString(); } parameterBindings[i] = new ParameterBinding(value, procedureParameter.getType(), procedureParameter.getPrecision()); } logger.logQuery(sqlStr, parameterBindings); } CallableStatement stmt = connection.prepareCall(sqlStr); initStatement(stmt); return stmt; }
List parameters = getProcedure().getCallParameters(); for (int i = 0; i < parameters.size(); i++) { ProcedureParameter parameter = (ProcedureParameter) parameters.get(i);
private void searchInProcedures(Pattern pattern, List<SearchResultEntry> result, DataMap dataMap) { for (Procedure proc : dataMap.getProcedures()) { if (match(proc.getName(), pattern)) { result.add(new SearchResultEntry(proc, proc.getName())); } for(ProcedureParameter param : proc.getCallParameters()) { if(match(param.getName(), pattern)) { result.add(new SearchResultEntry(param, proc.getName() + '.' + param.getName())); } } } }
List parameters = getProcedure().getCallParameters(); for (int i = 0; i < parameters.size(); i++) { ProcedureParameter parameter = (ProcedureParameter) parameters.get(i);
public ValidationResult visitProcedure(Procedure procedure) { procedureValidator.validate(procedure, validationResult); ProcedureParameter parameter = procedure.getResultParam(); if (parameter != null) { visitProcedureParameter(parameter); } for (ProcedureParameter procPar : procedure.getCallOutParameters()) { visitProcedureParameter(procPar); } for (ProcedureParameter procPar : procedure.getCallParameters()) { visitProcedureParameter(procPar); } return validationResult; }
/** * Helper method that reads OUT parameters of a CallableStatement. */ protected void readProcedureOutParameters(CallableStatement statement, OperationObserver delegate) throws SQLException, Exception { long t1 = System.currentTimeMillis(); // build result row... DataRow result = null; List<ProcedureParameter> parameters = getProcedure().getCallParameters(); for (int i = 0; i < parameters.size(); i++) { ProcedureParameter parameter = parameters.get(i); if (!parameter.isOutParam()) { continue; } if (result == null) { result = new DataRow(2); } ColumnDescriptor descriptor = new ColumnDescriptor(parameter); ExtendedType type = dataNode.getAdapter().getExtendedTypes().getRegisteredType(descriptor.getJavaClass()); Object val = type.materializeObject(statement, i + 1, descriptor.getJdbcType()); result.put(descriptor.getDataRowKey(), val); } if (result != null && !result.isEmpty()) { // treat out parameters as a separate data row set dataNode.getJdbcEventLogger().logSelectCount(1, System.currentTimeMillis() - t1); delegate.nextRows(query, Collections.singletonList(result)); } }
List<ProcedureParameter> parameters = getProcedure().getCallParameters(); for (int i = 0; i < parameters.size(); i++) { ProcedureParameter parameter = parameters.get(i);
/** * Prints itself as XML to the provided XMLEncoder. * * @since 1.1 */ public void encodeAsXML(XMLEncoder encoder) { encoder.print("<procedure name=\""); encoder.print(Util.encodeXmlAttribute(getName())); encoder.print('\"'); if (getSchema() != null && getSchema().trim().length() > 0) { encoder.print(" schema=\""); encoder.print(getSchema().trim()); encoder.print('\"'); } if (getCatalog() != null && getCatalog().trim().length() > 0) { encoder.print(" catalog=\""); encoder.print(getCatalog().trim()); encoder.print('\"'); } if (isReturningValue()) { encoder.print(" returningValue=\"true\""); } encoder.println('>'); encoder.indent(1); encoder.print(getCallParameters()); encoder.indent(-1); encoder.println("</procedure>"); }
/** * Prints itself as XML to the provided XMLEncoder. * * @since 1.1 */ public void encodeAsXML(XMLEncoder encoder) { encoder.print("<procedure name=\""); encoder.print(Util.encodeXmlAttribute(getName())); encoder.print('\"'); if (getSchema() != null && getSchema().trim().length() > 0) { encoder.print(" schema=\""); encoder.print(getSchema().trim()); encoder.print('\"'); } if (getCatalog() != null && getCatalog().trim().length() > 0) { encoder.print(" catalog=\""); encoder.print(getCatalog().trim()); encoder.print('\"'); } if (isReturningValue()) { encoder.print(" returningValue=\"true\""); } encoder.println('>'); encoder.indent(1); encoder.print(getCallParameters()); encoder.indent(-1); encoder.println("</procedure>"); }