package com.airlock.iam.saml2.infrastructure.plugin;

import com.airlock.iam.elog.api.ELogger;
import com.airlock.iam.elog.api.ELoggerFactory;
import com.sun.identity.plugin.datastore.DataStoreProviderException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public final class DataStoreProviderImpl extends DataStoreProviderAdapter {
   private static final ELogger LOG = ELoggerFactory.getLogger(DataStoreProviderImpl.class);
   private String componentName;

   @Override
   public void init(String component) {
      this.componentName = component;
   }

   @Override
   public Set<String> getAttribute(String userID, String attrName) throws DataStoreProviderException {
      LOG.debug(this.getClass().getSimpleName() + " " + this.componentName + ": Ignoring request for attribute '" + attrName + "' for user '" + userID + "'");
      return new HashSet<>();
   }

   @Override
   public Map<String, Set<String>> getAttributes(String userID, Set<String> attrNames) {
      LOG.debug(this.getClass().getSimpleName() + " " + this.componentName + ": Ignoring request for attributes '" + attrNames + "' for user '" + userID + "'");
      return new HashMap<>();
   }

   @Override
   public void setAttributes(String userID, Map<String, Set<String>> attrMap) {
      for (Object attrName : attrMap.keySet()) {
         LOG.debug(
            this.getClass().getSimpleName()
               + " "
               + this.componentName
               + ": Not storing attribute '"
               + attrName
               + "' for user '"
               + userID
               + "' (not implemented)"
         );
      }
   }

   @Override
   public String getUserID(String realm, Map<String, Set<String>> avPairs) {
      return null;
   }
}
