From f3c8a7a691cd029a29ca8734e159996ae37c5ad5 Mon Sep 17 00:00:00 2001 From: boppler12 Date: Tue, 16 Dec 2025 10:07:02 +0100 Subject: [PATCH 01/10] Hej --- src/main/java/org/example/App.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 165e5cd5..a6387ca9 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -1,5 +1,5 @@ package org.example; - +//hejc public class App { public static void main(String[] args) { System.out.println("Hello There!"); From f1fe9259effd0d4a2a2898975d70641de3168861 Mon Sep 17 00:00:00 2001 From: boppler12 Date: Tue, 16 Dec 2025 10:07:59 +0100 Subject: [PATCH 02/10] ta bort hej --- src/main/java/org/example/App.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index a6387ca9..165e5cd5 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -1,5 +1,5 @@ package org.example; -//hejc + public class App { public static void main(String[] args) { System.out.println("Hello There!"); From 975eb235ae5ce52ffbfe465c8c024b13ce5e6a24 Mon Sep 17 00:00:00 2001 From: boppler12 Date: Tue, 16 Dec 2025 10:56:21 +0100 Subject: [PATCH 03/10] =?UTF-8?q?kanske=20har=20lyckas=20l=C3=A4gga=20till?= =?UTF-8?q?=20persistence.xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/META-INF/persistence.xml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/main/resources/META-INF/persistence.xml diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml new file mode 100644 index 00000000..e8152256 --- /dev/null +++ b/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,20 @@ + + + + + org.hibernate.jpa.HibernateJpaProvider + com.example.entities.YourEntity + + + + + + + + + + From 62cf397db57678dad92e6949302f6dc2cfeb5a73 Mon Sep 17 00:00:00 2001 From: boppler12 Date: Tue, 16 Dec 2025 12:45:07 +0100 Subject: [PATCH 04/10] =?UTF-8?q?kanske=20har=20lyckas=20l=C3=A4gga=20till?= =?UTF-8?q?=20persistence.xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/example/App.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 165e5cd5..d1bc0aa7 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -1,6 +1,7 @@ package org.example; public class App { + //hej public static void main(String[] args) { System.out.println("Hello There!"); } From 6b256b954ff9e41891d0036cacad256989a4e049 Mon Sep 17 00:00:00 2001 From: boppler12 Date: Tue, 16 Dec 2025 13:21:05 +0100 Subject: [PATCH 05/10] =?UTF-8?q?alla=20mappar=20=C3=A4r=20fixade?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/example/App.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index d1bc0aa7..165e5cd5 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -1,7 +1,6 @@ package org.example; public class App { - //hej public static void main(String[] args) { System.out.println("Hello There!"); } From 996064fc8d23bcf0f5739eb4eb990592b5cd59e0 Mon Sep 17 00:00:00 2001 From: boppler12 Date: Tue, 16 Dec 2025 13:21:11 +0100 Subject: [PATCH 06/10] =?UTF-8?q?alla=20mappar=20=C3=A4r=20fixade?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/example/config/JPAConfig.java | 4 ++++ src/main/java/org/example/controller/BookingController.java | 4 ++++ src/main/java/org/example/controller/CarController.java | 4 ++++ src/main/java/org/example/controller/CustomerController.java | 5 +++++ src/main/java/org/example/controller/MainViewController.java | 4 ++++ src/main/java/org/example/model/Booking.java | 4 ++++ src/main/java/org/example/model/Car.java | 5 +++++ src/main/java/org/example/model/Customer.java | 4 ++++ src/main/java/org/example/repository/BookingRepository.java | 4 ++++ src/main/java/org/example/repository/CarRepository.java | 4 ++++ src/main/java/org/example/repository/CustomerRepository.java | 4 ++++ src/main/java/org/example/service/BookingService.java | 4 ++++ src/main/java/org/example/service/CarService.java | 4 ++++ src/main/java/org/example/service/CustomerService.java | 4 ++++ src/main/resources/css/main.css | 0 src/main/resources/fxml/booking_view.fxml | 0 src/main/resources/fxml/car_view.fxml | 0 src/main/resources/fxml/customer_view.fxml | 0 src/main/resources/fxml/main_view.fxml | 0 19 files changed, 58 insertions(+) create mode 100644 src/main/java/org/example/config/JPAConfig.java create mode 100644 src/main/java/org/example/controller/BookingController.java create mode 100644 src/main/java/org/example/controller/CarController.java create mode 100644 src/main/java/org/example/controller/CustomerController.java create mode 100644 src/main/java/org/example/controller/MainViewController.java create mode 100644 src/main/java/org/example/model/Booking.java create mode 100644 src/main/java/org/example/model/Car.java create mode 100644 src/main/java/org/example/model/Customer.java create mode 100644 src/main/java/org/example/repository/BookingRepository.java create mode 100644 src/main/java/org/example/repository/CarRepository.java create mode 100644 src/main/java/org/example/repository/CustomerRepository.java create mode 100644 src/main/java/org/example/service/BookingService.java create mode 100644 src/main/java/org/example/service/CarService.java create mode 100644 src/main/java/org/example/service/CustomerService.java create mode 100644 src/main/resources/css/main.css create mode 100644 src/main/resources/fxml/booking_view.fxml create mode 100644 src/main/resources/fxml/car_view.fxml create mode 100644 src/main/resources/fxml/customer_view.fxml create mode 100644 src/main/resources/fxml/main_view.fxml diff --git a/src/main/java/org/example/config/JPAConfig.java b/src/main/java/org/example/config/JPAConfig.java new file mode 100644 index 00000000..cd5f772a --- /dev/null +++ b/src/main/java/org/example/config/JPAConfig.java @@ -0,0 +1,4 @@ +package org.example.config; + +public class JPAConfig { +} diff --git a/src/main/java/org/example/controller/BookingController.java b/src/main/java/org/example/controller/BookingController.java new file mode 100644 index 00000000..7c7a57e5 --- /dev/null +++ b/src/main/java/org/example/controller/BookingController.java @@ -0,0 +1,4 @@ +package org.example.controller; + +public class BookingController { +} diff --git a/src/main/java/org/example/controller/CarController.java b/src/main/java/org/example/controller/CarController.java new file mode 100644 index 00000000..8e5bdb86 --- /dev/null +++ b/src/main/java/org/example/controller/CarController.java @@ -0,0 +1,4 @@ +package org.example.controller; + +public class CarController { +} diff --git a/src/main/java/org/example/controller/CustomerController.java b/src/main/java/org/example/controller/CustomerController.java new file mode 100644 index 00000000..6cbcc5d9 --- /dev/null +++ b/src/main/java/org/example/controller/CustomerController.java @@ -0,0 +1,5 @@ +package org.example.controller; + +public interface CustomerController { + int addCustomer(); +} diff --git a/src/main/java/org/example/controller/MainViewController.java b/src/main/java/org/example/controller/MainViewController.java new file mode 100644 index 00000000..aa1a0cdc --- /dev/null +++ b/src/main/java/org/example/controller/MainViewController.java @@ -0,0 +1,4 @@ +package org.example.controller; + +public class MainViewController { +} diff --git a/src/main/java/org/example/model/Booking.java b/src/main/java/org/example/model/Booking.java new file mode 100644 index 00000000..8a885037 --- /dev/null +++ b/src/main/java/org/example/model/Booking.java @@ -0,0 +1,4 @@ +package org.example.model; + +public class Booking { +} diff --git a/src/main/java/org/example/model/Car.java b/src/main/java/org/example/model/Car.java new file mode 100644 index 00000000..b4e75187 --- /dev/null +++ b/src/main/java/org/example/model/Car.java @@ -0,0 +1,5 @@ +package org.example.model; + +public class Car { + +} diff --git a/src/main/java/org/example/model/Customer.java b/src/main/java/org/example/model/Customer.java new file mode 100644 index 00000000..43baacdf --- /dev/null +++ b/src/main/java/org/example/model/Customer.java @@ -0,0 +1,4 @@ +package org.example.model; + +public class Customer { +} diff --git a/src/main/java/org/example/repository/BookingRepository.java b/src/main/java/org/example/repository/BookingRepository.java new file mode 100644 index 00000000..a63b50d4 --- /dev/null +++ b/src/main/java/org/example/repository/BookingRepository.java @@ -0,0 +1,4 @@ +package org.example.repository; + +public class BookingRepository { +} diff --git a/src/main/java/org/example/repository/CarRepository.java b/src/main/java/org/example/repository/CarRepository.java new file mode 100644 index 00000000..69ce8060 --- /dev/null +++ b/src/main/java/org/example/repository/CarRepository.java @@ -0,0 +1,4 @@ +package org.example.repository; + +public class CarRepository { +} diff --git a/src/main/java/org/example/repository/CustomerRepository.java b/src/main/java/org/example/repository/CustomerRepository.java new file mode 100644 index 00000000..38b788c2 --- /dev/null +++ b/src/main/java/org/example/repository/CustomerRepository.java @@ -0,0 +1,4 @@ +package org.example.repository; + +public class CustomerRepository { +} diff --git a/src/main/java/org/example/service/BookingService.java b/src/main/java/org/example/service/BookingService.java new file mode 100644 index 00000000..aea99093 --- /dev/null +++ b/src/main/java/org/example/service/BookingService.java @@ -0,0 +1,4 @@ +package org.example.service; + +public class BookingService { +} diff --git a/src/main/java/org/example/service/CarService.java b/src/main/java/org/example/service/CarService.java new file mode 100644 index 00000000..e81e1ea5 --- /dev/null +++ b/src/main/java/org/example/service/CarService.java @@ -0,0 +1,4 @@ +package org.example.service; + +public class CarService { +} diff --git a/src/main/java/org/example/service/CustomerService.java b/src/main/java/org/example/service/CustomerService.java new file mode 100644 index 00000000..4c00baea --- /dev/null +++ b/src/main/java/org/example/service/CustomerService.java @@ -0,0 +1,4 @@ +package org.example.service; + +public class CustomerService { +} diff --git a/src/main/resources/css/main.css b/src/main/resources/css/main.css new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/fxml/booking_view.fxml b/src/main/resources/fxml/booking_view.fxml new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/fxml/car_view.fxml b/src/main/resources/fxml/car_view.fxml new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/fxml/customer_view.fxml b/src/main/resources/fxml/customer_view.fxml new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/fxml/main_view.fxml b/src/main/resources/fxml/main_view.fxml new file mode 100644 index 00000000..e69de29b From 49b5c0fa9cb5423ce2ab41387e1d80e532b5de0a Mon Sep 17 00:00:00 2001 From: boppler12 Date: Tue, 16 Dec 2025 15:06:04 +0100 Subject: [PATCH 07/10] =?UTF-8?q?en=20b=C3=B6rjan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/example/controller/CarController.java | 7 ++ src/main/java/org/example/model/Booking.java | 33 ++++++ src/main/java/org/example/model/Car.java | 24 ++++ .../org/example/repository/CarRepository.java | 17 +++ src/main/resources/init.sql | 105 ++++++++++++++++++ 5 files changed, 186 insertions(+) create mode 100644 src/main/resources/init.sql diff --git a/src/main/java/org/example/controller/CarController.java b/src/main/java/org/example/controller/CarController.java index 8e5bdb86..49de64a5 100644 --- a/src/main/java/org/example/controller/CarController.java +++ b/src/main/java/org/example/controller/CarController.java @@ -1,4 +1,11 @@ package org.example.controller; public class CarController { + boolean CarDamage=false; + + boolean CarRented=false; + boolean CarAvailable=true; + boolean CarBooked=false; + boolean CarBroke=false; + boolean CarReturned=false; } diff --git a/src/main/java/org/example/model/Booking.java b/src/main/java/org/example/model/Booking.java index 8a885037..b9af1e9e 100644 --- a/src/main/java/org/example/model/Booking.java +++ b/src/main/java/org/example/model/Booking.java @@ -1,4 +1,37 @@ package org.example.model; +import jakarta.persistence.*; + + +import javax.tools.DocumentationTool; +import javax.xml.stream.Location; + +@Entity public class Booking { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(optional = false) + @JoinColumn(name = "customer_id") + Customer customer; + + @ManyToOne(optional = false) + @JoinColumn(name = "car_id") + private Car car; + + @ManyToOne + @JoinColumn(name = "pickup_location_id") + private Location pickupLocation; + + + @ManyToOne + @JoinColumn + private int days; + private double price; + private boolean paid; + private String status; + + + } diff --git a/src/main/java/org/example/model/Car.java b/src/main/java/org/example/model/Car.java index b4e75187..577a2fc5 100644 --- a/src/main/java/org/example/model/Car.java +++ b/src/main/java/org/example/model/Car.java @@ -1,5 +1,29 @@ package org.example.model; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +@Entity public class Car { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String brand; + private String model; + private int year; + + // Getters och setters + public Long getId() { return id; } + + public String getBrand() { return brand; } + public void setBrand(String brand) { this.brand = brand; } + + public String getModel() { return model; } + public void setModel(String model) { this.model = model; } + public int getYear() { return year; } + public void setYear(int year) { this.year = year; } } diff --git a/src/main/java/org/example/repository/CarRepository.java b/src/main/java/org/example/repository/CarRepository.java index 69ce8060..cff21c7b 100644 --- a/src/main/java/org/example/repository/CarRepository.java +++ b/src/main/java/org/example/repository/CarRepository.java @@ -1,4 +1,21 @@ package org.example.repository; +import org.example.model.Car; +import org.example.util.JPAUtil; + +import jakarta.persistence.EntityManager; +import java.util.List; + public class CarRepository { + + public List findAll() { + EntityManager em = JPAUtil.getEntityManager(); + + List cars = + em.createQuery("SELECT c FROM Car c", Car.class) + .getResultList(); + + em.close(); + return cars; + } } diff --git a/src/main/resources/init.sql b/src/main/resources/init.sql new file mode 100644 index 00000000..34ac4841 --- /dev/null +++ b/src/main/resources/init.sql @@ -0,0 +1,105 @@ +-- ============================ +-- DATABASE +-- ============================ +CREATE DATABASE IF NOT EXISTS carrental; +USE carrental; + +-- ============================ +-- CUSTOMER +-- ============================ +CREATE TABLE customer ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL, + email VARCHAR(150) UNIQUE NOT NULL +); + +-- ============================ +-- CAR +-- ============================ +CREATE TABLE car ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + brand VARCHAR(100) NOT NULL, + model VARCHAR(100) NOT NULL, + price_per_day DOUBLE NOT NULL +); + +-- ============================ +-- BOOKING +-- ============================ +CREATE TABLE booking ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + start_date DATE NOT NULL, + end_date DATE NOT NULL, + customer_id BIGINT NOT NULL, + + CONSTRAINT fk_booking_customer + FOREIGN KEY (customer_id) + REFERENCES customer(id) + ON DELETE CASCADE +); + +-- ============================ +-- BOOKING_CAR (Many-to-Many) +-- ============================ +CREATE TABLE booking_car ( + booking_id BIGINT NOT NULL, + car_id BIGINT NOT NULL, + + PRIMARY KEY (booking_id, car_id), + + CONSTRAINT fk_bookingcar_booking + FOREIGN KEY (booking_id) + REFERENCES booking(id) + ON DELETE CASCADE, + + CONSTRAINT fk_bookingcar_car + FOREIGN KEY (car_id) + REFERENCES car(id) + ON DELETE CASCADE +); + +-- ================================================= +-- ================== TESTDATA ===================== +-- ================================================= + +-- ============================ +-- CUSTOMERS +-- ============================ +INSERT INTO customer (name, email) VALUES + ('Eric Thilen', 'eric@test.se'), + ('Torsten Wihlborg', 'torsten@test.se'), + ('Viktor Lindell', 'viktor@test.se'); + +-- ============================ +-- CARS (BILAR ATT HYRA) +-- ============================ +INSERT INTO car (brand, model, price_per_day) VALUES + ('Volvo', 'XC60', 899), + ('Volvo', 'V90', 999), + ('BMW', 'X5', 1199), + ('Audi', 'A6', 1099), + ('Tesla', 'Model 3', 1299), + ('Toyota', 'Corolla', 699), + ('Honda', 'Civic', 599), + ('Skoda', 'Octavia', 499), + ('Seat', 'Leon', 399), + ('Seat', 'Ibiza', 299), + ('Fiat', 'Multipla', 399); + + +-- ============================ +-- BOOKINGS +-- ============================ +INSERT INTO booking (start_date, end_date, customer_id) VALUES + ('2025-01-10', '2025-01-15', 1), + ('2025-02-01', '2025-02-05', 2), + ('2025-03-20', '2025-03-25', 3); + +-- ============================ +-- BOOKING ↔ CAR +-- ============================ +INSERT INTO booking_car (booking_id, car_id) VALUES + (1, 1), + (1, 2), + (2, 3), + (3, 5); From f67184101a752ceea89c0093af594a6e5511e2a9 Mon Sep 17 00:00:00 2001 From: boppler12 Date: Tue, 16 Dec 2025 15:06:08 +0100 Subject: [PATCH 08/10] Changes by ericthilen --- src/main/java/org/example/config/JPAConfig.java | 17 +++++++++++++++++ src/main/java/org/example/model/Customer.java | 17 +++++++++++++++++ src/main/resources/css/main.css | 3 +++ src/main/resources/fxml/main_view.fxml | 10 ++++++++++ 4 files changed, 47 insertions(+) diff --git a/src/main/java/org/example/config/JPAConfig.java b/src/main/java/org/example/config/JPAConfig.java index cd5f772a..44b524ba 100644 --- a/src/main/java/org/example/config/JPAConfig.java +++ b/src/main/java/org/example/config/JPAConfig.java @@ -1,4 +1,21 @@ package org.example.config; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; + public class JPAConfig { + + private static final EntityManagerFactory emf = + Persistence.createEntityManagerFactory("carRentalPU"); + + public static EntityManager getEntityManager() { + return emf.createEntityManager(); + } + + public static void close() { + if (emf.isOpen()) { + emf.close(); + } + } } diff --git a/src/main/java/org/example/model/Customer.java b/src/main/java/org/example/model/Customer.java index 43baacdf..1a66e22d 100644 --- a/src/main/java/org/example/model/Customer.java +++ b/src/main/java/org/example/model/Customer.java @@ -1,4 +1,21 @@ package org.example.model; +import jakarta.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity public class Customer { + + @Id + @GeneratedValue + private Long id; + + private String name; + private String email; + + @OneToMany(mappedBy = "customer") + private List bookings = new ArrayList<>(); + + // getters & setters } diff --git a/src/main/resources/css/main.css b/src/main/resources/css/main.css index e69de29b..90bc399a 100644 --- a/src/main/resources/css/main.css +++ b/src/main/resources/css/main.css @@ -0,0 +1,3 @@ +tabell med bilar +uthyrnings tabell med many2man +kund tabell diff --git a/src/main/resources/fxml/main_view.fxml b/src/main/resources/fxml/main_view.fxml index e69de29b..6fe83308 100644 --- a/src/main/resources/fxml/main_view.fxml +++ b/src/main/resources/fxml/main_view.fxml @@ -0,0 +1,10 @@ + + + + + + +
+
+
From d1e233a129f33f2cfba89b5811321c8710b2b3e5 Mon Sep 17 00:00:00 2001 From: boppler12 Date: Tue, 16 Dec 2025 15:06:21 +0100 Subject: [PATCH 09/10] Changes by viktor --- pom.xml | 32 ++++++------- src/main/java/org/example/App.java | 53 ++++++++++++++++++++- src/main/java/org/example/model/Car.java | 1 + src/main/resources/META-INF/persistence.xml | 25 +++++----- 4 files changed, 79 insertions(+), 32 deletions(-) diff --git a/pom.xml b/pom.xml index 909503d0..d586b911 100644 --- a/pom.xml +++ b/pom.xml @@ -34,21 +34,21 @@ ${mockito.version} test - - org.hibernate.orm - hibernate-core - 7.2.0.Final - - - com.mysql - mysql-connector-j - 9.5.0 - runtime - - - io.github.classgraph - classgraph - 4.8.184 - + + org.hibernate.orm + hibernate-core + 7.2.0.Final + + + com.mysql + mysql-connector-j + 9.5.0 + runtime + + + io.github.classgraph + classgraph + 4.8.184 + diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 165e5cd5..e38df663 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -1,7 +1,56 @@ package org.example; -public class App { +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.stage.Stage; + +public class App extends Application { + + @Override + public void start(Stage stage) throws Exception { + FXMLLoader loader = + new FXMLLoader(getClass().getResource("/fxml/main-view.fxml")); + + Scene scene = new Scene(loader.load()); + stage.setTitle("Car Rental System"); + stage.setScene(scene); + stage.show(); + } + public static void main(String[] args) { - System.out.println("Hello There!"); + launch(args); } } + +/* +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; + +public class App { + public static void main(String[] args) { + EntityManagerFactory emf = Persistence.createEntityManagerFactory("carRentalPU"); + EntityManager em = emf.createEntityManager(); + + // Starta transaktion + em.getTransaction().begin(); + + // Skapa och spara en bil + Car car = new Car(); + car.setBrand("Volvo"); + car.setModel("XC90"); + car.setYear(2025); + em.persist(car); + + // Commit + em.getTransaction().commit(); + + em.close(); + emf.close(); + + System.out.println("Car saved with ID: " + car.getId()); + + */ + } + } diff --git a/src/main/java/org/example/model/Car.java b/src/main/java/org/example/model/Car.java index 577a2fc5..8ae320c2 100644 --- a/src/main/java/org/example/model/Car.java +++ b/src/main/java/org/example/model/Car.java @@ -27,3 +27,4 @@ public class Car { public int getYear() { return year; } public void setYear(int year) { this.year = year; } } + diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index e8152256..b43c6854 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -1,20 +1,17 @@ - + xmlns="http://xmlns.jcp.org/xml/ns/persistence"> + - - org.hibernate.jpa.HibernateJpaProvider - com.example.entities.YourEntity - - - - - - + + + + + + + From 18078b5a4fc7c8eaa8cacf14c36dd0af62f00838 Mon Sep 17 00:00:00 2001 From: boppler12 Date: Thu, 18 Dec 2025 14:51:44 +0100 Subject: [PATCH 10/10] laggt till victors del --- src/main/java/org/example/App.java | 73 ++++++++++--------- src/main/java/org/example/model/Booking.java | 33 +++++++-- .../java/org/example/model/BookingStatus.java | 8 ++ src/main/java/org/example/model/Car.java | 17 ++++- src/main/java/org/example/model/Payment.java | 7 ++ 5 files changed, 93 insertions(+), 45 deletions(-) create mode 100644 src/main/java/org/example/model/BookingStatus.java create mode 100644 src/main/java/org/example/model/Payment.java diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index e38df663..f2f67ca3 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -1,29 +1,5 @@ package org.example; -import javafx.application.Application; -import javafx.fxml.FXMLLoader; -import javafx.scene.Scene; -import javafx.stage.Stage; - -public class App extends Application { - - @Override - public void start(Stage stage) throws Exception { - FXMLLoader loader = - new FXMLLoader(getClass().getResource("/fxml/main-view.fxml")); - - Scene scene = new Scene(loader.load()); - stage.setTitle("Car Rental System"); - stage.setScene(scene); - stage.show(); - } - - public static void main(String[] args) { - launch(args); - } -} - -/* import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; @@ -33,24 +9,49 @@ public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("carRentalPU"); EntityManager em = emf.createEntityManager(); - // Starta transaktion em.getTransaction().begin(); - // Skapa och spara en bil - Car car = new Car(); - car.setBrand("Volvo"); - car.setModel("XC90"); - car.setYear(2025); - em.persist(car); + // Rensa tabellen innan vi lägger in nya bilar + em.createQuery("DELETE FROM Car").executeUpdate(); + + // Skapa och persist 20 bilar med rimliga dagspriser + em.persist(createCar("Volvo", "XC90", 2025, "Lyxbil", 800_000)); + em.persist(createCar("BMW", "7 Series", 2024, "Lyxbil", 1_000_000)); + em.persist(createCar("Audi", "A8", 2023, "Lyxbil", 900_000)); + em.persist(createCar("Toyota", "Corolla", 2022, "Personbil", 200_000)); + em.persist(createCar("Honda", "Civic", 2021, "Personbil", 190_000)); + em.persist(createCar("Ford", "Focus", 2022, "Personbil", 210_000)); + em.persist(createCar("Mercedes", "Sprinter", 2023, "Minibuss", 350_000)); + em.persist(createCar("Volkswagen", "Transporter", 2023, "Minibuss", 330_000)); + em.persist(createCar("Renault", "Kangoo", 2022, "Minibuss", 300_000)); + em.persist(createCar("Fiat", "500", 2023, "Småbil", 120_000)); + em.persist(createCar("Mini", "Cooper", 2022, "Småbil", 150_000)); + em.persist(createCar("Volkswagen", "Up!", 2022, "Småbil", 110_000)); + em.persist(createCar("Porsche", "911", 2025, "Sportbil", 1_500_000)); + em.persist(createCar("Ferrari", "Roma", 2024, "Sportbil", 2_000_000)); + em.persist(createCar("Lamborghini", "Huracan", 2025, "Sportbil", 2_500_000)); + em.persist(createCar("Tesla", "Model S", 2023, "Lyxbil", 900_000)); + em.persist(createCar("Kia", "Rio", 2022, "Småbil", 130_000)); + em.persist(createCar("Hyundai", "i30", 2023, "Personbil", 195_000)); + em.persist(createCar("Opel", "Vivaro", 2022, "Minibuss", 320_000)); + em.persist(createCar("Jaguar", "F-Type", 2024, "Sportbil", 1_600_000)); - // Commit em.getTransaction().commit(); - em.close(); emf.close(); - System.out.println("Car saved with ID: " + car.getId()); + System.out.println("20 cars saved successfully!"); + } - */ + // Skapar bil och sätter dagspris till 0,5% av priset + private static Car createCar(String brand, String model, int year, String type, double price) { + Car car = new Car; + car.setBrand(brand); + car.setModel(model); + car.setYear(year); + car.setType(type); + car.setPrice(price); + car.setDailyPrice(price * 0.005); // 0,5% av totalpris + return car; } - } +} diff --git a/src/main/java/org/example/model/Booking.java b/src/main/java/org/example/model/Booking.java index b9af1e9e..52fd6bb4 100644 --- a/src/main/java/org/example/model/Booking.java +++ b/src/main/java/org/example/model/Booking.java @@ -5,6 +5,8 @@ import javax.tools.DocumentationTool; import javax.xml.stream.Location; +import java.time.LocalDate; +import java.time.LocalDateTime; @Entity public class Booking { @@ -24,14 +26,33 @@ public class Booking { @JoinColumn(name = "pickup_location_id") private Location pickupLocation; - @ManyToOne - @JoinColumn - private int days; - private double price; - private boolean paid; - private String status; + @JoinColumn(name = "dropoff_location_id") + private Location dropoffLocation; + + @OneToMany + @JoinColumn(name = "booking_id") + private List extras; + + @OneToOne + @JoinColumn(name = "payment_id") + private Payment payment; + + private LocalDate startDate; + private LocalDate endDate; + + protected Booking() { + // JPA requires a no-arg constructor + } + public Booking(Customer customer, Car car, Location pickupLocation, Location dropoffLocation, LocalDate startDate, LocalDate endDate) { + this.customer = customer; + this.car = car; + this.startDate = startDate; + this.endDate = endDate; + this.status = BookingStatus.RESERVED; + this.createdAt = LocalDateTime.now(); + } } diff --git a/src/main/java/org/example/model/BookingStatus.java b/src/main/java/org/example/model/BookingStatus.java new file mode 100644 index 00000000..7960aa78 --- /dev/null +++ b/src/main/java/org/example/model/BookingStatus.java @@ -0,0 +1,8 @@ +package org.example.model; + +public enum BookingStatus { + RESERVED, + ACTIVE, + COMPLETED, + CANCELLED +} diff --git a/src/main/java/org/example/model/Car.java b/src/main/java/org/example/model/Car.java index 8ae320c2..b5ec40f0 100644 --- a/src/main/java/org/example/model/Car.java +++ b/src/main/java/org/example/model/Car.java @@ -1,9 +1,9 @@ -package org.example.model; +package org.example; import jakarta.persistence.Entity; +import jakarta.persistence.Id; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; @Entity public class Car { @@ -14,6 +14,9 @@ public class Car { private String brand; private String model; private int year; + private String type; + private double price; + private double dailyPrice; // ny egenskap // Getters och setters public Long getId() { return id; } @@ -26,5 +29,13 @@ public class Car { public int getYear() { return year; } public void setYear(int year) { this.year = year; } -} + public String getType() { return type; } + public void setType(String type) { this.type = type; } + + public double getPrice() { return price; } + public void setPrice(double price) { this.price = price; } + + public double getDailyPrice() { return dailyPrice; } + public void setDailyPrice(double dailyPrice) { this.dailyPrice = dailyPrice; } +} diff --git a/src/main/java/org/example/model/Payment.java b/src/main/java/org/example/model/Payment.java new file mode 100644 index 00000000..0e4a6dd0 --- /dev/null +++ b/src/main/java/org/example/model/Payment.java @@ -0,0 +1,7 @@ +package org.example.model; + +import jakarta.persistence.Entity; + +@Entity +public class Payment { +}