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

import java.util.function.Function;

import de.ivu.elect.business.veranstaltung.entity.Veranstaltung;
import de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants;
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 AbstractVeranstaltungColumn<E extends Veranstaltung> extends
            DefaultColumnEntry<E>
        {
    private static final long serialVersionUID = 1L;

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

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

            
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungBeginnColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-Beginn", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_BEGINN_EINZAHL,
                            ColumnType.TIMESTAMP
                        , Veranstaltung::getBeginn);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungBemerkungColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-Bemerkung", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_BEMERKUNG_EINZAHL,
                            ColumnType.STRING
                        , Veranstaltung::getBemerkung);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungBezeichnungColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-Bezeichnung", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_BEZEICHNUNG_EINZAHL,
                            ColumnType.STRING
                        , Veranstaltung::getBezeichnung);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungEndeColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-Ende", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_ENDE_EINZAHL,
                            ColumnType.TIMESTAMP
                        , Veranstaltung::getEnde);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungExterneIdColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-ExterneId", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_EXTERNE_ID_EINZAHL,
                            ColumnType.STRING
                        , Veranstaltung::getExterneId);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungRaumBezeichnungColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-RaumBezeichnung", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_RAUM_BEZEICHNUNG_EINZAHL,
                            ColumnType.STRING
                        , Veranstaltung::getRaumBezeichnung);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungSchulungArtColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-SchulungArt", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_SCHULUNG_ART_EINZAHL,
                            ColumnType.ENUM
                        , Veranstaltung::getSchulungArt);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungTeilnehmerAnzahlMaxColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-TeilnehmerAnzahlMax", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_TEILNEHMER_ANZAHL_MAX_EINZAHL,
                            ColumnType.LONG
                        , Veranstaltung::getTeilnehmerAnzahlMax);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungVeranstaltungArtColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-VeranstaltungArt", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_VERANSTALTUNG_ART_EINZAHL,
                            ColumnType.ENUM
                        , Veranstaltung::getVeranstaltungArt);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungVeranstaltungOrtColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-VeranstaltungOrt", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_VERANSTALTUNG_ORT_EINZAHL,
                            ColumnType.STRING
                        , Veranstaltung::getVeranstaltungOrt);
            }




                    
            public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVeranstaltungVeranstaltungStatusColumn(Messages messages){
            return new AbstractVeranstaltungColumn<>("Veranstaltung-VeranstaltungStatus", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_VERANSTALTUNG_STATUS_EINZAHL,
                            ColumnType.ENUM
                        , Veranstaltung::getVeranstaltungStatus);
            }




            
    
        public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createAnschriftColumn(Messages messages, ColumnType type, Function<E, Object> getter){
        return new AbstractVeranstaltungColumn<>("Veranstaltung-Anschrift", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_ANSCHRIFT_ID_EINZAHL,
        type
        , getter);
        }

    
        public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createAnsprechpartnerColumn(Messages messages, ColumnType type, Function<E, Object> getter){
        return new AbstractVeranstaltungColumn<>("Veranstaltung-Ansprechpartner", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_ANSPRECHPARTNER_ID_EINZAHL,
        type
        , getter);
        }

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

    
        public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createGebietColumn(Messages messages, ColumnType type, Function<E, Object> getter){
        return new AbstractVeranstaltungColumn<>("Veranstaltung-Gebiet", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_GEBIET_ID_EINZAHL,
        type
        , getter);
        }

    
        public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createVerknuepfteVeranstaltungColumn(Messages messages, ColumnType type, Function<E, Object> getter){
        return new AbstractVeranstaltungColumn<>("Veranstaltung-VerknuepfteVeranstaltung", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_VERKNUEPFTE_VERANSTALTUNG_ID_EINZAHL,
        type
        , getter);
        }

    
        public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createWahlterminColumn(Messages messages, ColumnType type, Function<E, Object> getter){
        return new AbstractVeranstaltungColumn<>("Veranstaltung-Wahltermin", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_WAHLTERMIN_ID_EINZAHL,
        type
        , getter);
        }

    
        public static <E extends Veranstaltung> AbstractVeranstaltungColumn<E> createWahlColumn(Messages messages, ColumnType type, Function<E, Object> getter){
        return new AbstractVeranstaltungColumn<>("Veranstaltung-Wahl", messages, de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants.MESSAGE_KEY_WAHL_ID_EINZAHL,
        type
        , getter);
        }

    



    }
