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

import javax.inject.Inject;

import org.apache.deltaspike.core.api.scope.ConversationGroup;

import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.jee.entity.Meta;
import de.ivu.elect.presentation.exchange.SupportedFileFormatErmittler;
import de.ivu.elect.presentation.menu.AbstractMenuItemEntry;
import de.ivu.elect.presentation.security.AbstractGebietSecurity;

public abstract class AbstractImportExportMenuItemEntry extends AbstractMenuItemEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  @ConversationGroup(SupportedFileFormatErmittler.class)
  protected transient SupportedFileFormatErmittler supportedFileFormatErmittler;

  public AbstractImportExportMenuItemEntry() {
    super();
  }

  @Override
  protected AbstractGebietSecurity getGebietSecurity() {
    return KEINE_GEBIET_SECURITY;
  }

  @Override
  public boolean isRendered() {
    return hasUseCasePermission(getUseCasePermission()) && isExporterVorhanden();
  }

  protected abstract UseCasePermission getUseCasePermission();

  protected boolean isExporterVorhanden() {
    return supportedFileFormatErmittler.isSupportedFileFormatVorhanden(getTargetViewId());
  }

  @Override
  public String getLabel() {
    // NOTE ELECT-2900, dass dieser Workaround nach Lösen des Tickets überflüssig wird und die Methode getMeta()
    // dementsprechend als abstract deklariert werden sollte.
    if (getMeta() == null) {
      return super.getLabel();
    }

    return getMessage(getLabelKey(), getMeta().getMehrzahlMessage());
  }

  protected Meta getMeta() {
    return null;
  }
}
