package de.skuzzle.polly.sdk.httpv2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import de.skuzzle.polly.sdk.User;
import de.skuzzle.polly.sdk.roles.RoleManager;
import de.skuzzle.polly.sdk.roles.SecurityObject;
public class MenuEntry implements SecurityObject, Comparable<MenuEntry> {
private final String name;
private final String url;
private final String description;
private final Set<String> permissions;
private final List<MenuEntry> subEntries;
public MenuEntry(String name, String url, String description, String... permissions) {
super();
this.name = name;
this.url = url;
this.description = description;
this.permissions = new HashSet<String>(Arrays.asList(permissions));
this.subEntries = new ArrayList<>();
}
public void addSubEntry(MenuEntry e) {
this.subEntries.add(e);
}
public boolean mustRenderSubEntries(User user, RoleManager roles) {
for (final MenuEntry e : this.subEntries) {
if (roles.canAccess(user, e)) {
return true;
}
}
return false;
}
public Collection<MenuEntry> getSubEntries() {
return this.subEntries;
}
public String getName() {
return this.name;
}
public String getUrl() {
return this.url;
}
public String getDescription() {
return this.description;
}
@Override
public Set<String> getRequiredPermission() {
return this.permissions;
}
@Override
public int hashCode() {
return Math.abs(super.hashCode());
}
@Override
public int compareTo(MenuEntry other) {
return this.name.compareTo(other.name);
}
}