package de.ivu.elect.core.exchange.internet;

import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;

import de.ivu.elect.business.internet.control.InternetSeiteCustomDataFactory;
import de.ivu.elect.business.internet.entity.InternetCustomDataCreateContext;
import de.ivu.elect.business.internet.entity.InternetSeiteCustomData;
import de.ivu.elect.business.internet.entity.InternetSeiteTyp;

@RequestScoped // ELECTMUC-1963
public class CoreInternetSeiteCustomDataFactory implements InternetSeiteCustomDataFactory {


  @Inject
  private transient Instance<CoreInternetSeiteTypHandler> handlers;

  @Override
  public InternetSeiteCustomData createCustomData(InternetSeiteTyp internetSeiteTyp, InternetCustomDataCreateContext createContext) {
    for (CoreInternetSeiteTypHandler handler : handlers) {
      if (internetSeiteTyp.equals(handler.getInternetSeiteTyp())) {
        return handler.createCustomData(createContext);
      }
    }

    throw new IllegalStateException("Kein Handler für: " + internetSeiteTyp);
  }

  @Override
  public boolean isSupported(InternetSeiteTyp internetSeiteTyp) {
    for (CoreInternetSeiteTypHandler handler : handlers) {
      if (internetSeiteTyp.equals(handler.getInternetSeiteTyp())) {
        return true;
      }
    }
    return false;
  }
}
