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

import javax.inject.Inject;

import de.ivu.elect.business.benutzerverwaltung.entity.BenutzerParameter;
import de.ivu.elect.business.benutzerverwaltung.entity.BenutzerParameterLoaderContext;
import de.ivu.elect.business.benutzerverwaltung.entity.BenutzerParameterWerte;
import de.ivu.elect.business.security.control.ElectCommonPrincipal;

public class PrincipalBenutzerParameterLoader extends AbstractBenutzerParameterLoader {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient ElectCommonPrincipal principal;

  public PrincipalBenutzerParameterLoader() {
    super();
  }

  public int resolveIntegerValue(BenutzerParameterWerte benutzerParameterWerte, int defaultValue) {
    return resolveIntegerValue(createContext(benutzerParameterWerte), defaultValue);
  }

  public <V extends Enum< ? >> V resolveEnumValue(BenutzerParameterWerte benutzerParameterWerte, Class<V> enumClass) {
    return resolveEnumValue(createContext(benutzerParameterWerte), enumClass);
  }

  private BenutzerParameterLoaderContext createContext(BenutzerParameterWerte benutzerParameterWerte) {
    return new BenutzerParameterLoaderContext(benutzerParameterWerte);
  }

  @Override
  protected BenutzerParameter getParameter(BenutzerParameterLoaderContext context) {
    String value = principal.getBenutzerEinstellungen().get(context.getTemplate());

    BenutzerParameter result = new BenutzerParameter();
    result.setKey(context.getTemplate().getKey());
    result.setWert(value);

    return result;
  }
}
