
package de.ivu.elect.presentation.gebietsbaum;

import java.util.ArrayList;
import java.util.List;

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

import de.ivu.elect.business.gebietsbaum.boundary.GebietSessionSelect;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.jee.faces.FacesContextUtil;
import de.ivu.elect.presentation.gebietsbaum.tree.AbstractNoStoreGebietsbaumView;


import static org.apache.commons.lang3.StringUtils.isBlank;

@RequestScoped
@Named(GebietsbaumAutoComplete.COMPONENT_NAME)
public class GebietsbaumAutoComplete {

  public static final String COMPONENT_NAME = "gebietsbaumAutoComplete";

  public static final int LIMIT = 10;

  @Inject
  private transient GebietsbaumAutoCompleteGebietsCache gebietsbaumAutoCompleteGebietsCache;

  @Inject
  protected transient GebietSessionSelect gebietSelect;

  @Inject
  private transient AbstractNoStoreGebietsbaumView gebietsbaumView;

  private Gebiet gebiet;

  public Gebiet getGebiet() {
    return gebiet;
  }

  public void setGebiet(Gebiet gebiet) {
    this.gebiet = gebiet;
  }

  public void select() {
    if (getGebiet() != null) {
      gebietSelect.setEntity(getGebiet().getPk());
      gebietsbaumView.reset();
    }

    FacesContextUtil.redirectToView(FacesContextUtil.getCurrentViewId());
  }

  public List<Gebiet> onComplete(String value) {
    if (isBlank(value)) {
      return new ArrayList<>();
    }

    return gebietsbaumAutoCompleteGebietsCache.findeGebiet(value, LIMIT);
  }




}
