diff --git a/src/main/java/EST/MiJo/Main.java b/src/main/java/EST/MiJo/Main.java
index ba6142a..72ded1f 100644
--- a/src/main/java/EST/MiJo/Main.java
+++ b/src/main/java/EST/MiJo/Main.java
@@ -1,17 +1,142 @@
package EST.MiJo;
-//TIP To Run code, press or
-// click the icon in the gutter.
-public class Main {
- public static void main(String[] args) {
- //TIP Press with your caret at the highlighted text
- // to see how IntelliJ IDEA suggests fixing it.
- System.out.print("Hello and welcome!");
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
- for (int i = 1; i <= 5; i++) {
- //TIP Press to start debugging your code. We have set one breakpoint
- // for you, but you can always add more by pressing .
- System.out.println("i = " + i);
+public class Main {
+
+ public static void main(String[] args) {
+ CustomerDao customerDao = new CustomerDao();
+ VehicleDao vehicleDao = new VehicleDao();
+ RepairOrderDao repairOrderDao = new RepairOrderDao();
+
+ Customer max = customerDao.save(new Customer(null, "Max Mustermann", "max@example.com"));
+ Customer eva = customerDao.save(new Customer(null, "Eva Muster", "eva@example.com"));
+
+ Vehicle maxCar = vehicleDao.save(new Vehicle(null, max.id(), "VW", "Golf VIII"));
+ Vehicle evaCar = vehicleDao.save(new Vehicle(null, eva.id(), "BMW", "i3"));
+
+ repairOrderDao.save(new RepairOrder(null, maxCar.id(), "Inspektion & Ölwechsel"));
+ repairOrderDao.save(new RepairOrder(null, evaCar.id(), "Batterie prüfen"));
+
+ System.out.println("Kunden:");
+ customerDao.findAll()
+ .forEach(c -> System.out.printf("- #%d %s (%s)%n", c.id(), c.name(), c.email()));
+
+ System.out.println();
+ System.out.println("Fahrzeuge:");
+ vehicleDao.findAll()
+ .forEach(v -> System.out.printf("- #%d %s %s (Kunde #%d)%n", v.id(), v.manufacturer(), v.model(), v.customerId()));
+
+ System.out.println();
+ System.out.println("Aufträge:");
+ repairOrderDao.findAll()
+ .forEach(r -> System.out.printf("- #%d %s (Fahrzeug #%d)%n", r.id(), r.description(), r.vehicleId()));
+ }
+
+ interface Dao {
+ T save(T entity);
+
+ Optional findById(Integer id);
+
+ List findAll();
+
+ void delete(Integer id);
+ }
+
+ static class CustomerDao implements Dao {
+ private final Map store = new LinkedHashMap<>();
+ private int nextId = 1;
+
+ @Override
+ public Customer save(Customer entity) {
+ int id = entity.id() == null ? nextId++ : entity.id();
+ Customer stored = new Customer(id, entity.name(), entity.email());
+ store.put(id, stored);
+ return stored;
+ }
+
+ @Override
+ public Optional findById(Integer id) {
+ return Optional.ofNullable(store.get(id));
+ }
+
+ @Override
+ public List findAll() {
+ return new ArrayList<>(store.values());
+ }
+
+ @Override
+ public void delete(Integer id) {
+ store.remove(id);
}
}
-}
\ No newline at end of file
+
+ static class VehicleDao implements Dao {
+ private final Map store = new LinkedHashMap<>();
+ private int nextId = 1;
+
+ @Override
+ public Vehicle save(Vehicle entity) {
+ int id = entity.id() == null ? nextId++ : entity.id();
+ Vehicle stored = new Vehicle(id, entity.customerId(), entity.manufacturer(), entity.model());
+ store.put(id, stored);
+ return stored;
+ }
+
+ @Override
+ public Optional findById(Integer id) {
+ return Optional.ofNullable(store.get(id));
+ }
+
+ @Override
+ public List findAll() {
+ return new ArrayList<>(store.values());
+ }
+
+ @Override
+ public void delete(Integer id) {
+ store.remove(id);
+ }
+ }
+
+ static class RepairOrderDao implements Dao {
+ private final Map store = new LinkedHashMap<>();
+ private int nextId = 1;
+
+ @Override
+ public RepairOrder save(RepairOrder entity) {
+ int id = entity.id() == null ? nextId++ : entity.id();
+ RepairOrder stored = new RepairOrder(id, entity.vehicleId(), entity.description());
+ store.put(id, stored);
+ return stored;
+ }
+
+ @Override
+ public Optional findById(Integer id) {
+ return Optional.ofNullable(store.get(id));
+ }
+
+ @Override
+ public List findAll() {
+ return new ArrayList<>(store.values());
+ }
+
+ @Override
+ public void delete(Integer id) {
+ store.remove(id);
+ }
+ }
+
+ record Customer(Integer id, String name, String email) {
+ }
+
+ record Vehicle(Integer id, Integer customerId, String manufacturer, String model) {
+ }
+
+ record RepairOrder(Integer id, Integer vehicleId, String description) {
+ }
+}