String[] getStringValues() { List<String> values = new ArrayList<>(); for (ActionArgument argument : getArguments()) { values.add(argument.getStringValue()); } return values.toArray(new String[0]); }
// region toJson/toString() public JSONObject toJson() { JSONObject jsonObject = new JSONObject(); try { if (isRootRequired()) { jsonObject.put("root", true); } if (optional) { jsonObject.put("optional", true); } jsonObject.put("name", getName()); if (getArguments().length > 0) { JSONArray jsonArray = new JSONArray(); for (ActionArgument argument : getArguments()) { jsonArray.put(argument.toJson()); } jsonObject.put("arguments", jsonArray); } jsonObject.put("description", getDescription()); jsonObject.put("category", getCategory().toString()); if (failure != null) { jsonObject.put("failure", failure); } } catch (JSONException e) { e.printStackTrace(); } return jsonObject; }
// todo - dirty to be refactor public void parseValues(String... values) throws ActionParseException { ActionArgument[] arguments = getArguments(); if (arguments.length != values.length) { throw new ActionParseException("Invalid number of arguments for action " + getName()); } for (int i = 0; i < arguments.length; i++) { try { arguments[i].parseValue(values[i]); } catch (Exception e) { throw new ActionParseException(e.getMessage()); } } List<Object> vals = new ArrayList<>(); for (ActionArgument argument : arguments) { vals.add(argument.getValue()); } setValues(vals.toArray(new Object[0])); }