From afffcd89e4ba88ee98e86d979275e5514a113bad Mon Sep 17 00:00:00 2001 From: Ignacio Martin Date: Sat, 7 Feb 2026 15:21:12 +0100 Subject: [PATCH 1/8] chore: add VS Code tasks for building and running Spring Boot app --- .vscode/tasks.json | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .vscode/tasks.json diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..73049df --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,38 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Compile Spring Boot App", + "type": "shell", + "command": "${workspaceFolder}/gradlew", + "args": [ + "compileJava" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": [], + "presentation": { + "reveal": "always", + "panel": "new" + } + }, + { + "label": "Run Spring Boot App", + "type": "shell", + "command": "${workspaceFolder}/gradlew", + "args": [ + "bootRun", + "--args='--spring.profiles.active=dev'" + ], + "group": "none", + "problemMatcher": [], + "presentation": { + "reveal": "always", + "panel": "new" + }, + "isBackground": true + } + ] +} From e6eff6708e6d4f67deecf1a2a37a189155e496ac Mon Sep 17 00:00:00 2001 From: Ignacio Martin Date: Sat, 7 Feb 2026 15:21:19 +0100 Subject: [PATCH 2/8] refactor(entity): remove Lombok from Tag entity and add explicit getters --- .../java/org/udg/pds/springtodo/entity/Tag.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/udg/pds/springtodo/entity/Tag.java b/src/main/java/org/udg/pds/springtodo/entity/Tag.java index f0ac6ab..cae7a6c 100644 --- a/src/main/java/org/udg/pds/springtodo/entity/Tag.java +++ b/src/main/java/org/udg/pds/springtodo/entity/Tag.java @@ -2,16 +2,10 @@ import jakarta.persistence.Entity; import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; import java.io.Serializable; @Entity -@Data -@NoArgsConstructor -@EqualsAndHashCode(callSuper = true) public class Tag extends BaseEntity implements Serializable { @NotNull @@ -20,9 +14,20 @@ public class Tag extends BaseEntity implements Serializable { @NotNull private String description; + public Tag() { + } + public Tag(String name, String description) { this.name = name; this.description = description; } + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + } From 7239893f0482170299a28b60e7c2549906e410a4 Mon Sep 17 00:00:00 2001 From: Ignacio Martin Date: Sat, 7 Feb 2026 15:21:25 +0100 Subject: [PATCH 3/8] chore(gradle): upgrade Gradle wrapper from 8.9 to 8.14.2 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 19cfad9..0b55a3b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From e49fa8413dd825b1b1f3bb446f30db03177264b2 Mon Sep 17 00:00:00 2001 From: Ignacio Martin Date: Sat, 7 Feb 2026 15:21:32 +0100 Subject: [PATCH 4/8] refactor(entity): remove Lombok from User entity and add explicit getters --- .../org/udg/pds/springtodo/entity/User.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/udg/pds/springtodo/entity/User.java b/src/main/java/org/udg/pds/springtodo/entity/User.java index c1a2688..6a91072 100644 --- a/src/main/java/org/udg/pds/springtodo/entity/User.java +++ b/src/main/java/org/udg/pds/springtodo/entity/User.java @@ -5,18 +5,12 @@ import jakarta.persistence.Entity; import jakarta.persistence.OneToMany; import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; @Entity(name = "users") -@Data -@NoArgsConstructor -@EqualsAndHashCode(callSuper = true) public class User extends BaseEntity implements Serializable { @NotNull @@ -33,6 +27,9 @@ public class User extends BaseEntity implements Serializable { @OneToMany(cascade = CascadeType.ALL, mappedBy = "user") private Collection tasks = new ArrayList<>(); + public User() { + } + public User(String username, String email, String password) { this.username = username; this.email = email; @@ -43,4 +40,20 @@ public void addTask(Task task) { tasks.add(task); } + public String getUsername() { + return username; + } + + public String getEmail() { + return email; + } + + public String getPassword() { + return password; + } + + public Collection getTasks() { + return tasks; + } + } From 391e8a890243c1cfb264b9ec49f832b7980fa71a Mon Sep 17 00:00:00 2001 From: Ignacio Martin Date: Sat, 7 Feb 2026 15:21:38 +0100 Subject: [PATCH 5/8] feat(dev): clear database before populating test data in dev profile --- .../java/org/udg/pds/springtodo/Global.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/org/udg/pds/springtodo/Global.java b/src/main/java/org/udg/pds/springtodo/Global.java index 5f1d7d2..3884e53 100644 --- a/src/main/java/org/udg/pds/springtodo/Global.java +++ b/src/main/java/org/udg/pds/springtodo/Global.java @@ -11,6 +11,9 @@ import org.udg.pds.springtodo.entity.IdObject; import org.udg.pds.springtodo.entity.Tag; import org.udg.pds.springtodo.entity.User; +import org.udg.pds.springtodo.repository.TagRepository; +import org.udg.pds.springtodo.repository.TaskRepository; +import org.udg.pds.springtodo.repository.UserRepository; import org.udg.pds.springtodo.service.TagService; import org.udg.pds.springtodo.service.TaskService; import org.udg.pds.springtodo.service.UserService; @@ -36,6 +39,18 @@ public class Global { private TagService tagService; + @Autowired + private + UserRepository userRepository; + + @Autowired + private + TaskRepository taskRepository; + + @Autowired + private + TagRepository tagRepository; + @Value("${spring.profiles.active}") private String activeProfile; @@ -85,6 +100,11 @@ void init() { private void initData() { if (activeProfile.equals("dev")) { + logger.info("Clearing database ..."); + taskRepository.deleteAll(); + tagRepository.deleteAll(); + userRepository.deleteAll(); + logger.info("Starting populating database ..."); User user = userService.register("usuari", "usuari@hotmail.com", "123456"); From 07588e2f4dc611da8b1213661370297b6d225a48 Mon Sep 17 00:00:00 2001 From: Ignacio Martin Date: Sat, 7 Feb 2026 15:21:46 +0100 Subject: [PATCH 6/8] refactor(entity): remove Lombok from BaseEntity and add explicit getId getter --- .../java/org/udg/pds/springtodo/entity/BaseEntity.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/udg/pds/springtodo/entity/BaseEntity.java b/src/main/java/org/udg/pds/springtodo/entity/BaseEntity.java index c01595b..0a5c5fe 100644 --- a/src/main/java/org/udg/pds/springtodo/entity/BaseEntity.java +++ b/src/main/java/org/udg/pds/springtodo/entity/BaseEntity.java @@ -5,16 +5,15 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.MappedSuperclass; -import lombok.AccessLevel; -import lombok.Data; -import lombok.Setter; @MappedSuperclass -@Data public class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Setter(AccessLevel.NONE) protected Long id; + + public Long getId() { + return id; + } } From bf2d9e7605352b019304afa6adb4aa3318690a91 Mon Sep 17 00:00:00 2001 From: Ignacio Martin Date: Sat, 7 Feb 2026 15:21:53 +0100 Subject: [PATCH 7/8] refactor(entity): remove Lombok from Task entity and add explicit getters and setter --- .../org/udg/pds/springtodo/entity/Task.java | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/udg/pds/springtodo/entity/Task.java b/src/main/java/org/udg/pds/springtodo/entity/Task.java index 6f62df0..4e97f47 100644 --- a/src/main/java/org/udg/pds/springtodo/entity/Task.java +++ b/src/main/java/org/udg/pds/springtodo/entity/Task.java @@ -1,9 +1,6 @@ package org.udg.pds.springtodo.entity; import jakarta.persistence.*; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; import java.io.Serializable; import java.time.ZonedDateTime; @@ -11,10 +8,6 @@ import java.util.Collection; @Entity -// This tells JAXB that it has to ignore getters and setters and only use fields for JSON marshaling/unmarshaling -@Data -@NoArgsConstructor -@EqualsAndHashCode(callSuper = true) public class Task extends BaseEntity implements Serializable { @ManyToMany @@ -34,6 +27,9 @@ public class Task extends BaseEntity implements Serializable { @JoinColumn(name = "user_owner") private User user; + public Task() { + } + public Task(ZonedDateTime dateCreated, ZonedDateTime dateLimit, Boolean completed, String text) { this.dateCreated = dateCreated; this.dateLimit = dateLimit; @@ -41,6 +37,34 @@ public Task(ZonedDateTime dateCreated, ZonedDateTime dateLimit, Boolean complete this.text = text; } + public ZonedDateTime getDateCreated() { + return dateCreated; + } + + public ZonedDateTime getDateLimit() { + return dateLimit; + } + + public Boolean getCompleted() { + return completed; + } + + public String getText() { + return text; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public Collection getTags() { + return tags; + } + public void addTag(Tag tag) { tags.add(tag); } From 61323a8f1f98a7cf828e969eb9f2886c01af42f9 Mon Sep 17 00:00:00 2001 From: Ignacio Martin Date: Sat, 7 Feb 2026 15:22:00 +0100 Subject: [PATCH 8/8] build: upgrade Java compatibility from 17 to 21 --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 5e7f9b9..76a3286 100644 --- a/build.gradle +++ b/build.gradle @@ -27,8 +27,8 @@ ext { mapstructVersion = "1.6.3" } -sourceCompatibility = 1.17 -targetCompatibility = 1.17 +sourceCompatibility = 1.21 +targetCompatibility = 1.21 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web'