
package de.ivu.elect.presentation.exchange;

import java.util.Arrays;
import java.util.List;

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

import de.ivu.elect.business.datei.boundary.CsvDateiConversationSelect;
import de.ivu.elect.business.datei.boundary.CsvDateiEdit;
import de.ivu.elect.business.datei.boundary.CsvDateiExtendedDAO;
import de.ivu.elect.business.datei.boundary.DateiImportConversationSelect;
import de.ivu.elect.business.datei.entity.CsvAnfuehrungszeichen;
import de.ivu.elect.business.datei.entity.CsvDatei;
import de.ivu.elect.business.datei.entity.CsvTrennzeichen;
import de.ivu.elect.business.datei.entity.CsvZeichensatz;
import de.ivu.elect.jee.faces.FacesContextUtil;
import de.ivu.elect.jee.presentation.redirect.Redirect;

@Named
@RequestScoped
public class CsvKonfigurationView {

  @Inject
  private transient CsvDateiExtendedDAO csvDateiExtendedDAO;

  @Inject
  private transient DateiImportConversationSelect dateiImportSelect;

  @Inject
  private transient CsvDateiConversationSelect csvDateiSelect;

  @Inject
  private transient CsvDateiEdit csvDateiEdit;

  public CsvKonfigurationView() {
    super();
  }

  private void loadCsvDatei() {
    CsvDatei csvDatei = csvDateiExtendedDAO.findByPrimaryKey(dateiImportSelect.getEntity().getDatei().getPk());
    csvDateiSelect.setEntity(csvDatei);
  }

  public CsvDatei getCsvDatei() {
    CsvDatei csvDatei = csvDateiSelect.getEntity();
    if (csvDatei == null) {
      loadCsvDatei();
    }
    return csvDateiSelect.getEntity();
  }

  public List<CsvTrennzeichen> getTrennzeichenValues() {
    return Arrays.asList(CsvTrennzeichen.values());
  }

  public List<CsvAnfuehrungszeichen> getAnfuehrungszeichenValues() {
    return Arrays.asList(CsvAnfuehrungszeichen.values());
  }

  public List<CsvZeichensatz> getZeichensatzValues() {
    return Arrays.asList(CsvZeichensatz.values());
  }

  @Redirect
  public String uebernehmen() {
    csvDateiEdit.save(csvDateiSelect.getEntity());
    return FacesContextUtil.getCurrentViewId();
  }
}
