/**
* Print the argument and its type.
*/
protected void printOutputArgument(FieldDefinition argument, Writer writer, AbstractSession session) throws ValidationException {
try {
DatabasePlatform platform = session.getPlatform();
FieldTypeDefinition fieldType;
if (argument.getType() != null) {
fieldType = platform.getFieldTypeDefinition(argument.getType());
if (fieldType == null) {
throw ValidationException.javaTypeIsNotAValidDatabaseType(argument.getType());
}
} else {
fieldType = new FieldTypeDefinition(argument.getTypeName());
}
writer.write(platform.getProcedureArgumentString());
if (platform.shouldPrintOutputTokenAtStart()) {
writer.write(" " + platform.getCreationOutputProcedureToken() + " ");
}
writer.write(argument.getName());
if ((!platform.shouldPrintOutputTokenAtStart()) && platform.shouldPrintOutputTokenBeforeType()) {
writer.write(" " + platform.getCreationOutputProcedureToken());
}
writer.write(" " + fieldType.getName());
if (fieldType.isSizeAllowed() && platform.allowsSizeInProcedureArguments() && ((argument.getSize() != 0) || (fieldType.isSizeRequired()))) {
writer.write("(");
if (argument.getSize() == 0) {
writer.write(Integer.valueOf(fieldType.getDefaultSize()).toString());
} else {
writer.write(Integer.valueOf(argument.getSize()).toString());
}
if (argument.getSubSize() != 0) {
writer.write(",");
writer.write(Integer.valueOf(argument.getSubSize()).toString());
} else if (fieldType.getDefaultSubSize() != 0) {
writer.write(",");
writer.write(Integer.valueOf(fieldType.getDefaultSubSize()).toString());
}
writer.write(")");
}
if ((!platform.shouldPrintOutputTokenAtStart()) && !platform.shouldPrintOutputTokenBeforeType()) {
writer.write(" " + platform.getCreationOutputProcedureToken());
}
} catch (IOException ioException) {
throw ValidationException.fileError(ioException);
}
}