Rename and update project to java 21 and newer spring versions

This commit is contained in:
2025-04-28 14:43:54 +02:00
parent a3e8bbfcff
commit f40eef9082
24 changed files with 92 additions and 150 deletions

View File

@@ -1,59 +0,0 @@
Zadatak: Aplikaciju za Auto servise.
- Tehnologije: Springboot, Thymeleaf, PostgresSQl baza (tocno te tehnologije, bez javascripta)
U aplikaciji treba moći:
1. Dodavati/brisati/editirati klijente.
- Osim forme za editiranje podataka klijenta, treba napraviti i prikaz detalja klijenta, koji nije u obliku forme, vec samo tekstualno prikazani podaci (moze kao tablica da bi sve bilo lijepo poravnato)
:
- OIB
- Ime i Prezime
- Adresa (Ulica i broj, poštanski broj , Grad, Država)
(hint: pokušajte to napraviti kao Embedable, )
https://en.wikibooks.org/wiki/Java_Persistence/Embeddables#Example_of_an_embedded_relationship_annotations
- Lista automobila
- Nakon sto se unese novi klijent ili editira postojeci, treba prikazati stranicu sa detaljima klijenta.
Naslov iznad forme neka bude "Uređivanje klijenta"
- Napraviti stranicu sa izlistom klijenata
- U listi su prezimena i imena klijenata, abecedno po prezimenu
- klik na ime vodi na stranicu s detaljima klijenta
- pored imena klijenta su buttoni "Uredi" (vodi na formu za editiranje klijenta) i "Obriši" (briše klijenta i sve njegove automobile)
- ispod liste button za dodavanje novog klijenta
pored pojedinog klijenta, buttoni za )
2. Dodavanje automobila
- Na prikazu detalja klijenta (definirano u tocki 1) treba prikazati i listu automobila koje klijent posjeduje i servisira. Ispod liste (koja ce inicijalno biti prazna) treba biti button "Dodaj automobil", a klik na taj biuton otvara novu stranicu (formu ) za unos podataka automobla.
- Automobil mora imati sljedeće podatke
- Klijent kojem pripada (dropdown lista, inicijalno odabran onaj klijent s cijih detalja je klinuto na "Dodaj automobi", ali moze se promjeniti)
- Tip automobila (tipove automobila ne morate spremati u bazu, dovoljno je imati enum sa listom tipova (dodajte 10-ak komada))
enum vrijednosti za tip automobila neka budu skraceni nazivi, npr: TOYOTA_AURIS, s time da ima property-e manufacturer i model koji imaju gettere/settere a u ovom slucaju bi vrijednosti bile za manufacturer "Toyota" a za model "Auris"
- Godina proizvodnje
- Registracijska oznaka
- Boja
- Naslov iznad forme neka bude "Uređivanje automobila"
- Kada se doda automobil (submita se forma), neka se vraća na stranicu detalja klijenta za kojeg smo dodali taj automobil.
Tada se na toj stranici, u listi automobila klijenta treba vidjeti unešeni automobil.
- Na toj listi automobila ispisivati proizvođača i model (iz onog enuma za tip automobila), to neka ujedno bude i link na stranicu sa detaljima automobila. Pokraj tog linka dodati dva buttona: "Uredi" i "Obriši". Uredi otvara formu za editiranje podataka automobila, a Briši ga briše.
- RELACIJU AUTOMOBIL-KLIJENT NAPRAVITE BIDIRECTIONAL (DA KLIJENT ENTITY IMA LISTU AUTOMOBILA A AUTOMOBIL IMA REFERENCU NA KLIJENTA KOJEM PRIPADA)
3. Dodavanje servisa
- Na stranici detalja automobila (definiranoj u točki 2) uz podatke o automobilu treba dodati i listu napravljenih servisa. Ispod liste (koja je inicijalno prazna) imamo button "Dodaj servis info"
- Klik na taj button otvara formu za dodavanje Servisa koji treba imati sljedeće podatke:
- Datum i vrijeme servisa
- Ime i prezime radnika koji je napravio servis
- Opis radova
- Cijena
- Informacija da li je plaćeno ili ne (checkbox)
- Naslov iznad forme neka bude "Servis za automobil XXXXX , YYYYY". XXXXX neka bude tip automobila (proizvođać i model), a YYYYY ime i prezime klijenta
- Nakon submita forme treba se vratiti na stranicu detalja automobila.
- Dodani servis se treba prikazati na toj stranici u listi servisa. Za svaki servis u listi ispisati Datum i vrijeme kad je napravljen i ime radika koji je obavio servis. Svaki taj item u listi ujedno je i link na stranicu detalja servisa gdje se ispisutu svi podaci o servisu (tablica s tekstom)
- Pokraj linka treba dodati buttone "Uredi" (vodi na edit formu za servis) i "Obriši" (briše servis iz baze)
- RELACIJU SERVIS-AUTOMOBIL NAPRAVITE BIDIRECTIONAL (DA AUTOMOBIL ENTITY IMA LISTU SERVVISA A SERVIS IMA REFERENCU NA AUTOMOBIL ZA KOJI JE NAPRAVLJEN)
4. Napravity Homepage na kojem će se prikazati zadnjih 10 napravljeni servisa (po vremenu, najnoviji na vrhu)
5. (OPCIONALNO) Na svim stranicama includati na vrhu header sa glavnom navigacijom (potrazite kako se to radi sa thymeleafom, hint --> th:include)

28
pom.xml
View File

@@ -1,20 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<relativePath/> <!-- lookup parent from repository -->
<version>3.4.5</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com.carService</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<groupId>com.carInsurance</groupId>
<artifactId>main</artifactId>
<version>1.0.0</version>
<name>carInsurance</name>
<description>Car insurance interest calculator</description>
<properties>
<java.version>11</java.version>
<java.version>21</java.version>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
<dependencies>
<dependency>
@@ -31,8 +34,8 @@
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
@@ -63,5 +66,4 @@
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,11 @@
package com.carInsurance.main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}

View File

@@ -1,10 +1,10 @@
package com.carService.demo.controller;
package com.carInsurance.main.controller;
import com.carService.demo.domain.Car;
import com.carService.demo.domain.enums.CarManufacturerModel;
import com.carService.demo.manager.CarManager;
import com.carService.demo.manager.CarServiceManager;
import com.carService.demo.manager.UserManager;
import com.carInsurance.main.domain.Car;
import com.carInsurance.main.domain.enums.CarManufacturerModel;
import com.carInsurance.main.manager.CarManager;
import com.carInsurance.main.manager.CarServiceManager;
import com.carInsurance.main.manager.UserManager;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;

View File

@@ -1,8 +1,8 @@
package com.carService.demo.controller;
package com.carInsurance.main.controller;
import com.carService.demo.domain.CarService;
import com.carService.demo.manager.CarManager;
import com.carService.demo.manager.CarServiceManager;
import com.carInsurance.main.domain.CarService;
import com.carInsurance.main.manager.CarManager;
import com.carInsurance.main.manager.CarServiceManager;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;

View File

@@ -1,6 +1,6 @@
package com.carService.demo.controller;
package com.carInsurance.main.controller;
import com.carService.demo.manager.CarServiceManager;
import com.carInsurance.main.manager.CarServiceManager;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;

View File

@@ -1,8 +1,8 @@
package com.carService.demo.controller;
package com.carInsurance.main.controller;
import com.carService.demo.domain.User;
import com.carService.demo.manager.CarManager;
import com.carService.demo.manager.UserManager;
import com.carInsurance.main.domain.User;
import com.carInsurance.main.manager.CarManager;
import com.carInsurance.main.manager.UserManager;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;

View File

@@ -1,8 +1,9 @@
package com.carService.demo.domain;
package com.carInsurance.main.domain;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import lombok.*;
import javax.persistence.*;
@Data
@Embeddable

View File

@@ -1,9 +1,9 @@
package com.carService.demo.domain;
package com.carInsurance.main.domain;
import com.carService.demo.domain.enums.CarManufacturerModel;
import com.carInsurance.main.domain.enums.CarManufacturerModel;
import jakarta.persistence.*;
import lombok.*;
import javax.persistence.*;
import java.util.List;
@Entity
@@ -13,7 +13,7 @@ import java.util.List;
@Table(name="cars")
public class Car {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="car_sequence")
@GeneratedValue(strategy= GenerationType.SEQUENCE, generator="car_sequence")
@SequenceGenerator(name="car_sequence", allocationSize=10)
@Setter(AccessLevel.PRIVATE)
private Long id;

View File

@@ -1,9 +1,9 @@
package com.carService.demo.domain;
package com.carInsurance.main.domain;
import jakarta.persistence.*;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.util.Date;
@Entity
@@ -14,7 +14,7 @@ import java.util.Date;
@Table(name="services")
public class CarService {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="car_service_sequence")
@GeneratedValue(strategy= GenerationType.SEQUENCE, generator="car_service_sequence")
@SequenceGenerator(name="car_service_sequence", allocationSize=10)
@Setter(AccessLevel.PRIVATE)
private Long id;

View File

@@ -1,8 +1,8 @@
package com.carService.demo.domain;
package com.carInsurance.main.domain;
import jakarta.persistence.*;
import lombok.*;
import javax.persistence.*;
import java.util.List;
@Entity
@@ -13,7 +13,7 @@ import java.util.List;
@Setter
public class User {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="user_sequence")
@GeneratedValue(strategy= GenerationType.SEQUENCE, generator="user_sequence")
@SequenceGenerator(name="user_sequence", allocationSize=10)
@Setter(AccessLevel.PRIVATE)
private Long id;

View File

@@ -1,4 +1,4 @@
package com.carService.demo.domain.enums;
package com.carInsurance.main.domain.enums;
import lombok.Getter;

View File

@@ -1,7 +1,7 @@
package com.carService.demo.manager;
package com.carInsurance.main.manager;
import com.carService.demo.domain.Car;
import com.carService.demo.domain.User;
import com.carInsurance.main.domain.Car;
import com.carInsurance.main.domain.User;
import java.util.List;
import java.util.Optional;

View File

@@ -1,8 +1,8 @@
package com.carService.demo.manager;
package com.carInsurance.main.manager;
import com.carService.demo.domain.Car;
import com.carService.demo.domain.User;
import com.carService.demo.repository.CarRepository;
import com.carInsurance.main.domain.Car;
import com.carInsurance.main.domain.User;
import com.carInsurance.main.repository.CarRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

View File

@@ -1,7 +1,7 @@
package com.carService.demo.manager;
package com.carInsurance.main.manager;
import com.carService.demo.domain.Car;
import com.carService.demo.domain.CarService;
import com.carInsurance.main.domain.Car;
import com.carInsurance.main.domain.CarService;
import java.util.List;
import java.util.Optional;

View File

@@ -1,8 +1,8 @@
package com.carService.demo.manager;
package com.carInsurance.main.manager;
import com.carService.demo.domain.Car;
import com.carService.demo.domain.CarService;
import com.carService.demo.repository.CarServiceRepository;
import com.carInsurance.main.domain.Car;
import com.carInsurance.main.domain.CarService;
import com.carInsurance.main.repository.CarServiceRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

View File

@@ -1,6 +1,6 @@
package com.carService.demo.manager;
package com.carInsurance.main.manager;
import com.carService.demo.domain.User;
import com.carInsurance.main.domain.User;
import java.util.List;
import java.util.Optional;

View File

@@ -1,7 +1,7 @@
package com.carService.demo.manager;
package com.carInsurance.main.manager;
import com.carService.demo.domain.User;
import com.carService.demo.repository.UserRepository;
import com.carInsurance.main.domain.User;
import com.carInsurance.main.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

View File

@@ -1,7 +1,7 @@
package com.carService.demo.repository;
package com.carInsurance.main.repository;
import com.carService.demo.domain.Car;
import com.carService.demo.domain.User;
import com.carInsurance.main.domain.Car;
import com.carInsurance.main.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;

View File

@@ -1,7 +1,7 @@
package com.carService.demo.repository;
package com.carInsurance.main.repository;
import com.carService.demo.domain.Car;
import com.carService.demo.domain.CarService;
import com.carInsurance.main.domain.Car;
import com.carInsurance.main.domain.CarService;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;

View File

@@ -1,6 +1,6 @@
package com.carService.demo.repository;
package com.carInsurance.main.repository;
import com.carService.demo.domain.User;
import com.carInsurance.main.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {

View File

@@ -1,13 +0,0 @@
package com.carService.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

View File

@@ -4,13 +4,13 @@ spring.jackson.serialization.INDENT_OUTPUT=true
#JPA properties
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:postgresql://127.0.0.1:2345/phatphuckdave
spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/phatphuckdave
spring.datasource.username=phatphuckdave
spring.datasource.password=phatphuckdave765
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.database=POSTGRESQL
spring.jpa.database-platform = org.hibernate.dialect.PostgreSQL92Dialect
spring.jpa.database=MARIADB
spring.jpa.database-platform = org.hibernate.dialect.MariaDB103Dialect
spring.jpa.open-in-view=true
spring.jpa.show_sql=false
spring.jpa.generate-ddl=false

View File

@@ -1,10 +1,10 @@
package com.carService.demo;
package com.carInsurance.main;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DemoApplicationTests {
class MainTests {
@Test
void contextLoads() {