package com.airbnb.shiro; import com.google.common.collect.ImmutableSet; import lombok.Getter; import lombok.Setter; import org.apache.shiro.authz.Permission; import org.apache.shiro.authz.permission.WildcardPermission; import org.joda.time.Duration; import java.util.Collection; import java.util.Collections; import java.util.Set; public class UserGroup { @Getter @Setter private String defaultConnector; @Getter @Setter private String defaultSchema; @Getter private Set<Permission> permissions = Collections.emptySet(); @Setter private Set<String> groups = Collections.emptySet(); @Setter private String timeout; private Duration queryTimeout; @Getter @Setter private String accessLevel; public boolean representedByGroupStrings(Collection<String> groups) { for (String group : groups) { if (this.representedByGroupString(group)) { return true; } } return false; } public boolean representedByGroupString(String group) { return this.groups.contains(group); } public void setPermissions(Set<String> permissions) { ImmutableSet.Builder<Permission> builder = ImmutableSet.builder(); for (String permission : permissions) { builder.add(new WildcardPermission(permission)); } this.permissions = builder.build(); } public Duration getQueryTimeout() { if (queryTimeout == null) { io.dropwizard.util.Duration duration = io.dropwizard.util.Duration.parse(timeout); queryTimeout = Duration.millis(duration.toMilliseconds()); } return queryTimeout; } }