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

import de.ivu.elect.jee.faces.FacesContextUtil;

@javax.enterprise.inject.Vetoed
public class WahlterminProperties 
{

   private final BuergerZugelassenProperty buergerZugelassenProperty;
          private final BuergerZugelassenMitLeererAuswahlProperty buergerZugelassenMitLeererAuswahlProperty;
    
   private final DokumentvorlagenProperty dokumentvorlagenProperty;
          private final DokumentvorlagenMitLeererAuswahlProperty dokumentvorlagenMitLeererAuswahlProperty;
    
   private final FarbeProperty farbeProperty;
    
   private final NameProperty nameProperty;
    
   private final NummerProperty nummerProperty;
    
   private final StatusProperty statusProperty;
          private final StatusMitLeererAuswahlProperty statusMitLeererAuswahlProperty;
    
   private final StichwahlMoeglichProperty stichwahlMoeglichProperty;
    
   private final StichwahlWahldatumProperty stichwahlWahldatumProperty;
    
   private final WahldatumProperty wahldatumProperty;
    


  public WahlterminProperties(Wahltermin entity) {
    
    this.buergerZugelassenProperty = new BuergerZugelassenProperty(entity);
        this.buergerZugelassenMitLeererAuswahlProperty = new BuergerZugelassenMitLeererAuswahlProperty(entity);
            this.dokumentvorlagenProperty = new DokumentvorlagenProperty(entity);
        this.dokumentvorlagenMitLeererAuswahlProperty = new DokumentvorlagenMitLeererAuswahlProperty(entity);
            this.farbeProperty = new FarbeProperty(entity);
            this.nameProperty = new NameProperty(entity);
            this.nummerProperty = new NummerProperty(entity);
            this.statusProperty = new StatusProperty(entity);
        this.statusMitLeererAuswahlProperty = new StatusMitLeererAuswahlProperty(entity);
            this.stichwahlMoeglichProperty = new StichwahlMoeglichProperty(entity);
            this.stichwahlWahldatumProperty = new StichwahlWahldatumProperty(entity);
            this.wahldatumProperty = new WahldatumProperty(entity);
          }

  private static WahlterminMeta getMetaData() {
    return FacesContextUtil.getElValue("#{wahlterminMeta}", WahlterminMeta.class);
  }



    @javax.enterprise.inject.Vetoed
    @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
   public static class BuergerZugelassenProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractEnumProperty<de.ivu.elect.business.personenpruefung.control.wahlrecht.WahlrechtStaatsangehoerigkeit>
  {

    protected final Wahltermin entity;

    public BuergerZugelassenProperty(Wahltermin entity) {
      super();
      this.entity = entity;
    }

    public WahlterminMeta getMetaDataIntern() {
        return getMetaData();
    }

    @Override
    public String getDefaultLabel() {
      return getMetaDataIntern().getBuergerZugelassenEinzahlMessage();
    }

    @Override
    public boolean getDefaultRequired() {
      return getMetaDataIntern().isBuergerZugelassenRequired();
    }

    @Override
    public de.ivu.elect.business.personenpruefung.control.wahlrecht.WahlrechtStaatsangehoerigkeit getDefaultValue() {
      return getMetaDataIntern().getBuergerZugelassenDefaultValue();
    }

    
    @Override
    public de.ivu.elect.business.personenpruefung.control.wahlrecht.WahlrechtStaatsangehoerigkeit getValue() {
      return entity.getBuergerZugelassen();
    }

    @Override
    public void setValue(de.ivu.elect.business.personenpruefung.control.wahlrecht.WahlrechtStaatsangehoerigkeit value) {
      entity.setBuergerZugelassen(value);
    }
    @Override
    public java.util.List<de.ivu.elect.business.personenpruefung.control.wahlrecht.WahlrechtStaatsangehoerigkeit> getValues() {
      return java.util.Arrays.stream(de.ivu.elect.business.personenpruefung.control.wahlrecht.WahlrechtStaatsangehoerigkeit.values()).filter(getValueFilter()).sorted().collect(java.util.stream.Collectors.toList());
    }

    @Override
    public Class<de.ivu.elect.business.personenpruefung.control.wahlrecht.WahlrechtStaatsangehoerigkeit> getEnumClass() {
      return de.ivu.elect.business.personenpruefung.control.wahlrecht.WahlrechtStaatsangehoerigkeit.class;
    }

  }

  public BuergerZugelassenProperty getBuergerZugelassenProperty() {
    return buergerZugelassenProperty;
  }


            @javax.enterprise.inject.Vetoed
        @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
        public static class BuergerZugelassenMitLeererAuswahlProperty extends BuergerZugelassenProperty {
        public BuergerZugelassenMitLeererAuswahlProperty(Wahltermin entity) {
        super(entity);
        }

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

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

        public BuergerZugelassenMitLeererAuswahlProperty getBuergerZugelassenMitLeererAuswahlProperty() {
        return buergerZugelassenMitLeererAuswahlProperty;
        }
    
  
    @javax.enterprise.inject.Vetoed
    @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
   public static class DokumentvorlagenProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractEnumProperty<de.ivu.elect.business.wahl.entity.WahlartDokumentvorlagen>
  {

    protected final Wahltermin entity;

    public DokumentvorlagenProperty(Wahltermin entity) {
      super();
      this.entity = entity;
    }

    public WahlterminMeta getMetaDataIntern() {
        return getMetaData();
    }

    @Override
    public String getDefaultLabel() {
      return getMetaDataIntern().getDokumentvorlagenEinzahlMessage();
    }

    @Override
    public boolean getDefaultRequired() {
      return getMetaDataIntern().isDokumentvorlagenRequired();
    }

    @Override
    public de.ivu.elect.business.wahl.entity.WahlartDokumentvorlagen getDefaultValue() {
      return getMetaDataIntern().getDokumentvorlagenDefaultValue();
    }

    
    @Override
    public de.ivu.elect.business.wahl.entity.WahlartDokumentvorlagen getValue() {
      return entity.getDokumentvorlagen();
    }

    @Override
    public void setValue(de.ivu.elect.business.wahl.entity.WahlartDokumentvorlagen value) {
      entity.setDokumentvorlagen(value);
    }
    @Override
    public java.util.List<de.ivu.elect.business.wahl.entity.WahlartDokumentvorlagen> getValues() {
      return java.util.Arrays.stream(de.ivu.elect.business.wahl.entity.WahlartDokumentvorlagen.values()).filter(getValueFilter()).sorted().collect(java.util.stream.Collectors.toList());
    }

    @Override
    public Class<de.ivu.elect.business.wahl.entity.WahlartDokumentvorlagen> getEnumClass() {
      return de.ivu.elect.business.wahl.entity.WahlartDokumentvorlagen.class;
    }

  }

  public DokumentvorlagenProperty getDokumentvorlagenProperty() {
    return dokumentvorlagenProperty;
  }


            @javax.enterprise.inject.Vetoed
        @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
        public static class DokumentvorlagenMitLeererAuswahlProperty extends DokumentvorlagenProperty {
        public DokumentvorlagenMitLeererAuswahlProperty(Wahltermin entity) {
        super(entity);
        }

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

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

        public DokumentvorlagenMitLeererAuswahlProperty getDokumentvorlagenMitLeererAuswahlProperty() {
        return dokumentvorlagenMitLeererAuswahlProperty;
        }
    
  
    @javax.enterprise.inject.Vetoed
    @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
   public static class FarbeProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty
  {

    protected final Wahltermin entity;

    public FarbeProperty(Wahltermin entity) {
      super();
      this.entity = entity;
    }

    public WahlterminMeta getMetaDataIntern() {
        return getMetaData();
    }

    @Override
    public String getDefaultLabel() {
      return getMetaDataIntern().getFarbeEinzahlMessage();
    }

    @Override
    public boolean getDefaultRequired() {
      return getMetaDataIntern().isFarbeRequired();
    }

    @Override
    public java.lang.String getDefaultValue() {
      return getMetaDataIntern().getFarbeDefaultValue();
    }

  @javax.validation.constraints.Size(max=de.ivu.elect.business.wahl.entity.WahlterminConstants.FARBE_MAX_LENGTH  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getFarbe();
    }

    @Override
    public void setValue(java.lang.String value) {
      entity.setFarbe(value);
    }
    @Override
    public int getDefaultMaxLength() {
      return getMetaDataIntern().getFarbeMaxLength();
    }

  }

  public FarbeProperty getFarbeProperty() {
    return farbeProperty;
  }


    
  
    @javax.enterprise.inject.Vetoed
    @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
   public static class NameProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty
  {

    protected final Wahltermin entity;

    public NameProperty(Wahltermin entity) {
      super();
      this.entity = entity;
    }

    public WahlterminMeta getMetaDataIntern() {
        return getMetaData();
    }

    @Override
    public String getDefaultLabel() {
      return getMetaDataIntern().getNameEinzahlMessage();
    }

    @Override
    public boolean getDefaultRequired() {
      return getMetaDataIntern().isNameRequired();
    }

    @Override
    public java.lang.String getDefaultValue() {
      return getMetaDataIntern().getNameDefaultValue();
    }

  @javax.validation.constraints.Size(max=de.ivu.elect.business.wahl.entity.WahlterminConstants.NAME_MAX_LENGTH  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getName();
    }

    @Override
    public void setValue(java.lang.String value) {
      entity.setName(value);
    }
    @Override
    public int getDefaultMaxLength() {
      return getMetaDataIntern().getNameMaxLength();
    }

  }

  public NameProperty getNameProperty() {
    return nameProperty;
  }


    
  
    @javax.enterprise.inject.Vetoed
    @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
   public static class NummerProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty
  {

    protected final Wahltermin entity;

    public NummerProperty(Wahltermin entity) {
      super();
      this.entity = entity;
    }

    public WahlterminMeta getMetaDataIntern() {
        return getMetaData();
    }

    @Override
    public String getDefaultLabel() {
      return getMetaDataIntern().getNummerEinzahlMessage();
    }

    @Override
    public boolean getDefaultRequired() {
      return getMetaDataIntern().isNummerRequired();
    }

    @Override
    public java.lang.String getDefaultValue() {
      return getMetaDataIntern().getNummerDefaultValue();
    }

  @javax.validation.constraints.Size(max=de.ivu.elect.business.wahl.entity.WahlterminConstants.NUMMER_MAX_LENGTH , min=1  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getNummer();
    }

    @Override
    public void setValue(java.lang.String value) {
      entity.setNummer(value);
    }
    @Override
    public int getDefaultMaxLength() {
      return getMetaDataIntern().getNummerMaxLength();
    }

  }

  public NummerProperty getNummerProperty() {
    return nummerProperty;
  }


    
  
    @javax.enterprise.inject.Vetoed
    @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
   public static class StatusProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractEnumProperty<de.ivu.elect.business.wahl.entity.WahlterminStatus>
  {

    protected final Wahltermin entity;

    public StatusProperty(Wahltermin entity) {
      super();
      this.entity = entity;
    }

    public WahlterminMeta getMetaDataIntern() {
        return getMetaData();
    }

    @Override
    public String getDefaultLabel() {
      return getMetaDataIntern().getStatusEinzahlMessage();
    }

    @Override
    public boolean getDefaultRequired() {
      return getMetaDataIntern().isStatusRequired();
    }

    @Override
    public de.ivu.elect.business.wahl.entity.WahlterminStatus getDefaultValue() {
      return getMetaDataIntern().getStatusDefaultValue();
    }

    
    @Override
    public de.ivu.elect.business.wahl.entity.WahlterminStatus getValue() {
      return entity.getStatus();
    }

    @Override
    public void setValue(de.ivu.elect.business.wahl.entity.WahlterminStatus value) {
      entity.setStatus(value);
    }
    @Override
    public java.util.List<de.ivu.elect.business.wahl.entity.WahlterminStatus> getValues() {
      return java.util.Arrays.stream(de.ivu.elect.business.wahl.entity.WahlterminStatus.values()).filter(getValueFilter()).sorted().collect(java.util.stream.Collectors.toList());
    }

    @Override
    public Class<de.ivu.elect.business.wahl.entity.WahlterminStatus> getEnumClass() {
      return de.ivu.elect.business.wahl.entity.WahlterminStatus.class;
    }

  }

  public StatusProperty getStatusProperty() {
    return statusProperty;
  }


            @javax.enterprise.inject.Vetoed
        @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
        public static class StatusMitLeererAuswahlProperty extends StatusProperty {
        public StatusMitLeererAuswahlProperty(Wahltermin entity) {
        super(entity);
        }

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

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

        public StatusMitLeererAuswahlProperty getStatusMitLeererAuswahlProperty() {
        return statusMitLeererAuswahlProperty;
        }
    
  
    @javax.enterprise.inject.Vetoed
    @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
   public static class StichwahlMoeglichProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractBooleanProperty
  {

    protected final Wahltermin entity;

    public StichwahlMoeglichProperty(Wahltermin entity) {
      super();
      this.entity = entity;
    }

    public WahlterminMeta getMetaDataIntern() {
        return getMetaData();
    }

    @Override
    public String getDefaultLabel() {
      return getMetaDataIntern().getStichwahlMoeglichEinzahlMessage();
    }

    @Override
    public boolean getDefaultRequired() {
      return getMetaDataIntern().isStichwahlMoeglichRequired();
    }

    @Override
    public java.lang.Boolean getDefaultValue() {
      return getMetaDataIntern().getStichwahlMoeglichDefaultValue();
    }

    
    @Override
    public java.lang.Boolean getValue() {
      return entity.getStichwahlMoeglich();
    }

    @Override
    public void setValue(java.lang.Boolean value) {
      entity.setStichwahlMoeglich(value);
    }

  }

  public StichwahlMoeglichProperty getStichwahlMoeglichProperty() {
    return stichwahlMoeglichProperty;
  }


    
  
    @javax.enterprise.inject.Vetoed
    @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
   public static class StichwahlWahldatumProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractDateProperty
  {

    protected final Wahltermin entity;

    public StichwahlWahldatumProperty(Wahltermin entity) {
      super();
      this.entity = entity;
    }

    public WahlterminMeta getMetaDataIntern() {
        return getMetaData();
    }

    @Override
    public String getDefaultLabel() {
      return getMetaDataIntern().getStichwahlWahldatumEinzahlMessage();
    }

    @Override
    public boolean getDefaultRequired() {
      return getMetaDataIntern().isStichwahlWahldatumRequired();
    }

    @Override
    public java.util.Date getDefaultValue() {
      return getMetaDataIntern().getStichwahlWahldatumDefaultValue();
    }

    
    @Override
    public java.util.Date getValue() {
      return entity.getStichwahlWahldatum();
    }

    @Override
    public void setValue(java.util.Date value) {
      entity.setStichwahlWahldatum(value);
    }

  }

  public StichwahlWahldatumProperty getStichwahlWahldatumProperty() {
    return stichwahlWahldatumProperty;
  }


    
  
    @javax.enterprise.inject.Vetoed
    @Deprecated // ELECT-4623 Nicht mehr neu verwenden, TODO Verwendung reduzieren
   public static class WahldatumProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractDateProperty
  {

    protected final Wahltermin entity;

    public WahldatumProperty(Wahltermin entity) {
      super();
      this.entity = entity;
    }

    public WahlterminMeta getMetaDataIntern() {
        return getMetaData();
    }

    @Override
    public String getDefaultLabel() {
      return getMetaDataIntern().getWahldatumEinzahlMessage();
    }

    @Override
    public boolean getDefaultRequired() {
      return getMetaDataIntern().isWahldatumRequired();
    }

    @Override
    public java.util.Date getDefaultValue() {
      return getMetaDataIntern().getWahldatumDefaultValue();
    }

    
    @Override
    public java.util.Date getValue() {
      return entity.getWahldatum();
    }

    @Override
    public void setValue(java.util.Date value) {
      entity.setWahldatum(value);
    }

  }

  public WahldatumProperty getWahldatumProperty() {
    return wahldatumProperty;
  }


    
  }