package io.lumify.core.security;
import org.securegraph.Visibility;
public class LumifyVisibility {
public static final String SUPER_USER_VISIBILITY_STRING = "lumify";
private final Visibility visibility;
public LumifyVisibility() {
this.visibility = new Visibility("");
}
public LumifyVisibility(String visibility) {
if (visibility == null || visibility.length() == 0) {
this.visibility = new Visibility("");
} else {
this.visibility = addSuperUser(visibility);
}
}
public LumifyVisibility(Visibility visibility) {
if (visibility == null || visibility.getVisibilityString().length() == 0
|| visibility.getVisibilityString().contains(SUPER_USER_VISIBILITY_STRING)) {
this.visibility = visibility;
} else {
this.visibility = addSuperUser(visibility.getVisibilityString());
}
}
public Visibility getVisibility() {
return visibility;
}
private Visibility addSuperUser(String visibility) {
return new Visibility("(" + visibility + ")|" + SUPER_USER_VISIBILITY_STRING);
}
@Override
public String toString() {
return getVisibility().toString();
}
public static Visibility and(Visibility visibility, String additionalVisibility) {
if (visibility.getVisibilityString().length() == 0) {
return new Visibility(additionalVisibility);
}
return new Visibility("(" + visibility.getVisibilityString() + ")&(" + additionalVisibility + ")");
}
}