From 3ddd4cd48ec5a4daca23a1315aac5ac407bc4cc8 Mon Sep 17 00:00:00 2001 From: Hymmel Date: Thu, 11 Dec 2025 13:31:51 +0100 Subject: [PATCH] mikegay --- src/main/java/EST/MiJo/Main.java | 149 ++++++++++++++++++++++++++++--- 1 file changed, 137 insertions(+), 12 deletions(-) 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) { + } +}