
package de.ivu.elect.business.benutzerverwaltung.boundary;

import java.io.Serializable;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.ivu.elect.business.benutzerverwaltung.control.RechteKonfigurationLesen;
import de.ivu.elect.business.mandant.entity.MandantPK;
import de.ivu.elect.business.security.UseCasePermission;


import static java.util.Collections.emptySet;

/**
 *  on 05.06.2015.
 */
@ApplicationScoped
public class RechteKonfigurationStore implements Serializable {

  private static final long serialVersionUID = 1L;

  private static final Logger LOG = LoggerFactory.getLogger(RechteKonfigurationStore.class);

  @Inject
  private transient RechteKonfigurationLesen rechteKonfigurationLesen;

  private final Map<MandantPK, Set<UseCasePermission>> rechteFuerTestmodus = new ConcurrentHashMap<>();

  public Set<UseCasePermission> getRechteFuerTestmodus(MandantPK mandantPK) {
    if (mandantPK == null) {
      return emptySet();
    }
    return rechteFuerTestmodus.computeIfAbsent(mandantPK, rechteKonfigurationLesen::liesRechteFuerTestModus);
  }

  public void invalidateRechteFuerTestmodus() {
    LOG.info("invalidateRechteFuerTestmodus");
    rechteFuerTestmodus.clear();
  }
}
