From c6a1d39ce3ab3e06c27e03597ad456c3edcdc1d9 Mon Sep 17 00:00:00 2001 From: Ebba Andersson Date: Sun, 5 Apr 2026 15:29:14 +0200 Subject: [PATCH 1/4] chore: setup ci pipeline and spotless formatting --- .github/workflows/build-and-test.yml | 37 +++++++++++++++++++ pom.xml | 21 +++++++++++ .../log/entity/Log.java | 13 ++----- .../user/entity/User.java | 15 +++----- .../visa/dto/CreateVisaDTO.java | 1 - .../visa/entity/Comment.java | 3 +- .../visa/entity/Visa.java | 9 ++--- 7 files changed, 71 insertions(+), 28 deletions(-) create mode 100644 .github/workflows/build-and-test.yml diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..26779d9 --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,37 @@ +name: Build and Test +on: + push: + branches: + - "main" + pull_request: + branches: + - "main" + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + # Checks out code from GitHub + - name: Checkout code + uses: actions/checkout@v6 + + # Sets up Java 25 (Temurin) and cache Maven-dependencies + - name: Set up JDK 25 + uses: actions/setup-java@v5 + with: + java-version: '25' + distribution: 'temurin' + cache: 'maven' + + # Make sure Maven Wrapper is executable + - name: Make mvnw executable + run: chmod +x mvnw + + # Compile and run tests + - name: Compile and run tests + run: ./mvnw -B test + + # Control code format with spotless + - name: Run spotless check + run: ./mvnw -B spotless:check diff --git a/pom.xml b/pom.xml index 0137789..2df94f4 100644 --- a/pom.xml +++ b/pom.xml @@ -162,6 +162,27 @@ org.springframework.boot spring-boot-maven-plugin + + com.diffplug.spotless + spotless-maven-plugin + 2.44.3 + + + + + + + + + verify + + + check + + + + + diff --git a/src/main/java/org/example/visacasemanagementsystem/log/entity/Log.java b/src/main/java/org/example/visacasemanagementsystem/log/entity/Log.java index dbb8314..4664dd2 100644 --- a/src/main/java/org/example/visacasemanagementsystem/log/entity/Log.java +++ b/src/main/java/org/example/visacasemanagementsystem/log/entity/Log.java @@ -5,7 +5,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import lombok.ToString; import org.example.visacasemanagementsystem.log.LogEvent; import java.time.LocalDateTime; import java.util.Objects; @@ -21,17 +20,13 @@ public class Log { @Column(nullable = false) private Long id; - @NotNull - private LocalDateTime timeStamp; + @NotNull private LocalDateTime timeStamp; - @NotNull - private Long userId; // Vem gjorde vad? + @NotNull private Long userId; // Vem gjorde vad? - @NotNull - private Long visaCaseId; // Vilket ärende rör det? + @NotNull private Long visaCaseId; // Vilket ärende rör det? - @NotNull - @Enumerated(EnumType.STRING) + @NotNull @Enumerated(EnumType.STRING) private LogEvent logEvent; private String description; // Beskrivning av händelse diff --git a/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java b/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java index fedb43f..a72358b 100644 --- a/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java +++ b/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java @@ -21,24 +21,19 @@ public class User { @Column(nullable = false, updatable = false) private Long id; - @NotBlank - @Column(nullable = false, unique = true) + @NotBlank @Column(nullable = false, unique = true) private String username; - @NotBlank - @Column(nullable = false) + @NotBlank @Column(nullable = false) private String fullName; - @NotBlank - @Column(unique = true) + @NotBlank @Column(unique = true) private String email; //Placeholder password storage solution - @NotBlank - private String password; + @NotBlank private String password; - @NotNull - @Enumerated(EnumType.STRING) + @NotNull @Enumerated(EnumType.STRING) private UserAuthorization userAuthorization; @Override diff --git a/src/main/java/org/example/visacasemanagementsystem/visa/dto/CreateVisaDTO.java b/src/main/java/org/example/visacasemanagementsystem/visa/dto/CreateVisaDTO.java index ecfc1b7..0937de6 100644 --- a/src/main/java/org/example/visacasemanagementsystem/visa/dto/CreateVisaDTO.java +++ b/src/main/java/org/example/visacasemanagementsystem/visa/dto/CreateVisaDTO.java @@ -2,7 +2,6 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; -import org.example.visacasemanagementsystem.visa.VisaStatus; public record CreateVisaDTO( @NotBlank(message = "Visa type must be specified") String visaType, diff --git a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Comment.java b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Comment.java index f7c58b0..722a5f5 100644 --- a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Comment.java +++ b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Comment.java @@ -32,8 +32,7 @@ public class Comment { @JoinColumn(name = "author_id", nullable = false) private User author; - @NotBlank - @Column(columnDefinition = "TEXT") + @NotBlank @Column(columnDefinition = "TEXT") private String text; @CreatedDate diff --git a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java index df99681..b6346bf 100644 --- a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java +++ b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java @@ -29,15 +29,12 @@ public class Visa { @Column(name = "visa_id", nullable = false, updatable = false) private Long id; - @NotBlank - private String visaType; + @NotBlank private String visaType; - @NotNull - @Enumerated(EnumType.STRING) + @NotNull @Enumerated(EnumType.STRING) private VisaStatus visaStatus; - @NotBlank - private String nationality; + @NotBlank private String nationality; @ManyToOne @JoinColumn(name = "applicant_id", nullable = false) From 37af4a5b2bd2a1cc82d62583b02df15d5cb43177 Mon Sep 17 00:00:00 2001 From: Ebba Andersson Date: Tue, 7 Apr 2026 19:21:00 +0200 Subject: [PATCH 2/4] fix: add compiler plugin and lombok annotation processor --- pom.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pom.xml b/pom.xml index 640d9b4..e953362 100644 --- a/pom.xml +++ b/pom.xml @@ -158,6 +158,19 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.projectlombok + lombok + ${lombok.version} + + + + org.springframework.boot spring-boot-maven-plugin From d88a300c665e52e888c622eb440aa18d5ad2aee1 Mon Sep 17 00:00:00 2001 From: Ebba Andersson Date: Tue, 7 Apr 2026 19:24:19 +0200 Subject: [PATCH 3/4] fix: remove duplicate import --- .../org/example/visacasemanagementsystem/visa/entity/Visa.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java index cb10b72..31905b0 100644 --- a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java +++ b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java @@ -9,7 +9,6 @@ import org.example.visacasemanagementsystem.user.entity.User; import org.example.visacasemanagementsystem.visa.VisaStatus; import org.example.visacasemanagementsystem.visa.VisaType; -import org.example.visacasemanagementsystem.visa.VisaType; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; From 6bec691ee9b30e976a4936c35d5bd4011cc9995c Mon Sep 17 00:00:00 2001 From: Ebba Andersson Date: Tue, 7 Apr 2026 19:55:49 +0200 Subject: [PATCH 4/4] build: disable Flyway and switch to Hibernate ddl-auto update --- pom.xml | 26 +++++++++++------------ src/main/resources/application.properties | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index e953362..c96890d 100644 --- a/pom.xml +++ b/pom.xml @@ -38,10 +38,10 @@ org.springframework.boot spring-boot-starter-data-jpa - - org.springframework.boot - spring-boot-starter-flyway - + + + + org.springframework.boot spring-boot-starter-security @@ -62,10 +62,10 @@ org.springframework.boot spring-boot-starter-webmvc - - org.flywaydb - flyway-database-postgresql - + + + + org.thymeleaf.extras thymeleaf-extras-springsecurity6 @@ -98,11 +98,11 @@ spring-boot-starter-data-jpa-test test - - org.springframework.boot - spring-boot-starter-flyway-test - test - + + + + + org.springframework.boot spring-boot-starter-security-oauth2-client-test diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 3c32fb8..f981dd9 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -6,7 +6,7 @@ spring.datasource.username=${DB_USER:user} spring.datasource.password=${DB_PASSWORD:secret} # application.properties (default/test/prod) -spring.jpa.hibernate.ddl-auto=validate +spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=false spring.jpa.properties.hibernate.format_sql=false