
package de.ivu.elect.presentation.benutzerverwaltung.table;

import java.util.function.Function;

import de.ivu.elect.business.benutzerverwaltung.entity.Benutzer;
import de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants;
import de.ivu.elect.presentation.table.DefaultColumnEntry;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

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

@javax.enterprise.inject.Vetoed
public class AbstractBenutzerColumn<E extends Benutzer> extends
            DefaultColumnEntry<E>
        {
    private static final long serialVersionUID = 1L;

    @Deprecated // Eindeutige Id vergeben, wichtig für Spaltenreihenfolge ELECT-4631
    protected AbstractBenutzerColumn(Messages messages, String headerKey, ColumnType type, Function<E, Object> getter) {
      super(messages, headerKey, type, getter);
    }

    protected  AbstractBenutzerColumn(String id, Messages messages, String headerKey, ColumnType type, Function<E, Object> getter) {
      super(id, messages, headerKey, type, getter);
    }

            
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerBemerkungColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Bemerkung", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_BEMERKUNG_EINZAHL,
                            ColumnType.STRING
                        , Benutzer::getBemerkung);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerBenutzerkennungColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Benutzerkennung", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_BENUTZERKENNUNG_EINZAHL,
                            ColumnType.STRING
                        , Benutzer::getBenutzerkennung);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerFamiliennameColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Familienname", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_FAMILIENNAME_EINZAHL,
                            ColumnType.STRING
                        , Benutzer::getFamilienname);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerGeschlechtColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Geschlecht", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_GESCHLECHT_EINZAHL,
                            ColumnType.ENUM
                        , Benutzer::getGeschlecht);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerGesperrtColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Gesperrt", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_GESPERRT_EINZAHL,
                            ColumnType.BOOLEAN
                        , Benutzer::getGesperrt);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerHotpSecretColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-HotpSecret", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_HOTP_SECRET_EINZAHL,
                            ColumnType.STRING
                        , Benutzer::getHotpSecret);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerLetzteAnmeldungColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-LetzteAnmeldung", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_LETZTE_ANMELDUNG_EINZAHL,
                            ColumnType.TIMESTAMP
                        , Benutzer::getLetzteAnmeldung);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerLetzteNachrichtIdColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-LetzteNachrichtId", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_LETZTE_NACHRICHT_ID_EINZAHL,
                            ColumnType.LONG
                        , Benutzer::getLetzteNachrichtId);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerLoginVersucheColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-LoginVersuche", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_LOGINVERSUCHE_EINZAHL,
                            ColumnType.LONG
                        , Benutzer::getLoginVersuche);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerMussPasswortWechselnColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-MussPasswortWechseln", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_MUSS_PASSWORT_WECHSELN_EINZAHL,
                            ColumnType.BOOLEAN
                        , Benutzer::getMussPasswortWechseln);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerPasswortColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Passwort", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_PASSWORT_EINZAHL,
                            ColumnType.STRING
                        , Benutzer::getPasswort);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerProtokollaliasColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Protokollalias", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_PROTOKOLLALIAS_EINZAHL,
                            ColumnType.STRING
                        , Benutzer::getProtokollalias);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerSaltColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Salt", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_SALT_EINZAHL,
                            ColumnType.STRING
                        , Benutzer::getSalt);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerTanlisteColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Tanliste", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_TANLISTE_EINZAHL,
                            ColumnType.STRING
                        , Benutzer::getTanliste);
            }




                    
            public static <E extends Benutzer> AbstractBenutzerColumn<E> createBenutzerVornameColumn(Messages messages){
            return new AbstractBenutzerColumn<>("Benutzer-Vorname", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_VORNAME_EINZAHL,
                            ColumnType.STRING
                        , Benutzer::getVorname);
            }




            
    
        public static <E extends Benutzer> AbstractBenutzerColumn<E> createCustomDataStorageColumn(Messages messages, ColumnType type, Function<E, Object> getter){
        return new AbstractBenutzerColumn<>("Benutzer-CustomDataStorage", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_CUSTOM_DATA_STORAGE_ID_EINZAHL,
        type
        , getter);
        }

    
        public static <E extends Benutzer> AbstractBenutzerColumn<E> createMandantColumn(Messages messages, ColumnType type, Function<E, Object> getter){
        return new AbstractBenutzerColumn<>("Benutzer-Mandant", messages, de.ivu.elect.business.benutzerverwaltung.entity.BenutzerConstants.MESSAGE_KEY_MANDANT_ID_EINZAHL,
        type
        , getter);
        }

    



    }
