/*
 * JPA entity template
 *
 *
 * Takatuka - Template fuer JPA2 Entitaeten (inklusive Bean Validation)
 *
 * Moeglichkeiten und Einschraenkungen:
 * - Beziehungen werden abgebildet
 * -- es gibt keine 1:1 Beziehungen
 * -- N:M Beziehungen sind immer bidirektional
 * - Vererbung wird nicht unterstuetzt
 * - Support für CustomData
 */
package de.ivu.elect.business.gebietsbaum.entity;

@javax.persistence.NamedQueries(
 {



       @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.UK",
     query="SELECT o FROM Wahldurchfuehrungsgebiet o WHERE "

                         + "o"
                +".nummer"
              +" = ?1"

             +" AND "         + "o"
                +".gebietsart"
                +".name"
              +" = ?2"

             +" AND "         + "o"
                +".gebietsart"
                +".mandant"
                +".nummer"
              +" = ?3"

             +" AND "         + "o"
                +".wahl"
                +".wahlart"
                +".name"
              +" = ?4"

             +" AND "         + "o"
                +".wahl"
                +".wahlart"
                +".mandant"
                +".nummer"
              +" = ?5"

             +" AND "         + "o"
                +".wahl"
                +".wahltermin"
                +".nummer"
              +" = ?6"

             +" AND "         + "o"
                +".wahl"
                +".wahltermin"
                +".wahldatum"
              +" = ?7"

             +" AND "         + "o"
                +".wahl"
                +".wahltermin"
                +".mandant"
                +".nummer"
              +" = ?8"

             +" AND "         + "o"
                +".wahltermin"
                +".nummer"
              +" = ?9"

             +" AND "         + "o"
                +".wahltermin"
                +".wahldatum"
              +" = ?10"

             +" AND "         + "o"
                +".wahltermin"
                +".mandant"
                +".nummer"
              +" = ?11"

     ,
   hints = {
              @javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "true"),
             @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
   }


   )
   
     ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.CountErfassungsgebieteByWahlErgebniseingabestatusEndgueltig",
     query="SELECT count(g) FROM Wahldurchfuehrungsgebiet g WHERE g.wahl=?1 AND g.eingabestatusEndgueltig IN (?2) AND EXISTS (SELECT gae FROM Gebietsarteigenschaft gae WHERE gae.gebietsart=g.gebietsart AND gae.wahlart=(SELECT w.wahlart FROM Wahl w WHERE w=?1) AND gae.erfassungsgebiet=1)",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "true"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
         ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.CountErfassungsgebieteByWahlErgebniseingabestatusVorlaeufig",
     query="SELECT count(g) FROM Wahldurchfuehrungsgebiet g WHERE g.wahl=?1 AND g.eingabestatusVorlaeufig IN (?2) AND EXISTS (SELECT gae FROM Gebietsarteigenschaft gae WHERE gae.gebietsart=g.gebietsart AND gae.wahlart=(SELECT w.wahlart FROM Wahl w WHERE w=?1) AND gae.erfassungsgebiet=1)",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "true"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
         ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.ErfasstFuerGebiete",
     query="SELECT o FROM Wahldurchfuehrungsgebiet o WHERE o.erfasstIn = ?1",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "true"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
         ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.UebergeordnetesGebiet",
     query="SELECT o FROM Wahldurchfuehrungsgebiet o WHERE o.uebergeordnetesGebiet = ?1",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "true"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
         ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.Wahl",
     query="SELECT o FROM Wahldurchfuehrungsgebiet o WHERE o.wahl =?1",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "true"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
         ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.WahlOhneEingaengeMitEingangsartAndFehlerstatus",
     query="SELECT o FROM Wahldurchfuehrungsgebiet o WHERE o.wahl = ?1 AND NOT EXISTS (SELECT e FROM Ergebniseingang e WHERE e.wahldurchfuehrungsgebiet=o AND e.ergebniseingangsart =?2 AND e.ergebniseingangsfehlerstatus IN(?3))",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "false"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
         ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.WahlWurzelgebiet",
     query="SELECT g FROM Wahldurchfuehrungsgebiet g WHERE g.wahl = ?1 AND g.uebergeordnetesGebiet IS NULL",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "true"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
         ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.WahlartBeiAufteilung",
     query="SELECT o FROM Wahldurchfuehrungsgebiet o WHERE o.wahlartBeiAufteilung=?1",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "false"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
         ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.WahlbeteiligungErfasst",
     query="SELECT wg FROM Wahlbeteiligung wb JOIN wb.wahldurchfuehrungsgebiet wg WHERE wb.wahlbeteiligungAuswertung = ?1",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "false"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
         ,   @javax.persistence.NamedQuery(
     name="WAHLDURCHFUEHRUNGSGEBIET.WahlterminGebietsartNummer",
     query="SELECT o FROM Wahldurchfuehrungsgebiet o WHERE o.wahltermin=?1 AND o.gebietsart=?2 AND o.nummer=?3",
     hints = {@javax.persistence.QueryHint(name = "org.hibernate.cacheable", value = "true"),
                            @javax.persistence.QueryHint(name = "org.hibernate.flushMode", value = "commit")
             }
   )

        
     }
)
@javax.enterprise.inject.Vetoed
@javax.persistence.Entity
@javax.persistence.Table(name = "WAHLDURCHFUEHRUNGSGEBIET")
@javax.persistence.Cacheable
@javax.persistence.PrimaryKeyJoinColumn(name="gebiet_id")
@javax.persistence.DiscriminatorValue(Wahldurchfuehrungsgebiet.DISCRIMINATOR_VALUE)

public
 class Wahldurchfuehrungsgebiet
extends AbstractWahldurchfuehrungsgebiet
  {

  private static final long serialVersionUID = 0L;

  public static final String DISCRIMINATOR_VALUE = "WAHLDURCHFUEHRUNGSGEBIET";

  /**
   * default constructor (protected, da mit CustomData aufgerufen werden muss)
   */
  protected Wahldurchfuehrungsgebiet() {
    super();
  }
    public Wahldurchfuehrungsgebiet(de.ivu.elect.jee.entity.customdata.CustomData customData){
        super(customData);
      }



    /**
     * @param original
     *
     * @deprecated Sollte nur mit Bedacht genutzt werden, da hier auch die Beziehungen kopiert werden. Deswegen markiert
     *             als Deprecated.
     */
    @Deprecated
    public Wahldurchfuehrungsgebiet(Wahldurchfuehrungsgebiet original){
      original.copyEntity(this);
    }


  @Override
  public void resetAttributeChanged() {
        hasChangedAnzahlWahlberechtigteOhneWahlschein = false;
          hasChangedAnzahlWahlberechtigteMitWahlschein = false;
          hasChangedAnzahlWahlberechtigteNichtImWaehlerverzeichnis = false;
          hasChangedBriefwahlInUrneErfassen = false;
          hasChangedEingabestatusEndgueltig = false;
          hasChangedEingabestatusVorlaeufig = false;
          hasChangedErfassungsbesonderheit = false;
          hasChangedTextFuerPraesentation = false;
  
      hasChangedErfasstIn = false;
        hasChangedWahlartBeiAufteilung = false;
  

                                        
    super.resetAttributeChanged();
  }


  /**
   * ATTRIBUTE
   */

    
  @javax.persistence.Column(name = "ANZAHL_WAHLBERECHTIGTER_A1", nullable = WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A1_NULLABLE, precision=WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A1_PRECISION, scale=WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A1_SCALE)
            
  protected java.lang.Long anzahlWahlberechtigteOhneWahlschein =  null;

  @javax.persistence.Transient
  protected boolean hasChangedAnzahlWahlberechtigteOhneWahlschein = false;

  public boolean hasChangedAnzahlWahlberechtigteOhneWahlschein(){
    return hasChangedAnzahlWahlberechtigteOhneWahlschein;
  }
       @javax.persistence.Transient
     private transient boolean isSeitLadenVeraendertAnzahlWahlberechtigteOhneWahlschein = false;
     @javax.persistence.Transient
     private transient java.lang.Long wertNachLadenAnzahlWahlberechtigteOhneWahlschein;
  
  /**
   * 
   *
   * getter for WAHLDURCHFUEHRUNGSGEBIET.ANZAHL_WAHLBERECHTIGTER_A1
   */
  @javax.annotation.Nullable   @Override   public  java.lang.Long getAnzahlWahlberechtigteOhneWahlschein() {
        return anzahlWahlberechtigteOhneWahlschein;
      }

  /**
   * 
   *
   * setter for WAHLDURCHFUEHRUNGSGEBIET.ANZAHL_WAHLBERECHTIGTER_A1
   *
   * @param anzahlWahlberechtigteOhneWahlschein
   */
  @Override   public void setAnzahlWahlberechtigteOhneWahlschein(@javax.annotation.Nullable  java.lang.Long anzahlWahlberechtigteOhneWahlschein) {

       resetTkCache();
                  java.lang.Long anzahlWahlberechtigteOhneWahlscheinInternal = anzahlWahlberechtigteOhneWahlschein;
       
       
      boolean thisAttributChanged =
      !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.anzahlWahlberechtigteOhneWahlschein
      , anzahlWahlberechtigteOhneWahlscheinInternal);

      attributeChanged |= thisAttributChanged;

      hasChangedAnzahlWahlberechtigteOhneWahlschein |= thisAttributChanged;

      if (thisAttributChanged) {
      markDirty("anzahlWahlberechtigteOhneWahlschein");
      }


             if (!isSeitLadenVeraendertAnzahlWahlberechtigteOhneWahlschein) {
          isSeitLadenVeraendertAnzahlWahlberechtigteOhneWahlschein = thisAttributChanged;
         if (isSeitLadenVeraendertAnzahlWahlberechtigteOhneWahlschein){
           wertNachLadenAnzahlWahlberechtigteOhneWahlschein=this.anzahlWahlberechtigteOhneWahlschein;
         }
       }
      

       this.anzahlWahlberechtigteOhneWahlschein = anzahlWahlberechtigteOhneWahlscheinInternal;

         }

        
  @javax.persistence.Column(name = "ANZAHL_WAHLBERECHTIGTER_A2", nullable = WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A2_NULLABLE, precision=WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A2_PRECISION, scale=WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A2_SCALE)
            
  protected java.lang.Long anzahlWahlberechtigteMitWahlschein =  null;

  @javax.persistence.Transient
  protected boolean hasChangedAnzahlWahlberechtigteMitWahlschein = false;

  public boolean hasChangedAnzahlWahlberechtigteMitWahlschein(){
    return hasChangedAnzahlWahlberechtigteMitWahlschein;
  }
       @javax.persistence.Transient
     private transient boolean isSeitLadenVeraendertAnzahlWahlberechtigteMitWahlschein = false;
     @javax.persistence.Transient
     private transient java.lang.Long wertNachLadenAnzahlWahlberechtigteMitWahlschein;
  
  /**
   * 
   *
   * getter for WAHLDURCHFUEHRUNGSGEBIET.ANZAHL_WAHLBERECHTIGTER_A2
   */
  @javax.annotation.Nullable   @Override   public  java.lang.Long getAnzahlWahlberechtigteMitWahlschein() {
        return anzahlWahlberechtigteMitWahlschein;
      }

  /**
   * 
   *
   * setter for WAHLDURCHFUEHRUNGSGEBIET.ANZAHL_WAHLBERECHTIGTER_A2
   *
   * @param anzahlWahlberechtigteMitWahlschein
   */
  @Override   public void setAnzahlWahlberechtigteMitWahlschein(@javax.annotation.Nullable  java.lang.Long anzahlWahlberechtigteMitWahlschein) {

       resetTkCache();
                  java.lang.Long anzahlWahlberechtigteMitWahlscheinInternal = anzahlWahlberechtigteMitWahlschein;
       
       
      boolean thisAttributChanged =
      !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.anzahlWahlberechtigteMitWahlschein
      , anzahlWahlberechtigteMitWahlscheinInternal);

      attributeChanged |= thisAttributChanged;

      hasChangedAnzahlWahlberechtigteMitWahlschein |= thisAttributChanged;

      if (thisAttributChanged) {
      markDirty("anzahlWahlberechtigteMitWahlschein");
      }


             if (!isSeitLadenVeraendertAnzahlWahlberechtigteMitWahlschein) {
          isSeitLadenVeraendertAnzahlWahlberechtigteMitWahlschein = thisAttributChanged;
         if (isSeitLadenVeraendertAnzahlWahlberechtigteMitWahlschein){
           wertNachLadenAnzahlWahlberechtigteMitWahlschein=this.anzahlWahlberechtigteMitWahlschein;
         }
       }
      

       this.anzahlWahlberechtigteMitWahlschein = anzahlWahlberechtigteMitWahlscheinInternal;

         }

        
  @javax.persistence.Column(name = "ANZAHL_WAHLBERECHTIGTER_A3", nullable = WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A3_NULLABLE, precision=WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A3_PRECISION, scale=WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A3_SCALE)
            
  protected java.lang.Long anzahlWahlberechtigteNichtImWaehlerverzeichnis =  null;

  @javax.persistence.Transient
  protected boolean hasChangedAnzahlWahlberechtigteNichtImWaehlerverzeichnis = false;

  public boolean hasChangedAnzahlWahlberechtigteNichtImWaehlerverzeichnis(){
    return hasChangedAnzahlWahlberechtigteNichtImWaehlerverzeichnis;
  }
       @javax.persistence.Transient
     private transient boolean isSeitLadenVeraendertAnzahlWahlberechtigteNichtImWaehlerverzeichnis = false;
     @javax.persistence.Transient
     private transient java.lang.Long wertNachLadenAnzahlWahlberechtigteNichtImWaehlerverzeichnis;
  
  /**
   * 
   *
   * getter for WAHLDURCHFUEHRUNGSGEBIET.ANZAHL_WAHLBERECHTIGTER_A3
   */
  @javax.annotation.Nullable   @Override   public  java.lang.Long getAnzahlWahlberechtigteNichtImWaehlerverzeichnis() {
        return anzahlWahlberechtigteNichtImWaehlerverzeichnis;
      }

  /**
   * 
   *
   * setter for WAHLDURCHFUEHRUNGSGEBIET.ANZAHL_WAHLBERECHTIGTER_A3
   *
   * @param anzahlWahlberechtigteNichtImWaehlerverzeichnis
   */
  @Override   public void setAnzahlWahlberechtigteNichtImWaehlerverzeichnis(@javax.annotation.Nullable  java.lang.Long anzahlWahlberechtigteNichtImWaehlerverzeichnis) {

       resetTkCache();
                  java.lang.Long anzahlWahlberechtigteNichtImWaehlerverzeichnisInternal = anzahlWahlberechtigteNichtImWaehlerverzeichnis;
       
       
      boolean thisAttributChanged =
      !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.anzahlWahlberechtigteNichtImWaehlerverzeichnis
      , anzahlWahlberechtigteNichtImWaehlerverzeichnisInternal);

      attributeChanged |= thisAttributChanged;

      hasChangedAnzahlWahlberechtigteNichtImWaehlerverzeichnis |= thisAttributChanged;

      if (thisAttributChanged) {
      markDirty("anzahlWahlberechtigteNichtImWaehlerverzeichnis");
      }


             if (!isSeitLadenVeraendertAnzahlWahlberechtigteNichtImWaehlerverzeichnis) {
          isSeitLadenVeraendertAnzahlWahlberechtigteNichtImWaehlerverzeichnis = thisAttributChanged;
         if (isSeitLadenVeraendertAnzahlWahlberechtigteNichtImWaehlerverzeichnis){
           wertNachLadenAnzahlWahlberechtigteNichtImWaehlerverzeichnis=this.anzahlWahlberechtigteNichtImWaehlerverzeichnis;
         }
       }
      

       this.anzahlWahlberechtigteNichtImWaehlerverzeichnis = anzahlWahlberechtigteNichtImWaehlerverzeichnisInternal;

         }

        
      @javax.persistence.Column(name = "BRIEFWAHL_IN_URNE_ERFASSEN", nullable = WahldurchfuehrungsgebietConstants.BRIEFWAHL_IN_URNE_ERFASSEN_NULLABLE)
    
  protected java.lang.Boolean briefwahlInUrneErfassen =  false;

  @javax.persistence.Transient
  protected boolean hasChangedBriefwahlInUrneErfassen = false;

  public boolean hasChangedBriefwahlInUrneErfassen(){
    return hasChangedBriefwahlInUrneErfassen;
  }
       @javax.persistence.Transient
     private transient boolean isSeitLadenVeraendertBriefwahlInUrneErfassen = false;
     @javax.persistence.Transient
     private transient java.lang.Boolean wertNachLadenBriefwahlInUrneErfassen;
  
  /**
   * 
   *
   * getter for WAHLDURCHFUEHRUNGSGEBIET.BRIEFWAHL_IN_URNE_ERFASSEN
   */
    @Override   public  java.lang.Boolean getBriefwahlInUrneErfassen() {
        return briefwahlInUrneErfassen;
      }

  /**
   * 
   *
   * setter for WAHLDURCHFUEHRUNGSGEBIET.BRIEFWAHL_IN_URNE_ERFASSEN
   *
   * @param briefwahlInUrneErfassen
   */
  @Override   public void setBriefwahlInUrneErfassen( java.lang.Boolean briefwahlInUrneErfassen) {

       resetTkCache();
                  java.lang.Boolean briefwahlInUrneErfassenInternal = briefwahlInUrneErfassen;
       
       
      boolean thisAttributChanged =
      !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.briefwahlInUrneErfassen
      , briefwahlInUrneErfassenInternal);

      attributeChanged |= thisAttributChanged;

      hasChangedBriefwahlInUrneErfassen |= thisAttributChanged;

      if (thisAttributChanged) {
      markDirty("briefwahlInUrneErfassen");
      }


             if (!isSeitLadenVeraendertBriefwahlInUrneErfassen) {
          isSeitLadenVeraendertBriefwahlInUrneErfassen = thisAttributChanged;
         if (isSeitLadenVeraendertBriefwahlInUrneErfassen){
           wertNachLadenBriefwahlInUrneErfassen=this.briefwahlInUrneErfassen;
         }
       }
      

       this.briefwahlInUrneErfassen = briefwahlInUrneErfassenInternal;

         }

        
    @javax.persistence.Enumerated(javax.persistence.EnumType.STRING)
      @javax.persistence.Column(name = "EINGABESTATUS_ENDGUELTIG", nullable = WahldurchfuehrungsgebietConstants.EINGABESTATUS_ENDGUELTIG_NULLABLE)
    
  protected de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus eingabestatusEndgueltig =  de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus.EINGABE_MOEGLICH;

  @javax.persistence.Transient
  protected boolean hasChangedEingabestatusEndgueltig = false;

  public boolean hasChangedEingabestatusEndgueltig(){
    return hasChangedEingabestatusEndgueltig;
  }
       @javax.persistence.Transient
     private transient boolean isSeitLadenVeraendertEingabestatusEndgueltig = false;
     @javax.persistence.Transient
     private transient de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus wertNachLadenEingabestatusEndgueltig;
  
  /**
   * 
   *
   * getter for WAHLDURCHFUEHRUNGSGEBIET.EINGABESTATUS_ENDGUELTIG
   */
    @Override   public  de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus getEingabestatusEndgueltig() {
        return eingabestatusEndgueltig;
      }

  /**
   * 
   *
   * setter for WAHLDURCHFUEHRUNGSGEBIET.EINGABESTATUS_ENDGUELTIG
   *
   * @param eingabestatusEndgueltig
   */
  @Override   public void setEingabestatusEndgueltig( de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus eingabestatusEndgueltig) {

       resetTkCache();
                  de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus eingabestatusEndgueltigInternal = eingabestatusEndgueltig;
       
       
      boolean thisAttributChanged =
      !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.eingabestatusEndgueltig
      , eingabestatusEndgueltigInternal);

      attributeChanged |= thisAttributChanged;

      hasChangedEingabestatusEndgueltig |= thisAttributChanged;

      if (thisAttributChanged) {
      markDirty("eingabestatusEndgueltig");
      }


             if (!isSeitLadenVeraendertEingabestatusEndgueltig) {
          isSeitLadenVeraendertEingabestatusEndgueltig = thisAttributChanged;
         if (isSeitLadenVeraendertEingabestatusEndgueltig){
           wertNachLadenEingabestatusEndgueltig=this.eingabestatusEndgueltig;
         }
       }
      

       this.eingabestatusEndgueltig = eingabestatusEndgueltigInternal;

         }

        
    @javax.persistence.Enumerated(javax.persistence.EnumType.STRING)
      @javax.persistence.Column(name = "EINGABESTATUS_VORLAEUFIG", nullable = WahldurchfuehrungsgebietConstants.EINGABESTATUS_VORLAEUFIG_NULLABLE)
    
  protected de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus eingabestatusVorlaeufig =  de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus.EINGABE_MOEGLICH;

  @javax.persistence.Transient
  protected boolean hasChangedEingabestatusVorlaeufig = false;

  public boolean hasChangedEingabestatusVorlaeufig(){
    return hasChangedEingabestatusVorlaeufig;
  }
       @javax.persistence.Transient
     private transient boolean isSeitLadenVeraendertEingabestatusVorlaeufig = false;
     @javax.persistence.Transient
     private transient de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus wertNachLadenEingabestatusVorlaeufig;
  
  /**
   * 
   *
   * getter for WAHLDURCHFUEHRUNGSGEBIET.EINGABESTATUS_VORLAEUFIG
   */
    @Override   public  de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus getEingabestatusVorlaeufig() {
        return eingabestatusVorlaeufig;
      }

  /**
   * 
   *
   * setter for WAHLDURCHFUEHRUNGSGEBIET.EINGABESTATUS_VORLAEUFIG
   *
   * @param eingabestatusVorlaeufig
   */
  @Override   public void setEingabestatusVorlaeufig( de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus eingabestatusVorlaeufig) {

       resetTkCache();
                  de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus eingabestatusVorlaeufigInternal = eingabestatusVorlaeufig;
       
       
      boolean thisAttributChanged =
      !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.eingabestatusVorlaeufig
      , eingabestatusVorlaeufigInternal);

      attributeChanged |= thisAttributChanged;

      hasChangedEingabestatusVorlaeufig |= thisAttributChanged;

      if (thisAttributChanged) {
      markDirty("eingabestatusVorlaeufig");
      }


             if (!isSeitLadenVeraendertEingabestatusVorlaeufig) {
          isSeitLadenVeraendertEingabestatusVorlaeufig = thisAttributChanged;
         if (isSeitLadenVeraendertEingabestatusVorlaeufig){
           wertNachLadenEingabestatusVorlaeufig=this.eingabestatusVorlaeufig;
         }
       }
      

       this.eingabestatusVorlaeufig = eingabestatusVorlaeufigInternal;

         }

        
    @javax.persistence.Enumerated(javax.persistence.EnumType.STRING)
      @javax.persistence.Column(name = "ERFASSUNGSBESONDERHEIT", nullable = WahldurchfuehrungsgebietConstants.ERFASSUNGSBESONDERHEIT_NULLABLE)
    
  protected de.ivu.elect.business.gebietsbaum.entity.Erfassungsbesonderheit erfassungsbesonderheit =  de.ivu.elect.business.gebietsbaum.entity.Erfassungsbesonderheit.KEINE;

  @javax.persistence.Transient
  protected boolean hasChangedErfassungsbesonderheit = false;

  public boolean hasChangedErfassungsbesonderheit(){
    return hasChangedErfassungsbesonderheit;
  }
       @javax.persistence.Transient
     private transient boolean isSeitLadenVeraendertErfassungsbesonderheit = false;
     @javax.persistence.Transient
     private transient de.ivu.elect.business.gebietsbaum.entity.Erfassungsbesonderheit wertNachLadenErfassungsbesonderheit;
  
  /**
   * 
   *
   * getter for WAHLDURCHFUEHRUNGSGEBIET.ERFASSUNGSBESONDERHEIT
   */
    @Override   public  de.ivu.elect.business.gebietsbaum.entity.Erfassungsbesonderheit getErfassungsbesonderheit() {
        return erfassungsbesonderheit;
      }

  /**
   * 
   *
   * setter for WAHLDURCHFUEHRUNGSGEBIET.ERFASSUNGSBESONDERHEIT
   *
   * @param erfassungsbesonderheit
   */
  @Override   public void setErfassungsbesonderheit( de.ivu.elect.business.gebietsbaum.entity.Erfassungsbesonderheit erfassungsbesonderheit) {

       resetTkCache();
                  de.ivu.elect.business.gebietsbaum.entity.Erfassungsbesonderheit erfassungsbesonderheitInternal = erfassungsbesonderheit;
       
       
      boolean thisAttributChanged =
      !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.erfassungsbesonderheit
      , erfassungsbesonderheitInternal);

      attributeChanged |= thisAttributChanged;

      hasChangedErfassungsbesonderheit |= thisAttributChanged;

      if (thisAttributChanged) {
      markDirty("erfassungsbesonderheit");
      }


             if (!isSeitLadenVeraendertErfassungsbesonderheit) {
          isSeitLadenVeraendertErfassungsbesonderheit = thisAttributChanged;
         if (isSeitLadenVeraendertErfassungsbesonderheit){
           wertNachLadenErfassungsbesonderheit=this.erfassungsbesonderheit;
         }
       }
      

       this.erfassungsbesonderheit = erfassungsbesonderheitInternal;

         }

        
  @javax.persistence.Column(name = "TEXT_FUER_PRAESENTATION", nullable = WahldurchfuehrungsgebietConstants.TEXT_FUER_PRAESENTATION_NULLABLE, length=WahldurchfuehrungsgebietConstants.TEXT_FUER_PRAESENTATION_MAX_LENGTH)
        
  protected java.lang.String textFuerPraesentation =  null;

  @javax.persistence.Transient
  protected boolean hasChangedTextFuerPraesentation = false;

  public boolean hasChangedTextFuerPraesentation(){
    return hasChangedTextFuerPraesentation;
  }
       @javax.persistence.Transient
     private transient boolean isSeitLadenVeraendertTextFuerPraesentation = false;
     @javax.persistence.Transient
     private transient java.lang.String wertNachLadenTextFuerPraesentation;
  
  /**
   * 
   *
   * getter for WAHLDURCHFUEHRUNGSGEBIET.TEXT_FUER_PRAESENTATION
   */
  @javax.annotation.Nullable   @Override   public  java.lang.String getTextFuerPraesentation() {
        return textFuerPraesentation;
      }

  /**
   * 
   *
   * setter for WAHLDURCHFUEHRUNGSGEBIET.TEXT_FUER_PRAESENTATION
   *
   * @param textFuerPraesentation
   */
  @Override   public void setTextFuerPraesentation(@javax.annotation.Nullable  java.lang.String textFuerPraesentation) {

       resetTkCache();
                  
                          java.lang.String textFuerPraesentationInternal = de.ivu.elect.jee.entity.EntityUtil.trimToNullOrMaxLength(textFuerPraesentation, WahldurchfuehrungsgebietConstants.TEXT_FUER_PRAESENTATION_MAX_LENGTH, getId(), getClass());
                  
       
      boolean thisAttributChanged =
      !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.textFuerPraesentation
      , textFuerPraesentationInternal);

      attributeChanged |= thisAttributChanged;

      hasChangedTextFuerPraesentation |= thisAttributChanged;

      if (thisAttributChanged) {
      markDirty("textFuerPraesentation");
      }


             if (!isSeitLadenVeraendertTextFuerPraesentation) {
          isSeitLadenVeraendertTextFuerPraesentation = thisAttributChanged;
         if (isSeitLadenVeraendertTextFuerPraesentation){
           wertNachLadenTextFuerPraesentation=this.textFuerPraesentation;
         }
       }
      

       this.textFuerPraesentation = textFuerPraesentationInternal;

         }

    
/**
 * Beziehungen N:1 unidirektional
 */
  /**
   * Beziehung (unidirektional) zu ErfasstIn
   */
  @javax.persistence.ManyToOne(fetch =  javax.persistence.FetchType.LAZY , optional=true, cascade = {javax.persistence.CascadeType.PERSIST})
  @javax.persistence.JoinColumns(@javax.persistence.JoinColumn(name = "ERFASST_IN_ID", referencedColumnName="GEBIET_ID"))
  protected de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet erfasstIn;

  /**
   * 
   */
  @Override
  public void setErfasstIn(@javax.annotation.Nullable  de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet erfasstIn){
    resetTkCache();
    
    boolean thisAttributChanged =
    !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.erfasstIn
    , erfasstIn);

    attributeChanged |= thisAttributChanged;

    hasChangedErfasstIn |= thisAttributChanged;

    if (thisAttributChanged) {
    markDirty("erfasstIn");
    }

    this.erfasstIn = erfasstIn;
      }

  /**
   * 
   */
  @javax.annotation.Nullable   @Override
  public de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet getErfasstIn(){
    return this.erfasstIn;
  }

  @javax.persistence.Transient
  protected boolean hasChangedErfasstIn = false;

  public boolean hasChangedErfasstIn(){
    return hasChangedErfasstIn;
  }

  /**
   * Beziehung (unidirektional) zu WahlartBeiAufteilung
   */
  @javax.persistence.ManyToOne(fetch =  javax.persistence.FetchType.LAZY , optional=true, cascade = {javax.persistence.CascadeType.PERSIST})
  @javax.persistence.JoinColumns(@javax.persistence.JoinColumn(name = "WAHLART_BEI_AUFTEILUNG_ID", referencedColumnName="WAHLART_ID"))
  protected de.ivu.elect.business.wahl.entity.Wahlart wahlartBeiAufteilung;

  /**
   * 
   */
  @Override
  public void setWahlartBeiAufteilung(@javax.annotation.Nullable  de.ivu.elect.business.wahl.entity.Wahlart wahlartBeiAufteilung){
    resetTkCache();
    
    boolean thisAttributChanged =
    !de.ivu.elect.jee.entity.EntityUtil.compareObjects(this.wahlartBeiAufteilung
    , wahlartBeiAufteilung);

    attributeChanged |= thisAttributChanged;

    hasChangedWahlartBeiAufteilung |= thisAttributChanged;

    if (thisAttributChanged) {
    markDirty("wahlartBeiAufteilung");
    }

    this.wahlartBeiAufteilung = wahlartBeiAufteilung;
      }

  /**
   * 
   */
  @javax.annotation.Nullable   @Override
  public de.ivu.elect.business.wahl.entity.Wahlart getWahlartBeiAufteilung(){
    return this.wahlartBeiAufteilung;
  }

  @javax.persistence.Transient
  protected boolean hasChangedWahlartBeiAufteilung = false;

  public boolean hasChangedWahlartBeiAufteilung(){
    return hasChangedWahlartBeiAufteilung;
  }


/**
 * Beziehungen N:1 bidirektional
 */

  /**
   * Beziehungen 1:N unidirektional (nicht unterstuetzt)
   */

  /**
   * Beziehungen 1:N bidirektional
   */

  /**
   * Beziehungen N:M bidirektional nicht selbstreferenzierend
   */


  /**
   * Beziehungen N:M bidirektional selbstreferenzierend
   */
  

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("Wahldurchfuehrungsgebiet:");
    sb.append(getId());
    sb.append(" (TK: ");
    try {
      sb.append(getTk());
    } catch (Exception e) {
      sb.append(e.getMessage());
    }
    sb.append(")");
    return sb.toString();
}



  /**
   * Kopiert alle Attribute (ausser PK und Version) und UNIDIREKTIONALE n:1-Beziehungen in uebergebene Entitaet.
   *
   * @param other
   *
   * @deprecated Sollte nur mit Bedacht genutzt werden, da hier auch die Beziehungen kopiert werden. Deswegen markiert
   *             als Deprecated.
   */
  @Deprecated
  protected void copyEntity(Wahldurchfuehrungsgebiet other){
        super.copyEntity(other);
                             other.anzahlWahlberechtigteOhneWahlschein = this.anzahlWahlberechtigteOhneWahlschein;
                                other.anzahlWahlberechtigteMitWahlschein = this.anzahlWahlberechtigteMitWahlschein;
                                other.anzahlWahlberechtigteNichtImWaehlerverzeichnis = this.anzahlWahlberechtigteNichtImWaehlerverzeichnis;
                                other.briefwahlInUrneErfassen = this.briefwahlInUrneErfassen;
                                other.eingabestatusEndgueltig = this.eingabestatusEndgueltig;
                                other.eingabestatusVorlaeufig = this.eingabestatusVorlaeufig;
                                other.erfassungsbesonderheit = this.erfassungsbesonderheit;
                                other.textFuerPraesentation = this.textFuerPraesentation;
           
  other.setErfasstIn(this.getErfasstIn());
  other.setWahlartBeiAufteilung(this.getWahlartBeiAufteilung());
    if (this.transientContext != null && !this.transientContext.isEmpty()) {
      other.getTransientContext().putAll(this.transientContext);
    }
  }



    @Override
    public void copyEntityAttributesToOtherEntity(de.ivu.elect.jee.entity.Entity other) {
      if (other==null){
        return;
      }
      if (other.isInstanceOf(Wahldurchfuehrungsgebiet.class)){
        copyEntityAttributesUsingSetter((Wahldurchfuehrungsgebiet) other.castTo(Wahldurchfuehrungsgebiet.class).getEntity());
      } else {
        throw new IllegalArgumentException("Keine Instanz von Wahldurchfuehrungsgebiet: " + other);
      }
    }

  /**
  * Kopiert alle Attribute (ausser PK und Version)  in uebergebene Entitaet.
  *
  */
  public void copyEntityAttributesUsingSetter(Wahldurchfuehrungsgebiet other){
      super.copyEntityAttributesUsingSetter(other);
               other.setAnzahlWahlberechtigteOhneWahlschein(this.anzahlWahlberechtigteOhneWahlschein);
                  other.setAnzahlWahlberechtigteMitWahlschein(this.anzahlWahlberechtigteMitWahlschein);
                  other.setAnzahlWahlberechtigteNichtImWaehlerverzeichnis(this.anzahlWahlberechtigteNichtImWaehlerverzeichnis);
                  other.setBriefwahlInUrneErfassen(this.briefwahlInUrneErfassen);
                  other.setEingabestatusEndgueltig(this.eingabestatusEndgueltig);
                  other.setEingabestatusVorlaeufig(this.eingabestatusVorlaeufig);
                  other.setErfassungsbesonderheit(this.erfassungsbesonderheit);
                  other.setTextFuerPraesentation(this.textFuerPraesentation);
           if (this.transientContext != null && !this.transientContext.isEmpty()) {
      other.getTransientContext().putAll(this.transientContext);
    }
  }

    @Override
    public void copyEntityAttributesUsingSetter(de.ivu.elect.business.gebietsbaum.entity.Gebiet other){
       if (other.isInstanceOf(Wahldurchfuehrungsgebiet.class)) {
         copyEntityAttributesUsingSetter(other.castTo(Wahldurchfuehrungsgebiet.class).getEntity());
       } else {
         super.copyEntityAttributesUsingSetter(other);
       }
    }

  /**
   * Kopiert alle veränderten Attribute (ausser PK, CustomData, wenn vorhanden und Version) in uebergebene Entitaet.
   *
   */
  public void copyChangedEntityAttributesUsingSetter(Wahldurchfuehrungsgebiet other){
       super.copyChangedEntityAttributesUsingSetter(other);
                       if (hasChangedAnzahlWahlberechtigteOhneWahlschein) {
        other.setAnzahlWahlberechtigteOhneWahlschein(this.anzahlWahlberechtigteOhneWahlschein);
      }
                             if (hasChangedAnzahlWahlberechtigteMitWahlschein) {
        other.setAnzahlWahlberechtigteMitWahlschein(this.anzahlWahlberechtigteMitWahlschein);
      }
                             if (hasChangedAnzahlWahlberechtigteNichtImWaehlerverzeichnis) {
        other.setAnzahlWahlberechtigteNichtImWaehlerverzeichnis(this.anzahlWahlberechtigteNichtImWaehlerverzeichnis);
      }
                             if (hasChangedBriefwahlInUrneErfassen) {
        other.setBriefwahlInUrneErfassen(this.briefwahlInUrneErfassen);
      }
                             if (hasChangedEingabestatusEndgueltig) {
        other.setEingabestatusEndgueltig(this.eingabestatusEndgueltig);
      }
                             if (hasChangedEingabestatusVorlaeufig) {
        other.setEingabestatusVorlaeufig(this.eingabestatusVorlaeufig);
      }
                             if (hasChangedErfassungsbesonderheit) {
        other.setErfassungsbesonderheit(this.erfassungsbesonderheit);
      }
                             if (hasChangedTextFuerPraesentation) {
        other.setTextFuerPraesentation(this.textFuerPraesentation);
      }
             }

    @Override
    public void copyChangedEntityAttributesUsingSetter(de.ivu.elect.business.gebietsbaum.entity.Gebiet other){
      if (other.isInstanceOf(Wahldurchfuehrungsgebiet.class)) {
        copyChangedEntityAttributesUsingSetter(other.castTo(Wahldurchfuehrungsgebiet.class).getEntity());
      } else {
        super.copyChangedEntityAttributesUsingSetter(other);
      }
    }




    @javax.persistence.Transient
    private transient WahldurchfuehrungsgebietTK tkCache;

    @Override
    protected void resetTkCache() {
    super.resetTkCache();
        tkCache = null;
    }

    public WahldurchfuehrungsgebietTK getWahldurchfuehrungsgebietTK(){
    if (tkCache==null) {
    tkCache = new WahldurchfuehrungsgebietTK(

getNummer()
,   (getGebietsart() == null) ? null : getGebietsart().getGebietsartTK()


  );}
  return tkCache;
}
    @Override
    public de.ivu.elect.jee.entity.tk.EntityTK getTk() {
       return getWahldurchfuehrungsgebietTK();
    }

  @Override
  public WahldurchfuehrungsgebietUK getUk(){
    return getWahldurchfuehrungsgebietUK();
  }

  @Override
  public Class< ? > getEntityClass() {
    return Wahldurchfuehrungsgebiet.class;
  }

public WahldurchfuehrungsgebietUK getWahldurchfuehrungsgebietUK(){

   return  new WahldurchfuehrungsgebietUK(

getNummer()
,     getGebietsart()==null?null:getGebietsart().getGebietsartUK()
,     getWahl()==null?null:getWahl().getWahlUK()
,     getWahltermin()==null?null:getWahltermin().getWahlterminUK()


  );
}

  @javax.persistence.Transient
  private transient WahldurchfuehrungsgebietProperties properties;

  @Override
  public WahldurchfuehrungsgebietProperties getProperties(){
    if (properties == null) {
      properties = new WahldurchfuehrungsgebietProperties(this);
    }
    return properties;
  }

  /**
   * @deprecated getProperties() verwenden.
   */
  @Deprecated
  public WahldurchfuehrungsgebietProperties getWahldurchfuehrungsgebietProperties(){
    return getProperties();
  }

  @Override
  public String getEntityTechnicalName() {
    return WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ENTITY_EINZAHL;
  }

  @Override
  public boolean isAenderungenProtokollieren(){
        if (super.isAenderungenProtokollieren()){
      return true;
    }
    
    return true;
  }


    @Override
   public void setProtokollierteAttributeMitWerten(java.util.Map<String, de.ivu.elect.jee.protokollierung.AttributWertVorher> werteVorher) {
            super.setProtokollierteAttributeMitWerten(werteVorher);
     
      if (werteVorher.containsKey(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A1_EINZAHL)){
        de.ivu.elect.jee.protokollierung.AttributWertVorher vorher = werteVorher.get(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A1_EINZAHL);

        anzahlWahlberechtigteOhneWahlschein =
                        vorher.getAttributTyp().getValueAsLong(vorher.getWertVorher());
                  }

            
      if (werteVorher.containsKey(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A2_EINZAHL)){
        de.ivu.elect.jee.protokollierung.AttributWertVorher vorher = werteVorher.get(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A2_EINZAHL);

        anzahlWahlberechtigteMitWahlschein =
                        vorher.getAttributTyp().getValueAsLong(vorher.getWertVorher());
                  }

            
      if (werteVorher.containsKey(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A3_EINZAHL)){
        de.ivu.elect.jee.protokollierung.AttributWertVorher vorher = werteVorher.get(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A3_EINZAHL);

        anzahlWahlberechtigteNichtImWaehlerverzeichnis =
                        vorher.getAttributTyp().getValueAsLong(vorher.getWertVorher());
                  }

            
      if (werteVorher.containsKey(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_BRIEFWAHL_IN_URNE_ERFASSEN_EINZAHL)){
        de.ivu.elect.jee.protokollierung.AttributWertVorher vorher = werteVorher.get(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_BRIEFWAHL_IN_URNE_ERFASSEN_EINZAHL);

        briefwahlInUrneErfassen =
     vorher.getAttributTyp().getValueAsBoolean(vorher.getWertVorher());
          }

            
      if (werteVorher.containsKey(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_EINGABESTATUS_ENDGUELTIG_EINZAHL)){
        de.ivu.elect.jee.protokollierung.AttributWertVorher vorher = werteVorher.get(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_EINGABESTATUS_ENDGUELTIG_EINZAHL);

        eingabestatusEndgueltig =
     (de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus) vorher.getAttributTyp().getValueAsEnum(vorher.getWertVorher());
          }

            
      if (werteVorher.containsKey(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_EINGABESTATUS_VORLAEUFIG_EINZAHL)){
        de.ivu.elect.jee.protokollierung.AttributWertVorher vorher = werteVorher.get(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_EINGABESTATUS_VORLAEUFIG_EINZAHL);

        eingabestatusVorlaeufig =
     (de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus) vorher.getAttributTyp().getValueAsEnum(vorher.getWertVorher());
          }

            
      if (werteVorher.containsKey(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ERFASSUNGSBESONDERHEIT_EINZAHL)){
        de.ivu.elect.jee.protokollierung.AttributWertVorher vorher = werteVorher.get(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ERFASSUNGSBESONDERHEIT_EINZAHL);

        erfassungsbesonderheit =
     (de.ivu.elect.business.gebietsbaum.entity.Erfassungsbesonderheit) vorher.getAttributTyp().getValueAsEnum(vorher.getWertVorher());
          }

            
      if (werteVorher.containsKey(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_TEXT_FUER_PRAESENTATION_EINZAHL)){
        de.ivu.elect.jee.protokollierung.AttributWertVorher vorher = werteVorher.get(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_TEXT_FUER_PRAESENTATION_EINZAHL);

        textFuerPraesentation =
     vorher.getAttributTyp().getValueAsString(vorher.getWertVorher());
          }

                }

  @Override
  public java.util.Map<String, de.ivu.elect.jee.protokollierung.VorherNachherWert> getProtokollierteAttributeMitWerten() {
    java.util.Map<String,de.ivu.elect.jee.protokollierung.VorherNachherWert> result;
        result = super.getProtokollierteAttributeMitWerten();
                        if (isSeitLadenVeraendertAnzahlWahlberechtigteOhneWahlschein) {
      result.put(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A1_EINZAHL, new de.ivu.elect.jee.protokollierung.VorherNachherWert(
                                    de.ivu.elect.jee.protokollierung.AttributTyp.LONG
                            , wertNachLadenAnzahlWahlberechtigteOhneWahlschein , anzahlWahlberechtigteOhneWahlschein));
    }
                            if (isSeitLadenVeraendertAnzahlWahlberechtigteMitWahlschein) {
      result.put(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A2_EINZAHL, new de.ivu.elect.jee.protokollierung.VorherNachherWert(
                                    de.ivu.elect.jee.protokollierung.AttributTyp.LONG
                            , wertNachLadenAnzahlWahlberechtigteMitWahlschein , anzahlWahlberechtigteMitWahlschein));
    }
                            if (isSeitLadenVeraendertAnzahlWahlberechtigteNichtImWaehlerverzeichnis) {
      result.put(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A3_EINZAHL, new de.ivu.elect.jee.protokollierung.VorherNachherWert(
                                    de.ivu.elect.jee.protokollierung.AttributTyp.LONG
                            , wertNachLadenAnzahlWahlberechtigteNichtImWaehlerverzeichnis , anzahlWahlberechtigteNichtImWaehlerverzeichnis));
    }
                            if (isSeitLadenVeraendertBriefwahlInUrneErfassen) {
      result.put(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_BRIEFWAHL_IN_URNE_ERFASSEN_EINZAHL, new de.ivu.elect.jee.protokollierung.VorherNachherWert(
         de.ivu.elect.jee.protokollierung.AttributTyp.BOOLEAN
                , wertNachLadenBriefwahlInUrneErfassen , briefwahlInUrneErfassen));
    }
                            if (isSeitLadenVeraendertEingabestatusEndgueltig) {
      result.put(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_EINGABESTATUS_ENDGUELTIG_EINZAHL, new de.ivu.elect.jee.protokollierung.VorherNachherWert(
         de.ivu.elect.jee.protokollierung.AttributTyp.ENUM
                , wertNachLadenEingabestatusEndgueltig , eingabestatusEndgueltig));
    }
                            if (isSeitLadenVeraendertEingabestatusVorlaeufig) {
      result.put(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_EINGABESTATUS_VORLAEUFIG_EINZAHL, new de.ivu.elect.jee.protokollierung.VorherNachherWert(
         de.ivu.elect.jee.protokollierung.AttributTyp.ENUM
                , wertNachLadenEingabestatusVorlaeufig , eingabestatusVorlaeufig));
    }
                            if (isSeitLadenVeraendertErfassungsbesonderheit) {
      result.put(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ERFASSUNGSBESONDERHEIT_EINZAHL, new de.ivu.elect.jee.protokollierung.VorherNachherWert(
         de.ivu.elect.jee.protokollierung.AttributTyp.ENUM
                , wertNachLadenErfassungsbesonderheit , erfassungsbesonderheit));
    }
                            if (isSeitLadenVeraendertTextFuerPraesentation) {
      result.put(WahldurchfuehrungsgebietConstants.MESSAGE_KEY_TEXT_FUER_PRAESENTATION_EINZAHL, new de.ivu.elect.jee.protokollierung.VorherNachherWert(
         de.ivu.elect.jee.protokollierung.AttributTyp.STRING
                , wertNachLadenTextFuerPraesentation , textFuerPraesentation));
    }
                return result;
  }

  @Override
  public void resetProtokollierteAttribute() {
        super.resetProtokollierteAttribute();
                      isSeitLadenVeraendertAnzahlWahlberechtigteOhneWahlschein = false;
      wertNachLadenAnzahlWahlberechtigteOhneWahlschein = null;
                          isSeitLadenVeraendertAnzahlWahlberechtigteMitWahlschein = false;
      wertNachLadenAnzahlWahlberechtigteMitWahlschein = null;
                          isSeitLadenVeraendertAnzahlWahlberechtigteNichtImWaehlerverzeichnis = false;
      wertNachLadenAnzahlWahlberechtigteNichtImWaehlerverzeichnis = null;
                          isSeitLadenVeraendertBriefwahlInUrneErfassen = false;
      wertNachLadenBriefwahlInUrneErfassen = null;
                          isSeitLadenVeraendertEingabestatusEndgueltig = false;
      wertNachLadenEingabestatusEndgueltig = null;
                          isSeitLadenVeraendertEingabestatusVorlaeufig = false;
      wertNachLadenEingabestatusVorlaeufig = null;
                          isSeitLadenVeraendertErfassungsbesonderheit = false;
      wertNachLadenErfassungsbesonderheit = null;
                          isSeitLadenVeraendertTextFuerPraesentation = false;
      wertNachLadenTextFuerPraesentation = null;
                   }

  @Override
  public  java.util.List<de.ivu.elect.jee.entity.EntityFachlichAbhaengigNode> getFachlichAbhaengigeEntitaeten(){
           java.util.List<de.ivu.elect.jee.entity.EntityFachlichAbhaengigNode> result = super.getFachlichAbhaengigeEntitaeten();
                            return result;
  }

        
            @Override
            protected String getInitialDiscriminator() {
              return "WAHLDURCHFUEHRUNGSGEBIET";
            }

            @Override
            public boolean isInstanceOf(Class<?> clazz) {
            return clazz.isInstance(this);
            }


            @Override
            public <E> de.ivu.elect.jee.entity.EntityContainer<E> castTo(Class<E> clazz) {
                return new de.ivu.elect.jee.entity.EntityContainer<>((E)this); // EntityContainer ist notwendig, da sonst von Hibernate die Entität wieder durch ihren Proxy ersetzt wird...
            }

  @Override
  public boolean isPersistent() {
    return getId() != null;
  }



            
                  @Override
                public void resetValidation() {
                  super.resetValidation();
        
    validationResult = null;
        }

        @javax.persistence.Transient
        private transient java.util.Set<de.ivu.elect.jee.entity.EntityConstraintViolation> validationResult;

                          @Override
                    public java.util.Set<de.ivu.elect.jee.entity.EntityConstraintViolation> validateEntity() {
            if (validationResult==null) {
               validationResult  = new java.util.HashSet<>();
                                  validationResult.addAll(super.validateEntity());
                                                                                                           de.ivu.elect.jee.entity.EntityConstraintCheck.checkValueRange(WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A1_MAX_VALUE, WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A1_MIN_VALUE, anzahlWahlberechtigteOhneWahlschein, this, WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A1_EINZAHL, validationResult);
                                                                                                   de.ivu.elect.jee.entity.EntityConstraintCheck.checkValueRange(WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A2_MAX_VALUE, WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A2_MIN_VALUE, anzahlWahlberechtigteMitWahlschein, this, WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A2_EINZAHL, validationResult);
                                                                                                   de.ivu.elect.jee.entity.EntityConstraintCheck.checkValueRange(WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A3_MAX_VALUE, WahldurchfuehrungsgebietConstants.ANZAHL_WAHLBERECHTIGTER_A3_MIN_VALUE, anzahlWahlberechtigteNichtImWaehlerverzeichnis, this, WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ANZAHL_WAHLBERECHTIGTER_A3_EINZAHL, validationResult);
                                                           de.ivu.elect.jee.entity.EntityConstraintCheck.checkNotNull(briefwahlInUrneErfassen, this, WahldurchfuehrungsgebietConstants.MESSAGE_KEY_BRIEFWAHL_IN_URNE_ERFASSEN_EINZAHL, validationResult);
                                                                                           de.ivu.elect.jee.entity.EntityConstraintCheck.checkNotNull(eingabestatusEndgueltig, this, WahldurchfuehrungsgebietConstants.MESSAGE_KEY_EINGABESTATUS_ENDGUELTIG_EINZAHL, validationResult);
                                                                                           de.ivu.elect.jee.entity.EntityConstraintCheck.checkNotNull(eingabestatusVorlaeufig, this, WahldurchfuehrungsgebietConstants.MESSAGE_KEY_EINGABESTATUS_VORLAEUFIG_EINZAHL, validationResult);
                                                                                           de.ivu.elect.jee.entity.EntityConstraintCheck.checkNotNull(erfassungsbesonderheit, this, WahldurchfuehrungsgebietConstants.MESSAGE_KEY_ERFASSUNGSBESONDERHEIT_EINZAHL, validationResult);
                                                                                                                                   de.ivu.elect.jee.entity.EntityConstraintCheck.checkStringLength(WahldurchfuehrungsgebietConstants.TEXT_FUER_PRAESENTATION_MAX_LENGTH ,  textFuerPraesentation, this, WahldurchfuehrungsgebietConstants.MESSAGE_KEY_TEXT_FUER_PRAESENTATION_EINZAHL, validationResult);
                                    }
             return validationResult;
        }

            }
