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

import de.ivu.elect.jee.presentation.dynamicform.Property;

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

private final Email entity;


    
    private
                de.ivu.elect.jee.presentation.dynamicform.LambdaLongProperty
                  anzahlSendeversucheProperty;

        
        
    private
                de.ivu.elect.jee.presentation.dynamicform.LambdaStringProperty
                  empfaengerProperty;

        
        
    private
                de.ivu.elect.jee.presentation.dynamicform.LambdaStringProperty
                  fehlermeldungProperty;

        
        
    private
                de.ivu.elect.jee.presentation.dynamicform.LambdaStringProperty
                  inhaltProperty;

        
        
    private
                de.ivu.elect.jee.presentation.dynamicform.LambdaTimestampProperty
                  letzterSendeversuchProperty;

        
        
    private
                de.ivu.elect.jee.presentation.dynamicform.LambdaEnumProperty<de.ivu.elect.business.email.entity.EmailStatusType>
                  statusProperty;

                private de.ivu.elect.jee.presentation.dynamicform.LambdaEnumProperty<de.ivu.elect.business.email.entity.EmailStatusType> statusMitLeererAuswahlProperty;
        
    

public EmailProperties(Email entity) {
this.entity = entity;

}

private static EmailMeta getMetaData() {
return de.ivu.elect.jee.cdi.BeanManagerUtil.getBeanByClass( EmailMeta.class);
}


    

        public
                    de.ivu.elect.jee.presentation.dynamicform.AbstractLongProperty
                getAnzahlSendeversucheProperty() {
        if (anzahlSendeversucheProperty == null) {
        anzahlSendeversucheProperty = new


                    de.ivu.elect.jee.presentation.dynamicform.LambdaLongProperty
        
        (
        getMetaData().getAnzahlSendeversucheEinzahlMessage(),
        getMetaData().getAnzahlSendeversucheDefaultValue(),
        getMetaData().isAnzahlSendeversucheRequired(),
                entity::setAnzahlSendeversuche,
        entity::getAnzahlSendeversuche

                    , de.ivu.elect.business.email.entity.EmailConstants.ANZAHL_SENDEVERSUCHE_MIN_VALUE,
            de.ivu.elect.business.email.entity.EmailConstants.ANZAHL_SENDEVERSUCHE_MAX_VALUE,
            de.ivu.elect.business.email.entity.EmailConstants.ANZAHL_SENDEVERSUCHE_MAX_LENGTH
                );

        }


        return anzahlSendeversucheProperty;
        }





        
        

        public
                    de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty
                getEmpfaengerProperty() {
        if (empfaengerProperty == null) {
        empfaengerProperty = new


                    de.ivu.elect.jee.presentation.dynamicform.LambdaStringProperty
        
        (
        getMetaData().getEmpfaengerEinzahlMessage(),
        getMetaData().getEmpfaengerDefaultValue(),
        getMetaData().isEmpfaengerRequired(),
                entity::setEmpfaenger,
        entity::getEmpfaenger

                    ,  1 ,
            de.ivu.elect.business.email.entity.EmailConstants.EMPFAENGER_MAX_LENGTH
                );

        }


        return empfaengerProperty;
        }





        
        

        public
                    de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty
                getFehlermeldungProperty() {
        if (fehlermeldungProperty == null) {
        fehlermeldungProperty = new


                    de.ivu.elect.jee.presentation.dynamicform.LambdaStringProperty
        
        (
        getMetaData().getFehlermeldungEinzahlMessage(),
        getMetaData().getFehlermeldungDefaultValue(),
        getMetaData().isFehlermeldungRequired(),
                entity::setFehlermeldung,
        entity::getFehlermeldung

                    , 0 ,
            de.ivu.elect.business.email.entity.EmailConstants.FEHLERMELDUNG_MAX_LENGTH
                );

        }


        return fehlermeldungProperty;
        }





        
        

        public
                    de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty
                getInhaltProperty() {
        if (inhaltProperty == null) {
        inhaltProperty = new


                    de.ivu.elect.jee.presentation.dynamicform.LambdaStringProperty
        
        (
        getMetaData().getInhaltEinzahlMessage(),
        getMetaData().getInhaltDefaultValue(),
        getMetaData().isInhaltRequired(),
                entity::setInhalt,
        entity::getInhalt

                    ,  1 ,
            de.ivu.elect.business.email.entity.EmailConstants.INHALT_MAX_LENGTH
                );

        }


        return inhaltProperty;
        }





        
        

        public
                    de.ivu.elect.jee.presentation.dynamicform.AbstractTimestampProperty
                getLetzterSendeversuchProperty() {
        if (letzterSendeversuchProperty == null) {
        letzterSendeversuchProperty = new


                    de.ivu.elect.jee.presentation.dynamicform.LambdaTimestampProperty
        
        (
        getMetaData().getLetzterSendeversuchEinzahlMessage(),
        getMetaData().getLetzterSendeversuchDefaultValue(),
        getMetaData().isLetzterSendeversuchRequired(),
                entity::setLetzterSendeversuch,
        entity::getLetzterSendeversuch

                );

        }


        return letzterSendeversuchProperty;
        }





        
        

        public
                    de.ivu.elect.jee.presentation.dynamicform.LambdaEnumProperty<de.ivu.elect.business.email.entity.EmailStatusType>
                getStatusProperty() {
        if (statusProperty == null) {
        statusProperty = new


                    de.ivu.elect.jee.presentation.dynamicform.LambdaEnumProperty<>
        
        (
        getMetaData().getStatusEinzahlMessage(),
        getMetaData().getStatusDefaultValue(),
        getMetaData().isStatusRequired(),
                entity::setStatus,
        entity::getStatus

                    , de.ivu.elect.business.email.entity.EmailStatusType.class,
            java.util.Arrays.asList(de.ivu.elect.business.email.entity.EmailStatusType.values()).stream().sorted(Enum::compareTo).collect(java.util.stream.Collectors.toList())
                );

        }


        return statusProperty;
        }





        

            public de.ivu.elect.jee.presentation.dynamicform.LambdaEnumProperty<de.ivu.elect.business.email.entity.EmailStatusType> getStatusMitLeererAuswahlProperty() {
               if (statusMitLeererAuswahlProperty == null) {
                 statusMitLeererAuswahlProperty = new
                de.ivu.elect.jee.presentation.dynamicform.LambdaEnumProperty<>
                    (
                        getMetaData().getStatusEinzahlMessage(),
        				getMetaData().getStatusDefaultValue(),
                        getMetaData().isStatusRequired(),
                        entity::setStatus,
                        entity::getStatus
                        , de.ivu.elect.business.email.entity.EmailStatusType.class,
                        java.util.Arrays.asList(de.ivu.elect.business.email.entity.EmailStatusType.values()).stream().sorted(Enum::compareTo).collect(java.util.stream.Collectors.toList())
                        ,true
                    );
            }

               return statusMitLeererAuswahlProperty;
            }
        
        }