
package de.ivu.elect.dokumente.wahlvorschlag;

import de.ivu.document.generator.template.BaseDocument;
import de.ivu.document.generator.template.annotations.DocumentComplexField;
import de.ivu.document.generator.template.annotations.DocumentSimpleField;
import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.dokumente.image.BildDokument;

public abstract class AbstractGruppeDokument extends BaseDocument {

  private static final long serialVersionUID = 1L;

  @DocumentSimpleField("ID")
  public final Long id;

  @DocumentSimpleField("Name")
  public final String name;

  @DocumentSimpleField("Kurzname")
  public final String kurzname;

  @DocumentSimpleField("Schlüssel")
  public final String schluessel;

  @DocumentSimpleField("Farbe")
  public final String farbe;

  @DocumentSimpleField("Farbe (extern)")
  public final String farbeExtern;

  @DocumentSimpleField("Gruppe-Ist-Minderheit")
  public final Boolean minderheit;

  @DocumentSimpleField("Gruppe-Ist-Privilegiert")
  public final Boolean privilegiert;

  @DocumentSimpleField("Position-Vorgegeben")
  public final Long positionVorgegeben; // ELECT-10330

  @DocumentSimpleField("Position-Relativ")
  public final Long positionRelativ;

  @DocumentComplexField("Logo -> OOXML:logo.draw(<widthInCm>, <heightInCm>)")
  public final BildDokument logo; // ELECT-15373

  protected AbstractGruppeDokument() {
    this(null);
  }

  protected AbstractGruppeDokument(Gruppe gruppe) {
    super();

    if (gruppe == null) {
      this.id = null;

      this.name = "";
      this.kurzname = "";
      this.schluessel = "";
      this.farbe = "";
      this.farbeExtern = "";

      this.minderheit = false;
      this.privilegiert = false;

      this.positionVorgegeben = null;
      this.positionRelativ = null;

      this.logo = new BildDokument();
    } else {
      this.id = gruppe.getId();

      this.name = gruppe.getName();
      this.kurzname = gruppe.getKurzname();
      this.schluessel = gruppe.getSchluessel();
      this.farbe = gruppe.getFarbe();
      this.farbeExtern = gruppe.getFarbeExtern();

      this.minderheit = gruppe.getMinderheit();
      this.privilegiert = gruppe.getPrivilegiert();

      this.positionVorgegeben = gruppe.getVorgegebenePosition();
      this.positionRelativ = gruppe.getRelativePosition();

      this.logo = new BildDokument(gruppe.getLogo());
    }
  }
}
