/** * Add users and roles to the string representation of a JSON msg. * * @param base * @param singleRoles * @param groupRoles * @param users * @return the base String with the necessary fields to add users and roles */ private String concatUsersAndRoles( String base, Collection<String> singleRoles, Collection<String> groupRoles, Collection<String> users) { // insert roles to users mapping JSONObject res = new JSONObject(base); JSONArray userArray = new JSONArray(users); for (String role : singleRoles) { JSONObject o = new JSONObject(); o.put("title", "Role: " + role); o.put("type", "string"); o.put("enum", userArray); o.put("required", true); res.getJSONObject("schema").put(SINGLE_USER_KEY_PREFIX + role, o); } for (String role : groupRoles) { JSONObject items = new JSONObject(); items.put("type", "string"); items.put("enum", userArray); JSONObject o = new JSONObject(); o.put("title", "Group Role: " + role); o.put("type", "array"); o.put("items", items); o.put("minItems", 1); o.put("required", true); res.getJSONObject("schema").put(GROUP_USER_KEY_PREFIX + role, o); } JSONObject rolesForm = new JSONObject(); rolesForm.put("type", "fieldset"); rolesForm.put("title", "Roles Assignment"); JSONArray items = new JSONArray(); for (String role : singleRoles) { JSONObject o = new JSONObject(); o.put("key", SINGLE_USER_KEY_PREFIX + role); items.put(o); } for (String role : groupRoles) { JSONObject o = new JSONObject(); o.put("key", GROUP_USER_KEY_PREFIX + role); o.put("type", "checkboxes"); items.put(o); } rolesForm.put("items", items); JSONArray form = res.getJSONArray("form"); // remove this object and insert it back at the end Object submitButton = form.remove(form.length() - 1); form.put(rolesForm); form.put(submitButton); return res.toString(); }