package de.ivu.elect.presentation.ui;

import java.util.function.Consumer;

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

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

import de.ivu.elect.jee.presentation.view.ViewMarker;
import de.ivu.elect.presentation.View;

@RequestScoped
public class ViewIterator {

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

  @View
  @Inject
  private transient Instance<ViewMarker> views;

  public void iterateViews(Consumer<Object> viewConsumer) {
    LOG.info("Iteriere über alle bekannten Views");
    // !!!!!!!!!!!
    // Falls beim Start der Anwendung hier eine Fehlermeldung erscheint, gibt es wahrscheinlich einen View, der ohne Scope annotiert ist und deshalb instantiert wird
    // !!!!!!!!!!!
    long count = 0;
    for (Object view : views /* !! HINWEIS LESEN !!*/) {
      count++;
      viewConsumer.accept(view);
    }

    LOG.info("Iteriere über alle bekannten Views - done: " + count);
  }

}
