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

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

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

   private final EmpfaengerGruppeArtProperty empfaengerGruppeArtProperty;
          private final EmpfaengerGruppeArtMitLeererAuswahlProperty empfaengerGruppeArtMitLeererAuswahlProperty;
    
   private final SenderkennungProperty senderkennungProperty;
    
   private final TextProperty textProperty;
    
   private final ZeitpunktProperty zeitpunktProperty;
    


  public NachrichtProperties(Nachricht entity) {
    
    this.empfaengerGruppeArtProperty = new EmpfaengerGruppeArtProperty(entity);
        this.empfaengerGruppeArtMitLeererAuswahlProperty = new EmpfaengerGruppeArtMitLeererAuswahlProperty(entity);
            this.senderkennungProperty = new SenderkennungProperty(entity);
            this.textProperty = new TextProperty(entity);
            this.zeitpunktProperty = new ZeitpunktProperty(entity);
          }

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



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

    protected final Nachricht entity;

    public EmpfaengerGruppeArtProperty(Nachricht entity) {
      super();
      this.entity = entity;
    }

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

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

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

    @Override
    public de.ivu.elect.business.benutzerverwaltung.entity.NachrichtEmpfaengerGruppeArt getDefaultValue() {
      return getMetaDataIntern().getEmpfaengerGruppeArtDefaultValue();
    }

    
    @Override
    public de.ivu.elect.business.benutzerverwaltung.entity.NachrichtEmpfaengerGruppeArt getValue() {
      return entity.getEmpfaengerGruppeArt();
    }

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

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

  }

  public EmpfaengerGruppeArtProperty getEmpfaengerGruppeArtProperty() {
    return empfaengerGruppeArtProperty;
  }


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

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

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

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

    protected final Nachricht entity;

    public SenderkennungProperty(Nachricht entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

  @javax.validation.constraints.Size(max=de.ivu.elect.business.benutzerverwaltung.entity.NachrichtConstants.SENDER_BENUTZERKENNUNG_MAX_LENGTH , min=1  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getSenderkennung();
    }

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

  }

  public SenderkennungProperty getSenderkennungProperty() {
    return senderkennungProperty;
  }


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

    protected final Nachricht entity;

    public TextProperty(Nachricht entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

  @javax.validation.constraints.Size(max=de.ivu.elect.business.benutzerverwaltung.entity.NachrichtConstants.TEXT_MAX_LENGTH , min=1  )
    
    @Override
    public java.lang.String getValue() {
      return entity.getText();
    }

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

  }

  public TextProperty getTextProperty() {
    return textProperty;
  }


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

    protected final Nachricht entity;

    public ZeitpunktProperty(Nachricht entity) {
      super();
      this.entity = entity;
    }

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

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

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

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

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

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

  }

  public ZeitpunktProperty getZeitpunktProperty() {
    return zeitpunktProperty;
  }


    
  }