public static String generatePermissionsSection(List<PermissionNode> nodes) { StringBuilder permissionsSection = new StringBuilder(); if(nodes.size() > 0) { permissionsSection.append("Permissions\n"); permissionsSection.append("===========\n\n"); int nodeLength = "Node".length(), descriptionLength = "Description".length(), defaultRoleLength = "Default Role".length(); for(PermissionNode permissionNode : nodes) { if(permissionNode.getNode().length() > nodeLength) nodeLength = permissionNode.getNode().length(); if(permissionNode.getDescription().length() > descriptionLength) descriptionLength = permissionNode.getDescription().length(); if(permissionNode.getDefaultRole().length() > defaultRoleLength) defaultRoleLength = permissionNode.getDefaultRole().length(); } String border = createStringOfLength(nodeLength, '=') + ' ' + createStringOfLength(descriptionLength, '=') + ' ' + createStringOfLength(defaultRoleLength, '='); permissionsSection.append(border).append('\n'); permissionsSection.append(padToLength("Node", nodeLength + 1)).append(padToLength("Description", descriptionLength + 1)).append(padToLength("Default Role", defaultRoleLength + 1)).append('\n'); permissionsSection.append(border).append('\n'); for(PermissionNode permissionNode : nodes) { permissionsSection.append(padToLength(permissionNode.getNode(), nodeLength + 1)).append(padToLength(permissionNode.getDescription(), descriptionLength + 1)).append(padToLength(permissionNode.getDefaultRole(), defaultRoleLength + 1)).append('\n'); } permissionsSection.append(border).append('\n'); } return permissionsSection.toString(); }