
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 String getLabelKey() {
    return "datei.import.edit.action.erneut.importieren";
  }

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

  @Override
  public boolean isDisabledInternal(@Nonnull DateiImport entity) {
    return !entity.isReImportMoeglich();
  }

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

    entity = dateiImportExtendedDAO.refresh(entity);

    if (entity.isImportierenMoeglich() || entity.isFormatFestlegenMoeglich()) {
      dateiImportSelection.setEntity(entity.getPk());
      dateiConversationSelect.setEntity(entity.getDatei());

      if (entity.isImportierenMoeglich()) {
        return importDescriptionState.getImportBestaetigenViewId();
      }
      return importDescriptionState.getImportFormatFestlegenViewId();
    }

    return null;
  }
}
