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

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

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

   private final DiscriminatorProperty discriminatorProperty;
    
   private final FarbeProperty farbeProperty;
    
   private final FarbeExternProperty farbeExternProperty;
    
   private final GruppeArtProperty gruppeArtProperty;
          private final GruppeArtMitLeererAuswahlProperty gruppeArtMitLeererAuswahlProperty;
    
   private final InPraesentationProperty inPraesentationProperty;
    
   private final KurznameProperty kurznameProperty;
    
   private final NameProperty nameProperty;
    
   private final PrivilegiertProperty privilegiertProperty;
    
   private final RelativePositionProperty relativePositionProperty;
    
   private final SchluesselProperty schluesselProperty;
    
   private final VorgegebenePositionProperty vorgegebenePositionProperty;
    
   private final ZusatzbezeichnungProperty zusatzbezeichnungProperty;
    


  public GruppeProperties(Gruppe entity) {
    
    this.discriminatorProperty = new DiscriminatorProperty(entity);
            this.farbeProperty = new FarbeProperty(entity);
            this.farbeExternProperty = new FarbeExternProperty(entity);
            this.gruppeArtProperty = new GruppeArtProperty(entity);
        this.gruppeArtMitLeererAuswahlProperty = new GruppeArtMitLeererAuswahlProperty(entity);
            this.inPraesentationProperty = new InPraesentationProperty(entity);
            this.kurznameProperty = new KurznameProperty(entity);
            this.nameProperty = new NameProperty(entity);
            this.privilegiertProperty = new PrivilegiertProperty(entity);
            this.relativePositionProperty = new RelativePositionProperty(entity);
            this.schluesselProperty = new SchluesselProperty(entity);
            this.vorgegebenePositionProperty = new VorgegebenePositionProperty(entity);
            this.zusatzbezeichnungProperty = new ZusatzbezeichnungProperty(entity);
          }

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



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

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

    public GruppeMeta 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.gruppe.entity.GruppeConstants.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 Gruppe entity;

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

    public GruppeMeta 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.gruppe.entity.GruppeConstants.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 FarbeExternProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty
  {

    protected final Gruppe entity;

    public FarbeExternProperty(Gruppe entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

  @javax.validation.constraints.Size(max=de.ivu.elect.business.gruppe.entity.GruppeConstants.FARBE_EXTERN_MAX_LENGTH  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getFarbeExtern();
    }

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

  }

  public FarbeExternProperty getFarbeExternProperty() {
    return farbeExternProperty;
  }


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

    protected final Gruppe entity;

    public GruppeArtProperty(Gruppe entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public de.ivu.elect.business.gruppe.entity.GruppeArt getDefaultValue() {
      return getMetaDataIntern().getGruppeArtDefaultValue();
    }

    
    @Override
    public de.ivu.elect.business.gruppe.entity.GruppeArt getValue() {
      return entity.getGruppeArt();
    }

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

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

  }

  public GruppeArtProperty getGruppeArtProperty() {
    return gruppeArtProperty;
  }


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

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

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

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

    protected final Gruppe entity;

    public InPraesentationProperty(Gruppe entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public InPraesentationProperty getInPraesentationProperty() {
    return inPraesentationProperty;
  }


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

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

    public GruppeMeta 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.gruppe.entity.GruppeConstants.KURZNAME_MAX_LENGTH , min=1  )
    
    @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 Gruppe entity;

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

    public GruppeMeta 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.gruppe.entity.GruppeConstants.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 PrivilegiertProperty extends
      de.ivu.elect.jee.presentation.dynamicform.AbstractBooleanProperty
  {

    protected final Gruppe entity;

    public PrivilegiertProperty(Gruppe entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public PrivilegiertProperty getPrivilegiertProperty() {
    return privilegiertProperty;
  }


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

    protected final Gruppe entity;

    public RelativePositionProperty(Gruppe entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

    @javax.validation.constraints.Min(de.ivu.elect.business.gruppe.entity.GruppeConstants.RELATIVE_POSITION_MIN_VALUE)
    @javax.validation.constraints.Max(de.ivu.elect.business.gruppe.entity.GruppeConstants.RELATIVE_POSITION_MAX_VALUE)
    
    @Override
    public java.lang.Long getValue() {
      return entity.getRelativePosition();
    }

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

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


  }

  public RelativePositionProperty getRelativePositionProperty() {
    return relativePositionProperty;
  }


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

    protected final Gruppe entity;

    public SchluesselProperty(Gruppe entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

  @javax.validation.constraints.Size(max=de.ivu.elect.business.gruppe.entity.GruppeConstants.SCHLUESSEL_MAX_LENGTH , min=1  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getSchluessel();
    }

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

  }

  public SchluesselProperty getSchluesselProperty() {
    return schluesselProperty;
  }


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

    protected final Gruppe entity;

    public VorgegebenePositionProperty(Gruppe entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

    @javax.validation.constraints.Min(de.ivu.elect.business.gruppe.entity.GruppeConstants.VORGEGEBENE_POSITION_MIN_VALUE)
    @javax.validation.constraints.Max(de.ivu.elect.business.gruppe.entity.GruppeConstants.VORGEGEBENE_POSITION_MAX_VALUE)
    
    @Override
    public java.lang.Long getValue() {
      return entity.getVorgegebenePosition();
    }

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

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


  }

  public VorgegebenePositionProperty getVorgegebenePositionProperty() {
    return vorgegebenePositionProperty;
  }


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

    protected final Gruppe entity;

    public ZusatzbezeichnungProperty(Gruppe entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

  @javax.validation.constraints.Size(max=de.ivu.elect.business.gruppe.entity.GruppeConstants.ZUSATZBEZEICHNUNG_MAX_LENGTH  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getZusatzbezeichnung();
    }

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

  }

  public ZusatzbezeichnungProperty getZusatzbezeichnungProperty() {
    return zusatzbezeichnungProperty;
  }


    
  }