public ProcedureParameter getParameterByName(String param) { for(ProcedureParameter p: this.parameters) { if (p.getName().equals(param)) { return p; } } return null; }
public void addArgument(ProcedureParameter param, Object payload) { if (payload == null) { return; } String nis = param.getNameInSource(); if (nis == null) { nis = param.getName(); } addArgument(this, nis, payload); }
private Class<?> resolveParameterType(String procedureName, String parameterName) { for (ProcedureParameter pp : this.procedure.getParameters()) { if (pp.getName().equalsIgnoreCase(parameterName)) { return DataTypeManager.getDataTypeClass(pp.getRuntimeType()); } } return null; }
FunctionParameter fp = new FunctionParameter(pp.getName(), pp.getRuntimeType(), pp.getAnnotation()); fp.setDatatype(pp.getDatatype(), true, pp.getArrayDimensions()); fp.setLength(pp.getLength());
static String getQueryParameters(Call obj) throws EdmPrimitiveTypeException { StringBuilder sb = new StringBuilder(); final List<Argument> params = obj.getArguments(); if (params != null && params.size() != 0) { Argument param = null; for (int i = 0; i < params.size(); i++) { param = params.get(i); if (param.getDirection() == Direction.IN || param.getDirection() == Direction.INOUT) { if (i != 0) { sb.append("&"); //$NON-NLS-1$ } sb.append(WSUtil.httpURLEncode(param.getMetadataObject().getName())); sb.append(Tokens.EQ); sb.append(WSUtil.httpURLEncode(ODataTypeManager.convertToODataURIValue(param.getArgumentValue().getValue(), ODataTypeManager.odataType(param.getType()).getFullQualifiedName() .getFullQualifiedNameAsString()))); } } } return sb.toString(); }
FunctionParameter fp = new FunctionParameter(pp.getName(), pp.getRuntimeType(), pp.getAnnotation()); fp.setDatatype(pp.getDatatype(), true, pp.getArrayDimensions()); fp.setLength(pp.getLength());
AbstractMetadataRecord getColumn(String paramName, Procedure proc, boolean parameter) throws MetadataException { if (proc.getResultSet() != null) { Column result = proc.getResultSet().getColumnByName(paramName); if (result != null) { return result; } } if (parameter) { List<ProcedureParameter> params = proc.getParameters(); for (ProcedureParameter param:params) { if (param.getName().equalsIgnoreCase(paramName)) { return param; } } } throw new MetadataException(QueryPlugin.Util.getString("SQLParser.alter_procedure_param_doesnot_exist", paramName, proc.getName())); //$NON-NLS-1$ }
FunctionParameter fp = new FunctionParameter(pp.getName(), pp.getRuntimeType(), pp.getAnnotation()); fp.setDatatype(pp.getDatatype(), true, pp.getArrayDimensions()); fp.setLength(pp.getLength());
AbstractMetadataRecord getColumn(String paramName, Procedure proc, boolean parameter) throws MetadataException { if (proc.getResultSet() != null) { Column result = proc.getResultSet().getColumnByName(paramName); if (result != null) { return result; } } if (parameter) { List<ProcedureParameter> params = proc.getParameters(); for (ProcedureParameter param:params) { if (param.getName().equalsIgnoreCase(paramName)) { return param; } } } throw new MetadataException(QueryPlugin.Util.getString("SQLParser.alter_procedure_param_doesnot_exist", paramName, proc.getName())); //$NON-NLS-1$ }
AbstractMetadataRecord getColumn(String paramName, Procedure proc, boolean parameter) throws MetadataException { if (proc.getResultSet() != null) { Column result = proc.getResultSet().getColumnByName(paramName); if (result != null) { return result; } } if (parameter) { List<ProcedureParameter> params = proc.getParameters(); for (ProcedureParameter param:params) { if (param.getName().equalsIgnoreCase(paramName)) { return param; } } } throw new MetadataException(QueryPlugin.Util.getString("SQLParser.alter_procedure_param_doesnot_exist", paramName, proc.getName())); //$NON-NLS-1$ }
this.buffer.append("&"); //$NON-NLS-1$ this.buffer.append(WSUtil.httpURLEncode(param.getMetadataObject().getName())); this.buffer.append(Tokens.EQ); this.executionFactory.convertToODataInput(param.getArgumentValue(), temp);
@Override public void loadMetadata(MetadataFactory factory, ExecutionFactory<Object, Object> executionFactory, Object connectionFactory) throws TranslatorException { Schema s = factory.getSchema(); for (Table t : s.getTables().values()) { if (!t.isPhysical()) { continue; } Column c = t.getColumnByName(multiSourceColumnName); if (c == null) { c = factory.addColumn(multiSourceColumnName, DataTypeManager.DefaultDataTypes.STRING, t); MultiSourceMetadataWrapper.setMultiSourceElementMetadata(c); } } outer: for (Procedure p : s.getProcedures().values()) { if (p.isVirtual()) { continue; } for (ProcedureParameter pp : p.getParameters()) { if (multiSourceColumnName.equalsIgnoreCase(pp.getName())) { continue outer; } } ProcedureParameter pp = factory.addProcedureParameter(multiSourceColumnName, DataTypeManager.DefaultDataTypes.STRING, Type.In, p); pp.setNullType(NullType.Nullable); } }
private static CsdlParameter buildParameter(ProcedureParameter pp, EdmPrimitiveTypeKind odatatype) { CsdlParameter param = new CsdlParameter(); param.setName(pp.getName()); param.setType(odatatype.getFullQualifiedName());
@Test public void testAlterProcedureColumnRename() throws Exception { String ddl = "CREATE FOREIGN PROCEDURE myProc(OUT p1 boolean, p2 varchar, INOUT p3 decimal) " + "RETURNS (r1 varchar, r2 decimal)" + "OPTIONS(RANDOM 'any', UUID 'uuid', NAMEINSOURCE 'nis', ANNOTATION 'desc', UPDATECOUNT '2');" + "ALTER FOREIGN PROCEDURE myProc RENAME PARAMETER p2 TO p2renamed;"; Schema s = helpParse(ddl, "model").getSchema(); Procedure proc = s.getProcedure("myProc"); assertNotNull(proc); assertEquals("p2renamed", proc.getParameters().get(1).getName()); }
@Test public void testAlterProcedureColumnType() throws Exception { String ddl = "CREATE FOREIGN PROCEDURE myProc(OUT p1 boolean, p2 varchar, INOUT p3 decimal) " + "RETURNS (r1 varchar, r2 decimal)" + "OPTIONS(RANDOM 'any', UUID 'uuid', NAMEINSOURCE 'nis', ANNOTATION 'desc', UPDATECOUNT '2');" + "ALTER FOREIGN PROCEDURE myProc ALTER PARAMETER p2 TYPE integer;"; Schema s = helpParse(ddl, "model").getSchema(); Procedure proc = s.getProcedure("myProc"); assertNotNull(proc); assertEquals("p2", proc.getParameters().get(1).getName()); assertEquals("integer", proc.getParameters().get(1).getRuntimeType()); }
@Test public void testAlterProcedureOptions() throws Exception { String ddl = "CREATE FOREIGN PROCEDURE myProc(OUT p1 boolean, p2 varchar, INOUT p3 decimal) " + "RETURNS (r1 varchar, r2 decimal)" + "OPTIONS(RANDOM 'any', UUID 'uuid', NAMEINSOURCE 'nis', ANNOTATION 'desc', UPDATECOUNT '2');" + "ALTER FOREIGN PROCEDURE myProc OPTIONS(SET NAMEINSOURCE 'x');" + "ALTER FOREIGN PROCEDURE myProc ALTER PARAMETER p2 OPTIONS (ADD x 'y');" + "ALTER FOREIGN PROCEDURE myProc OPTIONS(DROP UPDATECOUNT);"; Schema s = helpParse(ddl, "model").getSchema(); Procedure proc = s.getProcedure("myProc"); assertNotNull(proc); assertEquals("x", proc.getNameInSource()); assertEquals("p2", proc.getParameters().get(1).getName()); assertEquals("y", proc.getParameters().get(1).getProperty("x", false)); assertEquals(1, proc.getUpdateCount()); }
for (ProcedureParameter param : procedureRecord.getParameters()) { FunctionParameter fp = new FunctionParameter(); fp.setName(param.getName()); fp.setDescription(param.getAnnotation()); fp.setRuntimeType(param.getRuntimeType());
assertEquals("p1", proc.getParameters().get(0).getName()); assertEquals("boolean", proc.getParameters().get(0).getDatatype().getName()); assertEquals(ProcedureParameter.Type.Out, proc.getParameters().get(0).getType()); assertEquals("p2", proc.getParameters().get(1).getName()); assertEquals("string", proc.getParameters().get(1).getDatatype().getName()); assertEquals(ProcedureParameter.Type.In, proc.getParameters().get(1).getType()); assertEquals("p3", proc.getParameters().get(2).getName()); assertEquals("bigdecimal", proc.getParameters().get(2).getDatatype().getName()); assertEquals(ProcedureParameter.Type.InOut, proc.getParameters().get(2).getType());
assertEquals("p1", proc.getParameters().get(0).getName()); assertEquals("boolean", proc.getParameters().get(0).getDatatype().getName()); assertEquals(ProcedureParameter.Type.Out, proc.getParameters().get(0).getType()); assertEquals("p2", proc.getParameters().get(1).getName()); assertEquals("string", proc.getParameters().get(1).getDatatype().getName()); assertEquals(ProcedureParameter.Type.In, proc.getParameters().get(1).getType()); assertEquals("p3", proc.getParameters().get(2).getName()); assertEquals("bigdecimal", proc.getParameters().get(2).getDatatype().getName()); assertEquals(ProcedureParameter.Type.InOut, proc.getParameters().get(2).getType());