
package de.ivu.elect.business.sitzberechnung.control.verteilung;

public class AbstractTeilnehmer<T> implements Teilnehmer {

  private final T object;
  private long stimmen;

  public AbstractTeilnehmer(T object, long stimmen) {
    this.object = object;
    this.stimmen = stimmen;
  }

  @Override
  public long getStimmen() {
    return stimmen;
  }

  public T getObject() {
    return object;
  }

  /**
   * Setter sollte nur im Ausnahmefall verwendet werden, wenn die Stimmenzahl zum Zeitpunkt des Konstruktoraufrufs noch
   * nicht bekannt ist.
   */
  protected void setStimmen(long stimmen) {
    this.stimmen = stimmen;
  }

  @Override
  public String toString() {
    return this.getClass().getSimpleName() + "(" + displayObject() + ", " + getStimmen() + ")";
  }

  protected String displayObject() {
    return getObject().toString();
  }
}