
package de.ivu.elect.presentation.gebietsbaum.table;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.Gebietsart;
import de.ivu.elect.business.gebietsbaum.entity.NlGebiet;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.presentation.gebietsbaum.tree.GebietsbaumTreeNodeIconResolver;


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

public class NlGebietGebietsartNameMitIconColumn extends GebietGebietsartNameMitIconColumn {

  private static final long serialVersionUID = 1L;

  public NlGebietGebietsartNameMitIconColumn(Messages messages, GebietsbaumTreeNodeIconResolver gebietsbaumTreeNodeIconResolver) {
    super(messages, gebietsbaumTreeNodeIconResolver);
  }

  @Override // Cf. NlGebietsbaumTreeNodeIconResolver#getTitle!!!
  public Object getValue(Gebiet gebiet) {
    Object result = super.getValue(gebiet);

    if (gebiet != null && result instanceof String) {
      String gebietsartName = (String) result;

      if (isNotBlank(gebietsartName)) {
        NlGebiet nlGebiet = new NlGebiet(gebiet);

        if (nlGebiet.isBriefwahlgebietGemeinde()) {
          return getMessage("briefwahlbezirk.gebietsart.format", gebietsartName);
        }

        if (nlGebiet.isBriefwahlgebietAusland()) {
          return getMessage("briefwahlbezirk.ausland.gebietsart.format", gebietsartName);
        }
      }
    }

    return result;
  }

  @Override
  protected boolean isIconCached(Gebietsart gebietsart) {
    return false;
  }
}
