package com.airlock.iam.admin.application.service.permission;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Set;

public class AdminappPagePermissionsService {
   private final boolean inRecoveryMode;
   private final Set<PagePermissionsProvider> permissionsProviders;

   public PagesPermissions pagesPermissions() {
      PagesPermissions.PagesPermissionsBuilder builder = PagesPermissions.builder();
      this.permissionsProviders
         .stream()
         .filter(provider -> !this.inRecoveryMode || provider.applicableInRecoveryMode())
         .forEach(provider -> builder.page(provider.page().getPageName(), provider.getPagePermissions()));
      return builder.build();
   }

   @SuppressFBWarnings(justification = "generated code")
   public AdminappPagePermissionsService(boolean inRecoveryMode, Set<PagePermissionsProvider> permissionsProviders) {
      this.inRecoveryMode = inRecoveryMode;
      this.permissionsProviders = permissionsProviders;
   }
}
