private static boolean processCommand(CommandTarget commandTarget, StringBuilder structFile) { StringBuilder structString = new StringBuilder(); try { int paramNumber = 1; String command = commandTarget.getCommandName(); List<Argument> arguments = commandTarget.getOptionParser().getArguments(); List<Option> options = commandTarget.getOptionParser().getOptions(); structString.append("\nstruct " + getProperName(command, STRUCT_NAME) + " {\n"); // This is to ensure at least one non-optional fields structString .append("\t") .append(paramNumber++) .append(":") .append("i16 argsId=") .append(argsCounter.incrementAndGet()) .append(",\n"); for (int i = 0; i < arguments.size(); i++) { Argument argument = arguments.get(i); structString .append("\t") .append(paramNumber++) .append(":") .append(" string ") .append(getProperName(argument.getArgumentName(), STRUCT_FIELD_NAME)); if (options.size() > 0) structString.append(",\n"); else structString.append("\n"); } for (int i = 0; i < options.size(); i++) { Option option = options.get(i); String thriftType = getThriftDataType(option.getDataType()); String thriftName = getProperName(option.getLongOption(), STRUCT_FIELD_NAME); structString .append("\t") .append(paramNumber++) .append(":") .append((option.isRequired() ? "" : "optional ")) .append(thriftType) .append(" ") .append(thriftName); String defaultValue = option.getUnspecifiedDefaultValue(); if (defaultValue != null && isNumericStringOrBoolean(option.getDataType())) { // Check for numeric or string and boolean dont allow collections structString .append(" = ") .append(quoteStringOptionValue(defaultValue, option.getDataType())); } if (i < options.size() - 1) structString.append(",\n"); else structString.append("\n"); allKindsType.add(option.getDataType().getSimpleName()); } structString.append("\n}\n"); structFile.append(structString.toString()); return true; } catch (RuntimeException e) { System.out.println( "Command " + commandTarget.getCommandName() + " not supported bcoz " + e.getMessage()); e.printStackTrace(); return false; } }
private static boolean argsStructRequired(CommandTarget tgr) { if ((tgr.getOptionParser().getArguments().size() + tgr.getOptionParser().getOptions().size()) > 0) return true; else return false; }