package org.xcolab.view.pages.proposals.tabs; import org.xcolab.view.pages.proposals.utils.context.ProposalsContextWrapper; import java.util.function.Predicate; public enum ProposalTabAccess implements ProposalTabCanAccessAlgorithm { ALWAYS(contextWrapper -> true), NEVER(contextWrapper -> false), PROPOSAL_ADMIN(contextWrapper -> contextWrapper.getPermissions().getCanAdminProposal()), ADMIN(contextWrapper -> contextWrapper.getPermissions().getCanAdminAll()), EDIT(contextWrapper -> contextWrapper.getPermissions().getCanEdit()) ; private final Predicate<ProposalsContextWrapper> predicate; ProposalTabAccess(Predicate<ProposalsContextWrapper> predicate) { this.predicate = predicate; } @Override public boolean canAccess(ProposalsContextWrapper contextWrapper) { return predicate.test(contextWrapper); } }