package org.geoserver.web.security; import java.util.Arrays; import java.util.List; import org.springframework.security.core.userdetails.User; import org.apache.commons.beanutils.BeanUtils; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.StringResourceModel; public class ConfirmRemovalUserPanel extends Panel { List<User> roots; public ConfirmRemovalUserPanel(String id, User... roots) { this(id, Arrays.asList(roots)); } public ConfirmRemovalUserPanel(String id, List<User> roots) { super(id); this.roots = roots; // add roots WebMarkupContainer root = new WebMarkupContainer("rootObjects"); root.add(new Label("rootObjectNames", names(roots))); root.setVisible(!roots.isEmpty()); add(root); // removed objects root (we show it if any removed object is on the list) WebMarkupContainer removed = new WebMarkupContainer("removedObjects"); add(removed); // removed workspaces WebMarkupContainer rulesRemoved = new WebMarkupContainer("rulesRemoved"); removed.add(rulesRemoved); List<User> rules = roots; if (rules.size() == 0) rulesRemoved.setVisible(false); rulesRemoved.add(new Label("rules", names(rules))); } String names(List objects) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < objects.size(); i++) { sb.append(name(objects.get(i))); if (i < (objects.size() - 1)) sb.append(", "); } return sb.toString(); } String name(Object object) { try { return (String) BeanUtils.getProperty(object, "username"); } catch (Exception e) { throw new RuntimeException("A data object that does not have " + "a 'name' property has been used, this is unexpected", e); } } protected StringResourceModel canRemove(User data) { return null; } }