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

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

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

   private final AnzahlStimmzettelProperty anzahlStimmzettelProperty;
    
   private final DiscriminatorProperty discriminatorProperty;
    
   private final FarbeProperty farbeProperty;
    
   private final GesperrtProperty gesperrtProperty;
    
   private final KennzeichenProperty kennzeichenProperty;
    
   private final KurznameProperty kurznameProperty;
    
   private final NameProperty nameProperty;
    
   private final PositionProperty positionProperty;
    
   private final QuorumProzenthuerdeProperty quorumProzenthuerdeProperty;
    
   private final StatusProperty statusProperty;
          private final StatusMitLeererAuswahlProperty statusMitLeererAuswahlProperty;
    
   private final AnzahlUnterstuetzerPerEintragungslisteProperty anzahlUnterstuetzerPerEintragungslisteProperty;
    
   private final UnterstuetzerErfassbarProperty unterstuetzerErfassbarProperty;
    
   private final WahlgangProperty wahlgangProperty;
          private final WahlgangMitLeererAuswahlProperty wahlgangMitLeererAuswahlProperty;
    


  public WahlProperties(Wahl entity) {
    
    this.anzahlStimmzettelProperty = new AnzahlStimmzettelProperty(entity);
            this.discriminatorProperty = new DiscriminatorProperty(entity);
            this.farbeProperty = new FarbeProperty(entity);
            this.gesperrtProperty = new GesperrtProperty(entity);
            this.kennzeichenProperty = new KennzeichenProperty(entity);
            this.kurznameProperty = new KurznameProperty(entity);
            this.nameProperty = new NameProperty(entity);
            this.positionProperty = new PositionProperty(entity);
            this.quorumProzenthuerdeProperty = new QuorumProzenthuerdeProperty(entity);
            this.statusProperty = new StatusProperty(entity);
        this.statusMitLeererAuswahlProperty = new StatusMitLeererAuswahlProperty(entity);
            this.anzahlUnterstuetzerPerEintragungslisteProperty = new AnzahlUnterstuetzerPerEintragungslisteProperty(entity);
            this.unterstuetzerErfassbarProperty = new UnterstuetzerErfassbarProperty(entity);
            this.wahlgangProperty = new WahlgangProperty(entity);
        this.wahlgangMitLeererAuswahlProperty = new WahlgangMitLeererAuswahlProperty(entity);
          }

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



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

    protected final Wahl entity;

    public AnzahlStimmzettelProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public java.lang.Long getDefaultValue() {
      return getMetaDataIntern().getAnzahlStimmzettelDefaultValue();
    }

    @javax.validation.constraints.Min(de.ivu.elect.business.wahl.entity.WahlConstants.ANZAHL_STIMMZETTEL_MIN_VALUE)
    @javax.validation.constraints.Max(de.ivu.elect.business.wahl.entity.WahlConstants.ANZAHL_STIMMZETTEL_MAX_VALUE)
    
    @Override
    public java.lang.Long getValue() {
      return entity.getAnzahlStimmzettel();
    }

    @Override
    public void setValue(java.lang.Long value) {
      entity.setAnzahlStimmzettel(value);
    }
    @Override
    public long getMinValue() {
      return getMetaDataIntern().getAnzahlStimmzettelMinValue();
    }

    @Override
    public long getMaxValue() {
      return getMetaDataIntern().getAnzahlStimmzettelMaxValue();
    }


  }

  public AnzahlStimmzettelProperty getAnzahlStimmzettelProperty() {
    return anzahlStimmzettelProperty;
  }


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

    protected final Wahl entity;

    public DiscriminatorProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public DiscriminatorProperty getDiscriminatorProperty() {
    return discriminatorProperty;
  }


    
  
    @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 Wahl entity;

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

    public WahlMeta 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.WahlConstants.FARBE_MAX_LENGTH , min=1  )
    
    @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 GesperrtProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractBooleanProperty
  {

    protected final Wahl entity;

    public GesperrtProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

    @Deprecated // Wahlstatus verwenden
    @Override
    public java.lang.Boolean getValue() {
      return entity.getGesperrt();
    }

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

  }

  public GesperrtProperty getGesperrtProperty() {
    return gesperrtProperty;
  }


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

    protected final Wahl entity;

    public KennzeichenProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public KennzeichenProperty getKennzeichenProperty() {
    return kennzeichenProperty;
  }


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

    protected final Wahl entity;

    public KurznameProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public KurznameProperty getKurznameProperty() {
    return kurznameProperty;
  }


    
  
    @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 Wahl entity;

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

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

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

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

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

  @javax.validation.constraints.Size(max=de.ivu.elect.business.wahl.entity.WahlConstants.NAME_MAX_LENGTH , min=1  )
    
    @Override
    public String getValue() {
      return entity.getName();
    }

    @Override
    public void setValue(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 PositionProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractLongProperty
  {

    protected final Wahl entity;

    public PositionProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public java.lang.Long getDefaultValue() {
      return getMetaDataIntern().getPositionDefaultValue();
    }

    @javax.validation.constraints.Min(de.ivu.elect.business.wahl.entity.WahlConstants.POSITION_MIN_VALUE)
    @javax.validation.constraints.Max(de.ivu.elect.business.wahl.entity.WahlConstants.POSITION_MAX_VALUE)
    
    @Override
    public java.lang.Long getValue() {
      return entity.getPosition();
    }

    @Override
    public void setValue(java.lang.Long value) {
      entity.setPosition(value);
    }
    @Override
    public long getMinValue() {
      return getMetaDataIntern().getPositionMinValue();
    }

    @Override
    public long getMaxValue() {
      return getMetaDataIntern().getPositionMaxValue();
    }


  }

  public PositionProperty getPositionProperty() {
    return positionProperty;
  }


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

    protected final Wahl entity;

    public QuorumProzenthuerdeProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public java.math.BigDecimal getDefaultValue() {
      return getMetaDataIntern().getQuorumProzenthuerdeDefaultValue();
    }

    @javax.validation.constraints.Min(de.ivu.elect.business.wahl.entity.WahlConstants.QUORUM_MIN_VALUE)
    @javax.validation.constraints.Max(de.ivu.elect.business.wahl.entity.WahlConstants.QUORUM_MAX_VALUE)
    
    @Override
    public java.math.BigDecimal getValue() {
      return entity.getQuorumProzenthuerde();
    }

    @Override
    public void setValue(java.math.BigDecimal value) {
      entity.setQuorumProzenthuerde(value);
    }
    @Override
    public long getMinValue() {
      return getMetaDataIntern().getQuorumProzenthuerdeMinValue();
    }

    @Override
    public long getMaxValue() {
      return getMetaDataIntern().getQuorumProzenthuerdeMaxValue();
    }



    @Override
    public String getPattern() {
      return "##0.00";
    }

  }

  public QuorumProzenthuerdeProperty getQuorumProzenthuerdeProperty() {
    return quorumProzenthuerdeProperty;
  }


    
  
    @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.WahlStatus>
  {

    protected final Wahl entity;

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

    public WahlMeta 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.WahlStatus getDefaultValue() {
      return getMetaDataIntern().getStatusDefaultValue();
    }

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

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

    @Override
    public Class<de.ivu.elect.business.wahl.entity.WahlStatus> getEnumClass() {
      return de.ivu.elect.business.wahl.entity.WahlStatus.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(Wahl 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 AnzahlUnterstuetzerPerEintragungslisteProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractLongProperty
  {

    protected final Wahl entity;

    public AnzahlUnterstuetzerPerEintragungslisteProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public java.lang.Long getDefaultValue() {
      return getMetaDataIntern().getAnzahlUnterstuetzerPerEintragungslisteDefaultValue();
    }

    @javax.validation.constraints.Min(de.ivu.elect.business.wahl.entity.WahlConstants.UNTERSTUETZER_EINTRAGUNGSLISTE_MIN_VALUE)
    @javax.validation.constraints.Max(de.ivu.elect.business.wahl.entity.WahlConstants.UNTERSTUETZER_EINTRAGUNGSLISTE_MAX_VALUE)
    
    @Override
    public java.lang.Long getValue() {
      return entity.getAnzahlUnterstuetzerPerEintragungsliste();
    }

    @Override
    public void setValue(java.lang.Long value) {
      entity.setAnzahlUnterstuetzerPerEintragungsliste(value);
    }
    @Override
    public long getMinValue() {
      return getMetaDataIntern().getAnzahlUnterstuetzerPerEintragungslisteMinValue();
    }

    @Override
    public long getMaxValue() {
      return getMetaDataIntern().getAnzahlUnterstuetzerPerEintragungslisteMaxValue();
    }


  }

  public AnzahlUnterstuetzerPerEintragungslisteProperty getAnzahlUnterstuetzerPerEintragungslisteProperty() {
    return anzahlUnterstuetzerPerEintragungslisteProperty;
  }


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

    protected final Wahl entity;

    public UnterstuetzerErfassbarProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public UnterstuetzerErfassbarProperty getUnterstuetzerErfassbarProperty() {
    return unterstuetzerErfassbarProperty;
  }


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

    protected final Wahl entity;

    public WahlgangProperty(Wahl entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

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

  }

  public WahlgangProperty getWahlgangProperty() {
    return wahlgangProperty;
  }


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

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

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

        public WahlgangMitLeererAuswahlProperty getWahlgangMitLeererAuswahlProperty() {
        return wahlgangMitLeererAuswahlProperty;
        }
    
  }