
package de.ivu.elect.dokumente;

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

import de.ivu.document.generator.template.BaseDocument;
import de.ivu.document.generator.template.annotations.DocumentSimpleField;
import de.ivu.elect.business.anschrift.entity.Anschrift;
import de.ivu.elect.presentation.person.PersonendatenFormatter;

/**
 * Achtung! Anpasusngen an dieser Klasse hat Auswirkungen auf alle Beispiel-Dokumente in allen Anwendungen!
 */
public class AnschriftDokument extends BaseDocument {

  private static final long serialVersionUID = 1L;

  public static final AnschriftDokument EMPTY_OBJECT = new AnschriftDokument();

  @DocumentSimpleField("StraßeMitHausNummerUndZusatz")
  public final String strasseMitHausnummerUndZusatz;

  @DocumentSimpleField("Straße")
  public final String strasse;

  @DocumentSimpleField("Hausnummer")
  public final String hausnummer;

  @DocumentSimpleField("Hausnummer-Zusatz")
  public final String hausnummerZusatz;

  @DocumentSimpleField("Wohnungsnummer")
  public final String wohnungsnummer;

  @DocumentSimpleField("PLZ")
  public final String plz;

  @DocumentSimpleField("Ort")
  public final String ort;

  @DocumentSimpleField("Ortsteil")
  public final String ortsteil;

  @DocumentSimpleField("Bundesland")
  public final String bundesland;

  @DocumentSimpleField("Staat")
  public final String staat;

  @DocumentSimpleField("Postfach")
  public final String postfach;

  @DocumentSimpleField("Zustellanweisung")
  public final String zustellanweisung;

  @DocumentSimpleField("ZustellanweisungVorhanden")
  public final boolean zustellanweisungVorhanden;

  public AnschriftDokument() {
    super();

    // Default Konstruktor für Factory-Methode
    this.strasseMitHausnummerUndZusatz = "";

    this.strasse = "";
    this.hausnummer = "";
    this.hausnummerZusatz = "";
    this.wohnungsnummer = "";

    this.plz = "";
    this.ort = "";
    this.ortsteil = "";
    this.bundesland = "";
    this.staat = "";

    this.postfach = "";

    this.zustellanweisung = "";
    this.zustellanweisungVorhanden = false;
  }

  public AnschriftDokument(BaseElectContext baseElectContext, Anschrift anschrift) {
    super();

    PersonendatenFormatter personendatenFormatter = baseElectContext.getPersonendatenFormatter();

    this.strasseMitHausnummerUndZusatz = personendatenFormatter.getStrasseMitHausnummerUndZusatz(anschrift);

    this.strasse = anschrift.getStrasse();
    this.hausnummer = anschrift.getHausnummer();
    this.hausnummerZusatz = anschrift.getHausnummerzusatz();
    this.wohnungsnummer = anschrift.getWohnungsnummer();

    this.plz = anschrift.getPlz();
    this.ort = anschrift.getOrt();
    this.ortsteil = anschrift.getOrtsteil();
    this.bundesland = anschrift.getBundesland();
    this.staat = anschrift.getStaat();

    this.postfach = anschrift.getPostfach();

    this.zustellanweisung = anschrift.getZustellanweisung();
    this.zustellanweisungVorhanden = isNotBlank(zustellanweisung);
  }
}
