Fahrradfahrer
Banned
- Registriert
- Mai 2020
- Beiträge
- 50
Hallo Freunde. Ich bin dabei eine Abwesenheitsverwaltung in Java zu schreiben. In diesem Projekt wird erfasst, welcher Kollege wann krank war, in Urlaub oder auf Dienstreise geht etc.
Natürlich müssen solcherlei Informationen irgendwo abgespeichert werden. Ich habe mir gewisse Datenstrukturen überlegt, um all diese Infos in Objekten abzulegen, die dann serialisierbar sind. Diese Objekte werden von einer Manager-Klasse in Listenform verwaltet und bei Änderungen gespeichert. Ich könnte natürlich dieses Manager-Objekt immer als ganzes abspeichern, sobald sich was ändert. Ich bevorzuge jedoch die kleinsplittrige Lösung, da kleinere Datenmengen schneller abgespeichert sind alsGroße.
Ich bin jedoch mit der Art und Weise, wie ich diese vielen Dateien lade bzw. einlese, schon nicht zufrieden. Es sieht einfach nach unnötig viel Code aus, wobei ich mir aber nicht sicher bin, wie ich das kürzer fassen soll. Wie würdet ihr diesen Ladevorgang im Konstruktor gestalten?
Natürlich müssen solcherlei Informationen irgendwo abgespeichert werden. Ich habe mir gewisse Datenstrukturen überlegt, um all diese Infos in Objekten abzulegen, die dann serialisierbar sind. Diese Objekte werden von einer Manager-Klasse in Listenform verwaltet und bei Änderungen gespeichert. Ich könnte natürlich dieses Manager-Objekt immer als ganzes abspeichern, sobald sich was ändert. Ich bevorzuge jedoch die kleinsplittrige Lösung, da kleinere Datenmengen schneller abgespeichert sind alsGroße.
Ich bin jedoch mit der Art und Weise, wie ich diese vielen Dateien lade bzw. einlese, schon nicht zufrieden. Es sieht einfach nach unnötig viel Code aus, wobei ich mir aber nicht sicher bin, wie ich das kürzer fassen soll. Wie würdet ihr diesen Ladevorgang im Konstruktor gestalten?
Code:
import java.util.List;
import java.util.ArrayList;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
public class UrlaubManager {
private static final Path SAVE_DIR = Paths.get("./save/");
private static final Path PERSONEN_SAVE_DIR = Paths.get(SAVE_DIR.toString(), "personen");
private static final Path ABWESENHEITEN_SAVE_DIR = Paths.get(SAVE_DIR.toString(), "abwesenheiten");
private static final Path ABWESENHEITSGRUENDE_SAVE_DIR = Paths.get(SAVE_DIR.toString(), "abwesenheitsgründe");
private static final Path GENEHMIGUNGEN_SAVE_DIR = Paths.get(SAVE_DIR.toString(), "genehmigungen");
private static final Path BERUFSBEZEICHNUNGEN_SAVE_DIR = Paths.get(SAVE_DIR.toString(), "berufsbezeichnungen");
private List<Person> personen = new ArrayList<>();
private List<Abwesenheit> abwesenheiten = new ArrayList<>();
private List<Abwesenheitsgrund> abwesenheitsgruende = new ArrayList<>();
private List<Genehmigung> genehmigungen = new ArrayList<>();
private List<Berufsbezeichnung> berufsbezeichnungen = new ArrayList<>();
@SuppressWarnings("unchecked")
public UrlaubManager() {
if (Files.exists(SAVE_DIR)) {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(PERSONEN_SAVE_DIR.toFile()))) {
personen = (ArrayList<Person>) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(ABWESENHEITEN_SAVE_DIR.toFile()))) {
abwesenheiten = (ArrayList<Abwesenheit>) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(ABWESENHEITSGRUENDE_SAVE_DIR.toFile()))) {
abwesenheitsgruende = (ArrayList<Abwesenheitsgrund>) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(GENEHMIGUNGEN_SAVE_DIR.toFile()))) {
genehmigungen = (ArrayList<Genehmigung>) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(BERUFSBEZEICHNUNGEN_SAVE_DIR.toFile()))) {
berufsbezeichnungen = (ArrayList<Berufsbezeichnung>) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
Files.createDirectory(SAVE_DIR);
} catch (Exception e) {
e.printStackTrace();
}
personen = new ArrayList<>();
abwesenheiten = new ArrayList<>();
abwesenheitsgruende = new ArrayList<>();
genehmigungen = new ArrayList<>();
berufsbezeichnungen = new ArrayList<>();
}
}
}