
package de.ivu.elect.presentation.exchange.action;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;

import de.ivu.elect.business.datei.boundary.DateiConversationSelect;
import de.ivu.elect.business.datei.boundary.DateiImportConversationSelect;
import de.ivu.elect.business.datei.boundary.DateiImportExtendedDAO;
import de.ivu.elect.business.datei.entity.DateiImport;
import de.ivu.elect.business.exchange.boundary.DateiImportReImport;

public class DateiImportReImportAction extends AbstractDateiImportAction {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient DateiConversationSelect dateiConversationSelect;

  @Inject
  private transient DateiImportConversationSelect dateiImportSelection;

  @Inject
  private transient DateiImportReImport dateiImportReImport;

  @Inject
  private transient DateiImportExtendedDAO dateiImportExtendedDAO;

  public DateiImportReImportAction() {
    super();
  }

  @Override
  public boolean isDisabledInternal(@Nonnull DateiImport dateiImport) {
    return /* ELECT-14271 */ !existsImportFileFormat() || !dateiImport.isReImportMoeglich();
  }

  @Nullable
  @Override
  public String doIt(DateiImport dateiImport) {
    dateiImportReImport.sezteStatusAufReImport(dateiImport);

    dateiImport = dateiImportExtendedDAO.refresh(dateiImport);

    if (dateiImport.isImportierenMoeglich() || dateiImport.isFormatFestlegenMoeglich()) {
      dateiImportSelection.setEntity(dateiImport.getPk());

      dateiConversationSelect.setEntity(dateiImport.getDatei());

      if (dateiImport.isImportierenMoeglich()) {
        return importDescriptionState.getImportBestaetigenViewId();
      }

      return importDescriptionState.getImportFormatFestlegenViewId();
    }

    return null;
  }

  @Override
  public String getLabelKey() {
    return "datei.import.edit.action.erneut.importieren";
  }

  @Override
  public String getIcon() {
    return appIcons.getIconRefresh();
  }
}
