This commit is contained in:
Hymmel 2025-12-11 13:31:51 +01:00
parent 66c687f97d
commit 3ddd4cd48e

View file

@ -1,17 +1,142 @@
package EST.MiJo;
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
//TIP Press <shortcut actionId="ShowIntentionActions"/> 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 <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
// for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.
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> {
T save(T entity);
Optional<T> findById(Integer id);
List<T> findAll();
void delete(Integer id);
}
static class CustomerDao implements Dao<Customer> {
private final Map<Integer, Customer> 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<Customer> findById(Integer id) {
return Optional.ofNullable(store.get(id));
}
@Override
public List<Customer> findAll() {
return new ArrayList<>(store.values());
}
@Override
public void delete(Integer id) {
store.remove(id);
}
}
static class VehicleDao implements Dao<Vehicle> {
private final Map<Integer, Vehicle> 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<Vehicle> findById(Integer id) {
return Optional.ofNullable(store.get(id));
}
@Override
public List<Vehicle> findAll() {
return new ArrayList<>(store.values());
}
@Override
public void delete(Integer id) {
store.remove(id);
}
}
static class RepairOrderDao implements Dao<RepairOrder> {
private final Map<Integer, RepairOrder> 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<RepairOrder> findById(Integer id) {
return Optional.ofNullable(store.get(id));
}
@Override
public List<RepairOrder> 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) {
}
}