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

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

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

   private final AnlageArtProperty anlageArtProperty;
          private final AnlageArtMitLeererAuswahlProperty anlageArtMitLeererAuswahlProperty;
    
   private final BeschreibungProperty beschreibungProperty;
    
   private final DokumentVorlageArtProperty dokumentVorlageArtProperty;
          private final DokumentVorlageArtMitLeererAuswahlProperty dokumentVorlageArtMitLeererAuswahlProperty;
    
   private final NameProperty nameProperty;
    
   private final VersionsnummerProperty versionsnummerProperty;
    


  public DokumentVorlageProperties(DokumentVorlage entity) {
    
    this.anlageArtProperty = new AnlageArtProperty(entity);
        this.anlageArtMitLeererAuswahlProperty = new AnlageArtMitLeererAuswahlProperty(entity);
            this.beschreibungProperty = new BeschreibungProperty(entity);
            this.dokumentVorlageArtProperty = new DokumentVorlageArtProperty(entity);
        this.dokumentVorlageArtMitLeererAuswahlProperty = new DokumentVorlageArtMitLeererAuswahlProperty(entity);
            this.nameProperty = new NameProperty(entity);
            this.versionsnummerProperty = new VersionsnummerProperty(entity);
          }

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



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

    protected final DokumentVorlage entity;

    public AnlageArtProperty(DokumentVorlage entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public de.ivu.elect.business.dokumente.entity.DokumentVorlageAnlageArt getDefaultValue() {
      return getMetaDataIntern().getAnlageArtDefaultValue();
    }

    
    @Override
    public de.ivu.elect.business.dokumente.entity.DokumentVorlageAnlageArt getValue() {
      return entity.getAnlageArt();
    }

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

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

  }

  public AnlageArtProperty getAnlageArtProperty() {
    return anlageArtProperty;
  }


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

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

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

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

    protected final DokumentVorlage entity;

    public BeschreibungProperty(DokumentVorlage entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

  @javax.validation.constraints.Size(max=de.ivu.elect.business.dokumente.entity.DokumentVorlageConstants.BESCHREIBUNG_MAX_LENGTH  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getBeschreibung();
    }

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

  }

  public BeschreibungProperty getBeschreibungProperty() {
    return beschreibungProperty;
  }


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

    protected final DokumentVorlage entity;

    public DokumentVorlageArtProperty(DokumentVorlage entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public de.ivu.elect.business.dokumente.entity.DokumentVorlageArt getDefaultValue() {
      return getMetaDataIntern().getDokumentVorlageArtDefaultValue();
    }

    
    @Override
    public de.ivu.elect.business.dokumente.entity.DokumentVorlageArt getValue() {
      return entity.getDokumentVorlageArt();
    }

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

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

  }

  public DokumentVorlageArtProperty getDokumentVorlageArtProperty() {
    return dokumentVorlageArtProperty;
  }


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

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

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

        public DokumentVorlageArtMitLeererAuswahlProperty getDokumentVorlageArtMitLeererAuswahlProperty() {
        return dokumentVorlageArtMitLeererAuswahlProperty;
        }
    
  
    @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 DokumentVorlage entity;

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

    public DokumentVorlageMeta 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.dokumente.entity.DokumentVorlageConstants.NAME_MAX_LENGTH , min=1  )
    
    @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 VersionsnummerProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty
  {

    protected final DokumentVorlage entity;

    public VersionsnummerProperty(DokumentVorlage entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

  @javax.validation.constraints.Size(max=de.ivu.elect.business.dokumente.entity.DokumentVorlageConstants.VERSIONSNUMMER_MAX_LENGTH  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getVersionsnummer();
    }

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

  }

  public VersionsnummerProperty getVersionsnummerProperty() {
    return versionsnummerProperty;
  }


    
  }