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

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

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

   private final ErfassungZeitpunktProperty erfassungZeitpunktProperty;
    
   private final GueltigkeitProperty gueltigkeitProperty;
          private final GueltigkeitMitLeererAuswahlProperty gueltigkeitMitLeererAuswahlProperty;
    
   private final PositionProperty positionProperty;
    


  public EintragungslisteEintragProperties(EintragungslisteEintrag entity) {
        
    this.erfassungZeitpunktProperty = new ErfassungZeitpunktProperty(entity);
            this.gueltigkeitProperty = new GueltigkeitProperty(entity);
        this.gueltigkeitMitLeererAuswahlProperty = new GueltigkeitMitLeererAuswahlProperty(entity);
            this.positionProperty = new PositionProperty(entity);
          }

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



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

    protected final EintragungslisteEintrag entity;

    public ErfassungZeitpunktProperty(EintragungslisteEintrag entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public ErfassungZeitpunktProperty getErfassungZeitpunktProperty() {
    return erfassungZeitpunktProperty;
  }


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

    protected final EintragungslisteEintrag entity;

    public GueltigkeitProperty(EintragungslisteEintrag entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public de.ivu.elect.business.unterstuetzer.entity.EintragungslisteEintragGueltigkeit getDefaultValue() {
      return getMetaDataIntern().getGueltigkeitDefaultValue();
    }

    
    @Override
    public de.ivu.elect.business.unterstuetzer.entity.EintragungslisteEintragGueltigkeit getValue() {
      return entity.getGueltigkeit();
    }

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

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

  }

  public GueltigkeitProperty getGueltigkeitProperty() {
    return gueltigkeitProperty;
  }


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

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

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

        public GueltigkeitMitLeererAuswahlProperty getGueltigkeitMitLeererAuswahlProperty() {
        return gueltigkeitMitLeererAuswahlProperty;
        }
    
  
    @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 EintragungslisteEintrag entity;

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

    public EintragungslisteEintragMeta 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.unterstuetzer.entity.EintragungslisteEintragConstants.POSITION_MIN_VALUE)
    @javax.validation.constraints.Max(de.ivu.elect.business.unterstuetzer.entity.EintragungslisteEintragConstants.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 int getMaxLength() {
      return getMetaDataIntern().getPositionMaxLength();
    }

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


  }

  public PositionProperty getPositionProperty() {
    return positionProperty;
  }


    
  }