package de.ivu.elect.business.wahl.entity;

import de.ivu.elect.business.system.control.WahlOderWahlterminStatus;

public enum WahlterminStatus implements WahlOderWahlterminStatus {

  INITIAL {
    @Override
    public boolean isSperrbar() {
      return true;
    }

    @Override
    public boolean isArchivierbar() {
      return true;
    }

    @Override
    public boolean isCrontabErstellbar() {
      return true;
    }

    @Override
    public boolean isAuswaehlbar() {
      return true;
    }

    @Override
    public boolean isLoeschbar() {
      return true;
    }
  },
  GESPERRT {
    @Override
    public boolean isCrontabErstellbar() {
      return true;
    }

    @Override
    public boolean isAuswaehlbar() {
      return true;
    }

    @Override
    public boolean isLoeschbar() {
      return true;
    }

    @Override
    public boolean isSperrbar() {
      return false;
    }

    @Override
    public boolean isGesperrt() {
      return true;
    }

    @Override
    public boolean isArchivierbar() {
      return false;
    }
  },
  MIGRIERT {
    @Override
    public boolean isSperrbar() {
      return false;
    }

    @Override
    public boolean isArchivierbar() {
      return true;
    }

    @Override
    public boolean isCrontabErstellbar() {
      return false;
    }

    @Override
    public boolean isAuswaehlbar() {
      return true;
    }

    @Override
    public boolean isLoeschbar() {
      return true;
    }

    @Override
    public boolean isMigriert() {
      return true;
    }
  },

  ARCHIVIERT {
    @Override
    public boolean isCrontabErstellbar() {
      return false;
    }

    @Override
    public boolean isAuswaehlbar() {
      return false;
    }

    @Override
    public boolean isLoeschbar() {
      return true;
    }

    @Override
    public boolean isSperrbar() {
      return false;
    }

    @Override
    public boolean isArchivierbar() {
      return false;
    }

    @Override
    public boolean isArchiviert() {
      return true;
    }
  },
  ZU_LOESCHEN {
    @Override
    public boolean isSperrbar() {
      return false;
    }

    @Override
    public boolean isArchivierbar() {
      return false;
    }

    @Override
    public boolean isAuswaehlbar() {
      return false;
    }

    @Override
    public boolean isLoeschbar() {
      return false;
    }

    @Override
    public boolean isCrontabErstellbar() {
      return false;
    }
  };

  public abstract boolean isSperrbar();

  @Override
  public boolean isGesperrt() {
    return false;
  }

  public abstract boolean isArchivierbar();

  public boolean isArchiviert() {
    return false;
  }

  @Override
  public boolean isMigriert() {
    return false;
  }

}
