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

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

@javax.enterprise.inject.Vetoed
public class WahlvorschlagsPersonProperties 
extends de.ivu.elect.business.person.entity.PersonendatenProperties
{

   private final DatumUnterschriftProperty datumUnterschriftProperty;
    
   private final EingangssequenznummerProperty eingangssequenznummerProperty;
    
   private final ErstellungErfasserProperty erstellungErfasserProperty;
    
   private final ErstellungZeitpunktProperty erstellungZeitpunktProperty;
    
   private final WahlvorschlagsPersonTypProperty wahlvorschlagsPersonTypProperty;
          private final WahlvorschlagsPersonTypMitLeererAuswahlProperty wahlvorschlagsPersonTypMitLeererAuswahlProperty;
    


  public WahlvorschlagsPersonProperties(WahlvorschlagsPerson entity) {
          super(entity);
    
    this.datumUnterschriftProperty = new DatumUnterschriftProperty(entity);
            this.eingangssequenznummerProperty = new EingangssequenznummerProperty(entity);
            this.erstellungErfasserProperty = new ErstellungErfasserProperty(entity);
            this.erstellungZeitpunktProperty = new ErstellungZeitpunktProperty(entity);
            this.wahlvorschlagsPersonTypProperty = new WahlvorschlagsPersonTypProperty(entity);
        this.wahlvorschlagsPersonTypMitLeererAuswahlProperty = new WahlvorschlagsPersonTypMitLeererAuswahlProperty(entity);
          }

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



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

    protected final WahlvorschlagsPerson entity;

    public DatumUnterschriftProperty(WahlvorschlagsPerson entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public DatumUnterschriftProperty getDatumUnterschriftProperty() {
    return datumUnterschriftProperty;
  }


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

    protected final WahlvorschlagsPerson entity;

    public EingangssequenznummerProperty(WahlvorschlagsPerson entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

    @javax.validation.constraints.Min(de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPersonConstants.EINGANGSSEQUENZNUMMER_MIN_VALUE)
    @javax.validation.constraints.Max(de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPersonConstants.EINGANGSSEQUENZNUMMER_MAX_VALUE)
    
    @Override
    public java.lang.Long getValue() {
      return entity.getEingangssequenznummer();
    }

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

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


  }

  public EingangssequenznummerProperty getEingangssequenznummerProperty() {
    return eingangssequenznummerProperty;
  }


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

    protected final WahlvorschlagsPerson entity;

    public ErstellungErfasserProperty(WahlvorschlagsPerson entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

  @javax.validation.constraints.Size(max=de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPersonConstants.ERSTELLUNG_ERFASSER_MAX_LENGTH  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getErstellungErfasser();
    }

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

  }

  public ErstellungErfasserProperty getErstellungErfasserProperty() {
    return erstellungErfasserProperty;
  }


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

    protected final WahlvorschlagsPerson entity;

    public ErstellungZeitpunktProperty(WahlvorschlagsPerson entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public ErstellungZeitpunktProperty getErstellungZeitpunktProperty() {
    return erstellungZeitpunktProperty;
  }


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

    protected final WahlvorschlagsPerson entity;

    public WahlvorschlagsPersonTypProperty(WahlvorschlagsPerson entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPersonTyp getDefaultValue() {
      return getMetaDataIntern().getWahlvorschlagsPersonTypDefaultValue();
    }

    
    @Override
    public de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPersonTyp getValue() {
      return entity.getWahlvorschlagsPersonTyp();
    }

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

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

  }

  public WahlvorschlagsPersonTypProperty getWahlvorschlagsPersonTypProperty() {
    return wahlvorschlagsPersonTypProperty;
  }


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

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

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

        public WahlvorschlagsPersonTypMitLeererAuswahlProperty getWahlvorschlagsPersonTypMitLeererAuswahlProperty() {
        return wahlvorschlagsPersonTypMitLeererAuswahlProperty;
        }
    
  }