package io.evercam; import java.util.ArrayList; import java.util.Arrays; import java.util.Locale; public class Right { private String rightsString; private final String SNAPSHOT = "snapshot"; private final String VIEW = "view"; private final String EDIT = "edit"; private final String DELETE = "delete"; private final String LIST = "list"; private final String GRANT_SNAPSHOT = "grant~snapshot"; private final String GRANT_VIEW = "grant~view"; private final String GRANT_EDIT = "grant~edit"; private final String GRANT_DELETE = "grant~delete"; private final String GRANT_LIST = "grant~list"; public final static String FULL_RIGHTS = "Snapshot,View,Edit,List"; public final static String READ_ONLY = "Snapshot,List"; public Right(String rightsString) { this.rightsString = rightsString.toLowerCase(Locale.UK); } private Right() { //Private constructor } public ArrayList<String> toArray() { String[] rightsArray = rightsString.split(","); return new ArrayList<String>(Arrays.asList(rightsArray)); } public boolean canTakeSnapshot() { return toArray().contains(SNAPSHOT); } public boolean canEdit() { return toArray().contains(EDIT); } public boolean canView() { return toArray().contains(VIEW); } public boolean canDelete() { return toArray().contains(DELETE); } public boolean canList() { return toArray().contains(LIST); } public boolean canGrantSnapshot() { return toArray().contains(GRANT_SNAPSHOT); } public boolean canGrantEdit() { return toArray().contains(GRANT_EDIT); } public boolean canGrantView() { return toArray().contains(GRANT_VIEW); } public boolean canGrantDelete() { return toArray().contains(GRANT_DELETE); } public boolean canGrantList() { return toArray().contains(GRANT_LIST); } /** * Validate if the user has full right on this camera. * * @return true if user has all rights except 'delete' */ public boolean isFullRight() { return canTakeSnapshot() && canView() && canEdit() && canList(); } /** * Validate if user has read only rights on this camera */ public boolean isReadOnly() { return canTakeSnapshot() && canList() && !canEdit() && !canView(); } @Override public String toString() { return rightsString; } }