init
This commit is contained in:
64
src/model/DataModels.java
Normal file
64
src/model/DataModels.java
Normal file
@@ -0,0 +1,64 @@
|
||||
package model;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Zentrale Datenquelle für alle statischen Auswahl-Listen (ComboBox-Optionen)
|
||||
* und standardisierte Mappings (z. B. CSV-Spalten zu SQLite-Feldern).
|
||||
*/
|
||||
public final class DataModels {
|
||||
|
||||
private DataModels() {
|
||||
// Utility class: no instances
|
||||
}
|
||||
|
||||
/** CSV → SQLite Spalten-Mapping (zentrale Definition, Reihenfolge garantiert) */
|
||||
public static Map<String, String> getCsvToSqliteMapping() {
|
||||
Map<String, String> map = new LinkedHashMap<>();
|
||||
map.put("ID", "id");
|
||||
map.put("Datum", "datum");
|
||||
map.put("Startzeit", "startzeit");
|
||||
map.put("Typ", "veranstaltungstyp");
|
||||
map.put("Titel", "titel");
|
||||
map.put("Thema", "inhaltstyp");
|
||||
map.put("Modus", "modus");
|
||||
map.put("Dauer (Min)", "dauer_minuten");
|
||||
map.put("Anzahl TN", "teilnehmende_anzahl");
|
||||
map.put("Typ TN", "teilnehmende_typ");
|
||||
map.put("Von (PHID)", "durchfuehrende_person");
|
||||
map.put("Ausfall", "ausgefallen_grund");
|
||||
map.put("Kommentar", "kommentar");
|
||||
map.put("Bewertung (1–6)", "evaluation"); // <-- added line
|
||||
return map;
|
||||
}
|
||||
|
||||
/** Veranstaltungstypen (z. B. Schulung, Führung) */
|
||||
public static List<String> getVeranstaltungstypen() {
|
||||
return Arrays.asList("schulung", "fuehrung", "coffeelecture", "selbstlerneinheit");
|
||||
}
|
||||
|
||||
/** Modus der Veranstaltung (Präsenz, Online, Selbstlerneinheit) */
|
||||
public static List<String> getModi() {
|
||||
return Arrays.asList("online", "praesenz");
|
||||
}
|
||||
|
||||
/** Typ der Teilnehmenden */
|
||||
public static List<String> getTeilnehmendeTypen() {
|
||||
return Arrays.asList("studierende", "mitarbeitende", "externe", "sonstige", "gemischt");
|
||||
}
|
||||
|
||||
/** Gründe für ausgefallene Veranstaltungen */
|
||||
public static List<String> getAusgefallenGruende() {
|
||||
return Arrays.asList(
|
||||
"",
|
||||
"keine anmeldung",
|
||||
"weniger als 3 anmeldungen",
|
||||
"nicht erschienen",
|
||||
"sonstiger grund"
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
79
src/model/PersonMapping.java
Normal file
79
src/model/PersonMapping.java
Normal file
@@ -0,0 +1,79 @@
|
||||
package model;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import db.UserDAO;
|
||||
|
||||
public class PersonMapping {
|
||||
|
||||
private static final Map<String, String> KUERZEL_TO_NAME = new LinkedHashMap<>();
|
||||
private static final List<String> ADMINS = List.of("cbu615", "jbo733");
|
||||
|
||||
private static String dbPath = null;
|
||||
private static boolean initialized = false;
|
||||
|
||||
/** Holt die Daten aus der DB, falls noch nicht erfolgt */
|
||||
private static synchronized void loadPeople() {
|
||||
dbPath = util.Config.getDbPath();
|
||||
if (dbPath == null) throw new IllegalStateException("DB-Pfad nicht gesetzt!");
|
||||
UserDAO dao = new UserDAO(dbPath);
|
||||
List<String[]> users = dao.getAllUsers();
|
||||
KUERZEL_TO_NAME.clear();
|
||||
for (String[] user : users) {
|
||||
KUERZEL_TO_NAME.put(user[0], user[1]);
|
||||
}
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
/** Prüft, ob geladen, und lädt ggf. */
|
||||
private static void listLoadedCheck() {
|
||||
if (!initialized) {
|
||||
System.out.println("load");
|
||||
loadPeople();
|
||||
}
|
||||
}
|
||||
|
||||
public static void forceReloadPeople() {
|
||||
// Nur explizit von außen aufrufen!
|
||||
loadPeople();
|
||||
}
|
||||
|
||||
public static boolean isAdmin(String login) {
|
||||
if (login == null) return false;
|
||||
login = normalizeLogin(login);
|
||||
return ADMINS.contains(login.toLowerCase());
|
||||
}
|
||||
|
||||
/** Kürzel → Klarname */
|
||||
public static String toName(String kuerzel) {
|
||||
listLoadedCheck();
|
||||
if (kuerzel == null || kuerzel.isBlank()) return "";
|
||||
return KUERZEL_TO_NAME.getOrDefault(kuerzel, kuerzel);
|
||||
}
|
||||
|
||||
/** Klarname → Kürzel */
|
||||
public static String toKuerzel(String name) {
|
||||
listLoadedCheck();
|
||||
if (name == null || name.isBlank()) return "";
|
||||
for (Map.Entry<String, String> e : KUERZEL_TO_NAME.entrySet()) {
|
||||
if (e.getValue().equalsIgnoreCase(name.trim())) {
|
||||
return e.getKey();
|
||||
}
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
/** Für Dropdown-Menüs: alle Klarnamen (sortiert nach Eintragungsreihenfolge) */
|
||||
public static java.util.List<String> getAllNames() {
|
||||
listLoadedCheck();
|
||||
return new java.util.ArrayList<>(KUERZEL_TO_NAME.values());
|
||||
}
|
||||
|
||||
public static String normalizeLogin(String login) {
|
||||
if (login == null) return "";
|
||||
login = login.trim().toLowerCase();
|
||||
return login;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user