public Argument createArgument(String name, int type, int datatype) throws DDLException { try { Map gprops = (Map) getSpecification().getProperties(); Map props = (Map) getSpecification().getCommandProperties(Specification.CREATE_PROCEDURE); Map bindmap = (Map) props.get("Binding"); String tname = (String) bindmap.get("ARGUMENT"); if (tname != null) { Map typemap = (Map) gprops.get(tname); if (typemap == null) throw new InstantiationException("unable to locate binded object " + tname); Class typeclass = Class.forName((String) typemap.get("Class")); String format = (String) typemap.get("Format"); ProcedureArgument arg = (ProcedureArgument) typeclass.newInstance(); arg.setName(name); arg.setType(type); arg.setDataType(datatype); arg.setFormat(format); return (Argument) arg; } else throw new InstantiationException("unable to locate type " + type + " in table: " + bindmap); } catch (Exception e) { throw new DDLException(e.getMessage()); } }
public Map getCommandProperties() throws DDLException { Map props = (Map) getSpecification().getProperties(); String cols = "", argdelim = (String) props.get("ArgumentListDelimiter"); Map cmdprops = super.getCommandProperties(); Enumeration col_e = args.elements(); while (col_e.hasMoreElements()) { ProcedureArgument arg = (ProcedureArgument) col_e.nextElement(); boolean inscomma = col_e.hasMoreElements(); cols = cols + arg.getCommand(this) + (inscomma ? argdelim : ""); } cmdprops.put("arguments", cols); cmdprops.put("body", body); return cmdprops; }