From e5b6c016abd85b62d88700b30c2c82f6e0374b8d Mon Sep 17 00:00:00 2001 From: BielGuallar Date: Tue, 18 Feb 2025 16:38:53 +0100 Subject: [PATCH 01/27] User and derivated classes created --- .../eps/softarch/tfgfinder/domain/Admin.java | 22 ++++++++++++++ .../softarch/tfgfinder/domain/Director.java | 26 +++++++++++++++++ .../softarch/tfgfinder/domain/External.java | 29 +++++++++++++++++++ .../softarch/tfgfinder/domain/Professor.java | 27 +++++++++++++++++ .../softarch/tfgfinder/domain/Student.java | 29 +++++++++++++++++++ .../eps/softarch/tfgfinder/domain/User.java | 6 +++- 6 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Admin.java create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Admin.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Admin.java new file mode 100644 index 0000000..630b371 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Admin.java @@ -0,0 +1,22 @@ +package cat.udl.eps.softarch.tfgfinder.domain; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.AuthorityUtils; + +import java.util.Collection; + +@Entity +@Data +@EqualsAndHashCode(callSuper = true) +public class Admin extends User{ + + @Override + @ElementCollection + public Collection getAuthorities() { + return AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_ADMIN"); + } +} diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java new file mode 100644 index 0000000..1bc71d1 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java @@ -0,0 +1,26 @@ +package cat.udl.eps.softarch.tfgfinder.domain; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonValue; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.AuthorityUtils; + +import java.util.Collection; + +@Entity +@Data +@EqualsAndHashCode(callSuper = true) +public class Director extends User{ + @NotEmpty + private String department; + + @Override + @ElementCollection + public Collection getAuthorities() { + return AuthorityUtils.createAuthorityList("ROLE_DIRECTOR"); + } +} diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java new file mode 100644 index 0000000..d0d2933 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java @@ -0,0 +1,29 @@ +package cat.udl.eps.softarch.tfgfinder.domain; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonValue; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.AuthorityUtils; + +import java.util.Collection; + + + +@Entity +@Data +@EqualsAndHashCode(callSuper = true) +public class External extends Director { + + @NotEmpty + private String organization; + + @Override + @ElementCollection + public Collection getAuthorities() { + return AuthorityUtils.createAuthorityList("ROLE_EXTERNAL"); + } +} \ No newline at end of file diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java new file mode 100644 index 0000000..6693f9d --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java @@ -0,0 +1,27 @@ +package cat.udl.eps.softarch.tfgfinder.domain; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonValue; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.AuthorityUtils; + +import java.util.Collection; + +@Entity +@Data +@EqualsAndHashCode(callSuper = true) +public class Professor extends Director { + + @NotEmpty + private String faculty; + + @Override + @ElementCollection + public Collection getAuthorities() { + return AuthorityUtils.createAuthorityList("ROLE_PROFESSOR"); + } +} \ No newline at end of file diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java new file mode 100644 index 0000000..2f5aa1b --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java @@ -0,0 +1,29 @@ +package cat.udl.eps.softarch.tfgfinder.domain; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonValue; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.AuthorityUtils; + +import java.util.Collection; + +@Entity +@Data +@EqualsAndHashCode(callSuper = true) +public class Student extends User { + + @NotEmpty + private String phoneNumber; + + @NotEmpty + private String name; + @Override + @ElementCollection + public Collection getAuthorities(){ + return AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_STUDENT"); + } +} \ No newline at end of file diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java index bbfc97c..12c30b0 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java @@ -7,6 +7,7 @@ import jakarta.validation.constraints.NotBlank; import com.fasterxml.jackson.annotation.JsonValue; +import jakarta.validation.constraints.NotEmpty; import lombok.Data; import lombok.EqualsAndHashCode; import org.hibernate.validator.constraints.Length; @@ -27,7 +28,7 @@ public class User extends UriEntity implements UserDetails { public static PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); @Id - private String id; + private String id; //username? @NotBlank @Email @@ -42,6 +43,9 @@ public class User extends UriEntity implements UserDetails { @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private boolean passwordReset; + @ElementCollection + private Collection favorites; + public void encodePassword() { this.password = passwordEncoder.encode(this.password); } From 27830a15cc2d2b6956a552cc6743194ace76feea Mon Sep 17 00:00:00 2001 From: francescginep Date: Tue, 18 Feb 2025 17:52:35 +0100 Subject: [PATCH 02/27] Add a boleean attribute in Director class and modifying department attribute from Director to Professor class --- .../java/cat/udl/eps/softarch/tfgfinder/domain/Director.java | 2 +- .../java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java | 3 +++ .../java/cat/udl/eps/softarch/tfgfinder/domain/Student.java | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java index 1bc71d1..67db6d6 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java @@ -16,7 +16,7 @@ @EqualsAndHashCode(callSuper = true) public class Director extends User{ @NotEmpty - private String department; + private Boolean available; @Override @ElementCollection diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java index 6693f9d..91dccf8 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java @@ -19,6 +19,9 @@ public class Professor extends Director { @NotEmpty private String faculty; + @NotEmpty + private String department; + @Override @ElementCollection public Collection getAuthorities() { diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java index 2f5aa1b..13e3eb0 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java @@ -19,6 +19,8 @@ public class Student extends User { @NotEmpty private String phoneNumber; + + @NotEmpty private String name; @Override From 0d1a007242a0a0b01ae5a71b072a7e03aa25dd1b Mon Sep 17 00:00:00 2001 From: WhiteLion03 Date: Wed, 19 Feb 2025 01:34:46 +0100 Subject: [PATCH 03/27] Definition of class Agree --- src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java new file mode 100644 index 0000000..51f3a41 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java @@ -0,0 +1,2 @@ +package cat.udl.eps.softarch.tfgfinder.domain;public class Agree { +} From bf743f1bc349bffb8776e91130a4e1bdebbf1ce2 Mon Sep 17 00:00:00 2001 From: WhiteLion03 Date: Wed, 19 Feb 2025 01:37:09 +0100 Subject: [PATCH 04/27] Defined class Agree --- .../eps/softarch/tfgfinder/domain/Agree.java | 60 ++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java index 51f3a41..4d86cc5 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java @@ -1,2 +1,58 @@ -package cat.udl.eps.softarch.tfgfinder.domain;public class Agree { -} +package cat.udl.eps.softarch.tfgfinder.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import jakarta.persistence.*; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + +import java.time.ZonedDateTime; +import java.util.Collection; + +@Entity +@Table(name = "Agrees") +@Data +@EqualsAndHashCode(callSuper = true) +public class Agree extends UriEntity { + + @Id + private String id; + + @DateTimeFormat + private ZonedDateTime when; + + public enum Status { + PENDING, + ACCEPTED, + REJECTED + } + + @Enumerated(EnumType.STRING) + private Status status; + + + public String getId() { return id; } + + public void setAgree(String invite) { this.id = invite; } + + + public ZonedDateTime getWhen() { return when; } + + public void setWhen(ZonedDateTime when) { this.when = when; } + + + public Status getStatus() { return status; } + + public void setStatus(Status status) { this.status = status; } +} \ No newline at end of file From c66d43be8fa6dc821c9ecc260dc9a8b6dc07f078 Mon Sep 17 00:00:00 2001 From: BielGuallar Date: Wed, 19 Feb 2025 17:44:58 +0100 Subject: [PATCH 05/27] Attributs and restrictions added in Student, External, Professor and Director --- .../softarch/tfgfinder/domain/Director.java | 11 ++++--- .../softarch/tfgfinder/domain/External.java | 31 ++++++++++++++++++- .../softarch/tfgfinder/domain/Professor.java | 14 +++++++-- .../softarch/tfgfinder/domain/Student.java | 31 +++++++++++++++++-- 4 files changed, 76 insertions(+), 11 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java index 67db6d6..f94186c 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; -import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.*; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.security.core.GrantedAuthority; @@ -14,13 +14,14 @@ @Entity @Data @EqualsAndHashCode(callSuper = true) -public class Director extends User{ - @NotEmpty - private Boolean available; +public class Director extends User { + + @NotNull(message = "La disponibilidad no puede ser nula") + private Boolean available = true; @Override @ElementCollection public Collection getAuthorities() { return AuthorityUtils.createAuthorityList("ROLE_DIRECTOR"); } -} +} \ No newline at end of file diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java index d0d2933..ff0aa52 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; -import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.*; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.security.core.GrantedAuthority; @@ -19,8 +19,37 @@ public class External extends Director { @NotEmpty + @Size(min = 2, max = 50, message = "El nombre debe tener entre 2 y 50 caracteres") + private String name; + + @NotEmpty + @Size(min = 2, max = 50, message = "El apellido debe tener entre 2 y 50 caracteres") + private String surname; + + @NotEmpty + @Size(min = 2, max = 100, message = "El cargo debe tener entre 2 y 100 caracteres") + private String position; + + @NotEmpty + @Size(min = 2, max = 100, message = "La organización debe tener entre 2 y 100 caracteres") private String organization; + @NotEmpty + @Size(min = 5, max = 100, message = "La dirección debe tener entre 5 y 100 caracteres") + private String address; + + @NotEmpty + @Size(min = 2, max = 50, message = "El municipio debe tener entre 2 y 50 caracteres") + private String municipality; + + @NotEmpty + @Pattern(regexp = "^[0-9]{5}$", message = "El código postal debe contener exactamente 5 dígitos") + private String postalCode; + + @NotEmpty + @Pattern(regexp = "^[0-9]{9}$", message = "El número de teléfono debe contener exactamente 9 dígitos") + private String phoneNumber; + @Override @ElementCollection public Collection getAuthorities() { diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java index 91dccf8..6702eb5 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; -import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.*; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.security.core.GrantedAuthority; @@ -17,10 +17,20 @@ public class Professor extends Director { @NotEmpty + @Size(min = 2, max = 100, message = "La facultad debe tener entre 2 y 100 caracteres") private String faculty; @NotEmpty - private String department; + @Size(min = 2, max = 100, message = "El departamento debe tener entre 2 y 100 caracteres") + private String department; + + @NotEmpty + @Size(min = 2, max = 50, message = "El nombre debe tener entre 2 y 50 caracteres") + private String name; + + @NotEmpty + @Size(min = 2, max = 50, message = "El apellido debe tener entre 2 y 50 caracteres") + private String surname; @Override @ElementCollection diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java index 13e3eb0..c0d258d 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; -import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.*; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.security.core.GrantedAuthority; @@ -17,12 +17,37 @@ public class Student extends User { @NotEmpty - private String phoneNumber; + @Size(min = 2, max = 50, message = "El nombre debe tener entre 2 y 50 caracteres") + private String name; + + @NotEmpty + @Size(min = 2, max = 50, message = "El apellido debe tener entre 2 y 50 caracteres") + private String surname; + @NotEmpty + @Pattern(regexp = "^[0-9]{8}[A-Za-z]$", message = "El DNI debe tener 8 números seguidos de una letra") + private String DNI; + @NotEmpty + @Size(min = 5, max = 100, message = "La dirección debe tener entre 5 y 100 caracteres") + private String address; @NotEmpty - private String name; + @Size(min = 2, max = 50, message = "El municipio debe tener entre 2 y 50 caracteres") + private String municipality; + + @NotEmpty + @Pattern(regexp = "^[0-9]{5}$", message = "El código postal debe contener exactamente 5 dígitos") + private String postalCode; + + @NotEmpty + @Pattern(regexp = "^[0-9]{9}$", message = "El número de teléfono debe contener exactamente 9 dígitos") + private String phoneNumber; + + @NotEmpty + @Size(min = 2, max = 100, message = "El nombre del grado debe tener entre 2 y 100 caracteres") + private String degree; + @Override @ElementCollection public Collection getAuthorities(){ From 1de401c7f9b4e5e07192d0f17c4734ac279a71a4 Mon Sep 17 00:00:00 2001 From: BielGuallar Date: Wed, 19 Feb 2025 17:55:55 +0100 Subject: [PATCH 06/27] Atribut favourites eliminated from user --- src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java index 12c30b0..e7105f9 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java @@ -1,5 +1,6 @@ package cat.udl.eps.softarch.tfgfinder.domain; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.persistence.*; @@ -43,8 +44,7 @@ public class User extends UriEntity implements UserDetails { @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private boolean passwordReset; - @ElementCollection - private Collection favorites; + //Faltarà crear favourites per la llista de propostes favorites public void encodePassword() { this.password = passwordEncoder.encode(this.password); From 9227d8ef06d4f7acdb1b15399631e2d7ef8fdf60 Mon Sep 17 00:00:00 2001 From: WhiteLion03 Date: Wed, 19 Feb 2025 17:56:38 +0100 Subject: [PATCH 07/27] Delete unnecessary imports --- .../udl/eps/softarch/tfgfinder/domain/Agree.java | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java index 4d86cc5..820adaf 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java @@ -1,21 +1,10 @@ package cat.udl.eps.softarch.tfgfinder.domain; -import com.fasterxml.jackson.annotation.JsonProperty; - import jakarta.persistence.*; -import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; - -import com.fasterxml.jackson.annotation.JsonValue; import lombok.Data; import lombok.EqualsAndHashCode; -import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.AuthorityUtils; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.PasswordEncoder; import java.time.ZonedDateTime; import java.util.Collection; @@ -41,18 +30,16 @@ public enum Status { @Enumerated(EnumType.STRING) private Status status; - public String getId() { return id; } public void setAgree(String invite) { this.id = invite; } - public ZonedDateTime getWhen() { return when; } public void setWhen(ZonedDateTime when) { this.when = when; } - public Status getStatus() { return status; } public void setStatus(Status status) { this.status = status; } + } \ No newline at end of file From f24332037c3e68130719ade93c0bbe950188ba86 Mon Sep 17 00:00:00 2001 From: BielGuallar Date: Thu, 20 Feb 2025 16:41:32 +0100 Subject: [PATCH 08/27] Repository creation for each class developed --- .../tfgfinder/repository/AdminRepository.java | 15 +++++++++++++++ .../tfgfinder/repository/DirectorRepository.java | 14 ++++++++++++++ .../tfgfinder/repository/ExternalRepository.java | 15 +++++++++++++++ .../tfgfinder/repository/ProfessorRepository.java | 15 +++++++++++++++ .../tfgfinder/repository/StudentRepository.java | 14 ++++++++++++++ 5 files changed, 73 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/repository/AdminRepository.java create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/repository/DirectorRepository.java create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ExternalRepository.java create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ProfessorRepository.java create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/repository/StudentRepository.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/AdminRepository.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/AdminRepository.java new file mode 100644 index 0000000..6981395 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/AdminRepository.java @@ -0,0 +1,15 @@ +package cat.udl.eps.softarch.tfgfinder.repository; + +import cat.udl.eps.softarch.tfgfinder.domain.Admin; +import cat.udl.eps.softarch.tfgfinder.domain.User; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +import java.util.List; + +@RepositoryRestResource +public interface AdminRepository extends CrudRepository, PagingAndSortingRepository { + List findByIdContaining(@Param("text") String text); +} \ No newline at end of file diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/DirectorRepository.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/DirectorRepository.java new file mode 100644 index 0000000..be858c9 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/DirectorRepository.java @@ -0,0 +1,14 @@ +package cat.udl.eps.softarch.tfgfinder.repository; + +import cat.udl.eps.softarch.tfgfinder.domain.Director; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +import java.util.List; + +@RepositoryRestResource +public interface DirectorRepository extends CrudRepository, PagingAndSortingRepository { + List findByAvailable(@Param("available") Boolean available); +} \ No newline at end of file diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ExternalRepository.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ExternalRepository.java new file mode 100644 index 0000000..c751490 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ExternalRepository.java @@ -0,0 +1,15 @@ +package cat.udl.eps.softarch.tfgfinder.repository; + + +import cat.udl.eps.softarch.tfgfinder.domain.External; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +import java.util.List; + +@RepositoryRestResource +public interface ExternalRepository extends CrudRepository, PagingAndSortingRepository { + List findByOrganizationContaining(@Param("organization") String organization); +} \ No newline at end of file diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ProfessorRepository.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ProfessorRepository.java new file mode 100644 index 0000000..8d8d62f --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ProfessorRepository.java @@ -0,0 +1,15 @@ +package cat.udl.eps.softarch.tfgfinder.repository; + + +import cat.udl.eps.softarch.tfgfinder.domain.Professor; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +import java.util.List; + +@RepositoryRestResource +public interface ProfessorRepository extends CrudRepository, PagingAndSortingRepository { + List findByDepartmentContaining(@Param("department") String department); +} \ No newline at end of file diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/StudentRepository.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/StudentRepository.java new file mode 100644 index 0000000..1cb1783 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/StudentRepository.java @@ -0,0 +1,14 @@ +package cat.udl.eps.softarch.tfgfinder.repository; + +import cat.udl.eps.softarch.tfgfinder.domain.Student; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +import java.util.List; + +@RepositoryRestResource +public interface StudentRepository extends CrudRepository, PagingAndSortingRepository { + List findByNameContaining(@Param("name") String name); +} \ No newline at end of file From c34fb01855a111b5385d2676dbb827d272872349 Mon Sep 17 00:00:00 2001 From: WhiteLion03 Date: Mon, 24 Feb 2025 12:00:02 +0100 Subject: [PATCH 09/27] Removed getters and setters from Agree class --- .../udl/eps/softarch/tfgfinder/domain/Agree.java | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java index 820adaf..e2701aa 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java @@ -10,12 +10,13 @@ import java.util.Collection; @Entity -@Table(name = "Agrees") +@Table(name = "agrees") @Data @EqualsAndHashCode(callSuper = true) public class Agree extends UriEntity { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private String id; @DateTimeFormat @@ -30,16 +31,4 @@ public enum Status { @Enumerated(EnumType.STRING) private Status status; - public String getId() { return id; } - - public void setAgree(String invite) { this.id = invite; } - - public ZonedDateTime getWhen() { return when; } - - public void setWhen(ZonedDateTime when) { this.when = when; } - - public Status getStatus() { return status; } - - public void setStatus(Status status) { this.status = status; } - } \ No newline at end of file From 5e05abb1e1959d8be0ee5158876ac0e2aae8aa98 Mon Sep 17 00:00:00 2001 From: claudiacolas Date: Mon, 24 Feb 2025 16:11:36 +0100 Subject: [PATCH 10/27] Creation of WHO relation between Invite and User classes. --- .../java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java index 4cd8dc6..6e93ba2 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java @@ -1,5 +1,6 @@ package cat.udl.eps.softarch.tfgfinder.domain; +import com.fasterxml.jackson.annotation.JsonIdentityReference; import jakarta.persistence.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; @@ -23,4 +24,10 @@ public class Invite extends UriEntity { @NotBlank private String status; + @ManyToOne + @JoinColumn(name = "user_id", nullable = false) // WHO: Qui està associat a la invitació + @NotNull + @JsonIdentityReference(alwaysAsId = true) + private User who; + } From 6f27dbc0c0c1e6e2245b154b638c1e00eb6fc1e8 Mon Sep 17 00:00:00 2001 From: WhiteLion03 Date: Tue, 25 Feb 2025 11:10:52 +0100 Subject: [PATCH 11/27] Defined id as long in class Agree --- src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java index e2701aa..4c1b319 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java @@ -17,7 +17,7 @@ public class Agree extends UriEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private String id; + private Long id; @DateTimeFormat private ZonedDateTime when; From 16520d02e2685da4193fd2f467c9ba47e65e2671 Mon Sep 17 00:00:00 2001 From: WhiteLion03 Date: Tue, 25 Feb 2025 11:10:52 +0100 Subject: [PATCH 12/27] Long definition of the class --- .../java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java index e2701aa..39ec68d 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Agree.java @@ -13,11 +13,11 @@ @Table(name = "agrees") @Data @EqualsAndHashCode(callSuper = true) -public class Agree extends UriEntity { +public class Agree extends UriEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private String id; + private Long id; @DateTimeFormat private ZonedDateTime when; From 37934e9b979bd94f9423032466181ea6154c92cf Mon Sep 17 00:00:00 2001 From: BielGuallar Date: Wed, 26 Feb 2025 17:25:34 +0100 Subject: [PATCH 13/27] Messages and comments translated to english --- .../softarch/tfgfinder/domain/Director.java | 5 +++-- .../softarch/tfgfinder/domain/External.java | 21 +++++++++---------- .../softarch/tfgfinder/domain/Professor.java | 11 +++++----- .../softarch/tfgfinder/domain/Student.java | 21 ++++++++++--------- .../eps/softarch/tfgfinder/domain/User.java | 2 +- 5 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java index f94186c..04dc22c 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Director.java @@ -1,4 +1,5 @@ package cat.udl.eps.softarch.tfgfinder.domain; + import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonValue; import jakarta.persistence.ElementCollection; @@ -16,7 +17,7 @@ @EqualsAndHashCode(callSuper = true) public class Director extends User { - @NotNull(message = "La disponibilidad no puede ser nula") + @NotNull(message = "Availability cannot be null") private Boolean available = true; @Override @@ -24,4 +25,4 @@ public class Director extends User { public Collection getAuthorities() { return AuthorityUtils.createAuthorityList("ROLE_DIRECTOR"); } -} \ No newline at end of file +} diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java index ff0aa52..fcf73da 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/External.java @@ -1,4 +1,5 @@ package cat.udl.eps.softarch.tfgfinder.domain; + import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonValue; import jakarta.persistence.ElementCollection; @@ -11,43 +12,41 @@ import java.util.Collection; - - @Entity @Data @EqualsAndHashCode(callSuper = true) public class External extends Director { @NotEmpty - @Size(min = 2, max = 50, message = "El nombre debe tener entre 2 y 50 caracteres") + @Size(min = 2, max = 50, message = "The first name must be between 2 and 50 characters") private String name; @NotEmpty - @Size(min = 2, max = 50, message = "El apellido debe tener entre 2 y 50 caracteres") + @Size(min = 2, max = 50, message = "The last name must be between 2 and 50 characters") private String surname; @NotEmpty - @Size(min = 2, max = 100, message = "El cargo debe tener entre 2 y 100 caracteres") + @Size(min = 2, max = 100, message = "The position must be between 2 and 100 characters") private String position; @NotEmpty - @Size(min = 2, max = 100, message = "La organización debe tener entre 2 y 100 caracteres") + @Size(min = 2, max = 100, message = "The organization must be between 2 and 100 characters") private String organization; @NotEmpty - @Size(min = 5, max = 100, message = "La dirección debe tener entre 5 y 100 caracteres") + @Size(min = 5, max = 100, message = "The address must be between 5 and 100 characters") private String address; @NotEmpty - @Size(min = 2, max = 50, message = "El municipio debe tener entre 2 y 50 caracteres") + @Size(min = 2, max = 50, message = "The municipality must be between 2 and 50 characters") private String municipality; @NotEmpty - @Pattern(regexp = "^[0-9]{5}$", message = "El código postal debe contener exactamente 5 dígitos") + @Pattern(regexp = "^[0-9]{5}$", message = "The postal code must contain exactly 5 digits") private String postalCode; @NotEmpty - @Pattern(regexp = "^[0-9]{9}$", message = "El número de teléfono debe contener exactamente 9 dígitos") + @Pattern(regexp = "^[0-9]{9}$", message = "The phone number must contain exactly 9 digits") private String phoneNumber; @Override @@ -55,4 +54,4 @@ public class External extends Director { public Collection getAuthorities() { return AuthorityUtils.createAuthorityList("ROLE_EXTERNAL"); } -} \ No newline at end of file +} diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java index 6702eb5..b67ab5e 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Professor.java @@ -1,4 +1,5 @@ package cat.udl.eps.softarch.tfgfinder.domain; + import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonValue; import jakarta.persistence.ElementCollection; @@ -17,19 +18,19 @@ public class Professor extends Director { @NotEmpty - @Size(min = 2, max = 100, message = "La facultad debe tener entre 2 y 100 caracteres") + @Size(min = 2, max = 100, message = "The faculty name must be between 2 and 100 characters") private String faculty; @NotEmpty - @Size(min = 2, max = 100, message = "El departamento debe tener entre 2 y 100 caracteres") + @Size(min = 2, max = 100, message = "The department name must be between 2 and 100 characters") private String department; @NotEmpty - @Size(min = 2, max = 50, message = "El nombre debe tener entre 2 y 50 caracteres") + @Size(min = 2, max = 50, message = "The first name must be between 2 and 50 characters") private String name; @NotEmpty - @Size(min = 2, max = 50, message = "El apellido debe tener entre 2 y 50 caracteres") + @Size(min = 2, max = 50, message = "The last name must be between 2 and 50 characters") private String surname; @Override @@ -37,4 +38,4 @@ public class Professor extends Director { public Collection getAuthorities() { return AuthorityUtils.createAuthorityList("ROLE_PROFESSOR"); } -} \ No newline at end of file +} diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java index c0d258d..8984e57 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Student.java @@ -1,4 +1,5 @@ package cat.udl.eps.softarch.tfgfinder.domain; + import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonValue; import jakarta.persistence.ElementCollection; @@ -17,40 +18,40 @@ public class Student extends User { @NotEmpty - @Size(min = 2, max = 50, message = "El nombre debe tener entre 2 y 50 caracteres") + @Size(min = 2, max = 50, message = "The name must be between 2 and 50 characters long") private String name; @NotEmpty - @Size(min = 2, max = 50, message = "El apellido debe tener entre 2 y 50 caracteres") + @Size(min = 2, max = 50, message = "The surname must be between 2 and 50 characters long") private String surname; @NotEmpty - @Pattern(regexp = "^[0-9]{8}[A-Za-z]$", message = "El DNI debe tener 8 números seguidos de una letra") + @Pattern(regexp = "^[0-9]{8}[A-Za-z]$", message = "The DNI must have 8 digits followed by a letter") private String DNI; @NotEmpty - @Size(min = 5, max = 100, message = "La dirección debe tener entre 5 y 100 caracteres") + @Size(min = 5, max = 100, message = "The address must be between 5 and 100 characters long") private String address; @NotEmpty - @Size(min = 2, max = 50, message = "El municipio debe tener entre 2 y 50 caracteres") + @Size(min = 2, max = 50, message = "The municipality must be between 2 and 50 characters long") private String municipality; @NotEmpty - @Pattern(regexp = "^[0-9]{5}$", message = "El código postal debe contener exactamente 5 dígitos") + @Pattern(regexp = "^[0-9]{5}$", message = "The postal code must contain exactly 5 digits") private String postalCode; @NotEmpty - @Pattern(regexp = "^[0-9]{9}$", message = "El número de teléfono debe contener exactamente 9 dígitos") + @Pattern(regexp = "^[0-9]{9}$", message = "The phone number must contain exactly 9 digits") private String phoneNumber; @NotEmpty - @Size(min = 2, max = 100, message = "El nombre del grado debe tener entre 2 y 100 caracteres") + @Size(min = 2, max = 100, message = "The degree name must be between 2 and 100 characters long") private String degree; @Override @ElementCollection - public Collection getAuthorities(){ + public Collection getAuthorities() { return AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_STUDENT"); } -} \ No newline at end of file +} diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java index e7105f9..f702281 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/User.java @@ -44,7 +44,7 @@ public class User extends UriEntity implements UserDetails { @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private boolean passwordReset; - //Faltarà crear favourites per la llista de propostes favorites + // Favourites for the list of favorite proposals still has to be created. public void encodePassword() { this.password = passwordEncoder.encode(this.password); From 96b537662a7847ad9b98988ec09fd55440a113a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20Torres=20Espu=C3=B1a?= Date: Wed, 26 Feb 2025 17:59:23 +0100 Subject: [PATCH 14/27] Implemented Relation Interest WHAT Proposal --- .../eps/softarch/tfgfinder/domain/Interest.java | 7 +++++++ .../tfgfinder/repository/InterestRepository.java | 15 +++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/repository/InterestRepository.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java index 1862884..ea5ef28 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java @@ -1,7 +1,9 @@ package cat.udl.eps.softarch.tfgfinder.domain; +import com.fasterxml.jackson.annotation.JsonIdentityReference; import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; @@ -29,4 +31,9 @@ public enum Status { @Enumerated (EnumType.STRING) private Status status; + + @ManyToOne + @NotNull + @JsonIdentityReference(alwaysAsId = true) + private Proposal proposal; } diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/InterestRepository.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/InterestRepository.java new file mode 100644 index 0000000..b368c57 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/InterestRepository.java @@ -0,0 +1,15 @@ +package cat.udl.eps.softarch.tfgfinder.repository; + +import cat.udl.eps.softarch.tfgfinder.domain.Interest; +import cat.udl.eps.softarch.tfgfinder.domain.Proposal; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface InterestRepository extends CrudRepository, PagingAndSortingRepository { + List findByProposal(@Param("proposal") Proposal proposal); +} \ No newline at end of file From 6a8592551534fcb10060b7e69d7fdadf5d11d901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20V=C3=A1zquez=20Teba?= Date: Wed, 26 Feb 2025 18:12:40 +0100 Subject: [PATCH 15/27] ChatRepository created --- .../cat/udl/eps/softarch/tfgfinder/domain/Chat.java | 2 ++ .../udl/eps/softarch/tfgfinder/domain/Message.java | 3 +++ .../tfgfinder/repository/ChatRepository.java | 13 +++++++++++++ 3 files changed, 18 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ChatRepository.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java index eab4b99..6af87e1 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java @@ -2,6 +2,8 @@ import jakarta.persistence.Entity; import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java index 03a9e55..6de02f4 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java @@ -26,4 +26,7 @@ public class Message extends UriEntity { @ManyToOne private User from; + @ManyToOne + private Chat chat; + } diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ChatRepository.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ChatRepository.java new file mode 100644 index 0000000..8b05d41 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/ChatRepository.java @@ -0,0 +1,13 @@ +package cat.udl.eps.softarch.tfgfinder.repository; + +import cat.udl.eps.softarch.tfgfinder.domain.Message; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +@RepositoryRestResource +public interface ChatRepository extends CrudRepository, PagingAndSortingRepository { + + + +} From 7c7e33d479ebf43634fdb913585ff2d3a30526dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=BAria?= Date: Tue, 18 Feb 2025 16:38:05 +0100 Subject: [PATCH 16/27] Category class created --- .../softarch/tfgfinder/domain/Category.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Category.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Category.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Category.java new file mode 100644 index 0000000..3954388 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Category.java @@ -0,0 +1,29 @@ +package cat.udl.eps.softarch.tfgfinder.domain; + +import com.fasterxml.jackson.annotation.JsonInclude; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + + + +@Entity +@EqualsAndHashCode(callSuper=true) +@Data + +public class Category extends UriEntity { + + @Id + @GeneratedValue() + private Long id; + + + @NotBlank + private String name; + + @NotBlank + @JsonInclude(JsonInclude.Include.NON_NULL) + private String description; + +} From 7b3ef77216d0f6f4ffada75c1807106379278b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20V=C3=A1zquez=20Teba?= Date: Tue, 18 Feb 2025 17:07:33 +0100 Subject: [PATCH 17/27] Message class created --- .../softarch/tfgfinder/domain/Message.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java new file mode 100644 index 0000000..03a9e55 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java @@ -0,0 +1,29 @@ +package cat.udl.eps.softarch.tfgfinder.domain; + +import jakarta.persistence.*; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.ZonedDateTime; + +@Entity +@Data +@EqualsAndHashCode(callSuper=true) + +public class Message extends UriEntity { + + @Id + private Long id; + + @NotNull + private ZonedDateTime when; + + @NotBlank + private String text; + + @ManyToOne + private User from; + +} From 3eefba275dc4e4d9dcef61851aff8af535a7d3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80ngela=20Giribet?= Date: Wed, 19 Feb 2025 18:32:52 +0100 Subject: [PATCH 18/27] Chat class created --- .../udl/eps/softarch/tfgfinder/domain/Chat.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java new file mode 100644 index 0000000..eab4b99 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java @@ -0,0 +1,17 @@ +package cat.udl.eps.softarch.tfgfinder.domain; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Entity +@Data +@EqualsAndHashCode(callSuper=true) + +public class Chat extends UriEntity{ + + @Id + private Long id; + +} \ No newline at end of file From 6da15410e137a52ea46a63820e9ff2af0ab6785d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20Torres=20Espu=C3=B1a?= Date: Wed, 19 Feb 2025 17:42:36 +0100 Subject: [PATCH 19/27] Implemented Proposal class --- .../softarch/tfgfinder/domain/Proposal.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Proposal.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Proposal.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Proposal.java new file mode 100644 index 0000000..4b4c5de --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Proposal.java @@ -0,0 +1,49 @@ +package cat.udl.eps.softarch.tfgfinder.domain; + +import java.util.Collection; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + + + +@Entity +@EqualsAndHashCode(callSuper=true) +@Data + +public class Proposal extends UriEntity { + + @Id + @GeneratedValue() + private Long id; + + + @NotBlank + @Size(min = 12, max = 120) + private String title; + + @NotBlank + @Size(min = 50, max = 500) + private String description; + + @NotBlank + @Size(min = 5, max = 50) + private String timing; + + @NotBlank + @Size(min = 5, max = 50) + private String speciality; + + @NotBlank + @Size(min = 5, max = 50) + private String kind; + + @ElementCollection + private Collection keywords; + + @ManyToOne + private User user; // Reference to the User entity + +} \ No newline at end of file From 661d9c704e72cdefd7a6d75b6dec36a70cbbfbe6 Mon Sep 17 00:00:00 2001 From: Jordi Date: Tue, 18 Feb 2025 20:56:15 +0100 Subject: [PATCH 20/27] Interest class creation --- src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java new file mode 100644 index 0000000..e69de29 From c8d9acfaa25389158d87039f808be2f0b7c6fc52 Mon Sep 17 00:00:00 2001 From: Jordi Date: Tue, 18 Feb 2025 21:06:29 +0100 Subject: [PATCH 21/27] interest imports --- .../softarch/tfgfinder/domain/Interest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java index e69de29..2b5ccd4 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java @@ -0,0 +1,19 @@ +package cat.udl.eps.softarch.tfgfinder.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import jakarta.persistence.*; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.validator.constraints.Length; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + +import java.util.Collection; \ No newline at end of file From 704664b30ae29ca2f86a9b03ddf98c14283bf5ce Mon Sep 17 00:00:00 2001 From: Jordi Date: Tue, 18 Feb 2025 21:39:21 +0100 Subject: [PATCH 22/27] Interest class defined --- .../softarch/tfgfinder/domain/Interest.java | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java index 2b5ccd4..2eb12fe 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java @@ -10,10 +10,49 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; -import java.util.Collection; \ No newline at end of file +import java.time.ZonedDateTime; +import java.util.Collection; + +@Entity +@Table(name = "Interest") +@Data +@EqualsAndHashCode(callSuper = true) +public class Interest extends UriEntity { + + @Id + private String id; + + @DateTimeFormat + private ZonedDateTime when; + + public enum Status { + PENDING, + ACCEPTED, + REJECTED + } + + @Enumerated (EnumType.STRING) + private Status status; + + + public String getInvite() { return id; } + + public void setInvite(String invite) { this.id = invite; } + + + public ZonedDateTime getWhen() { return when; } + + public void setWhen(ZonedDateTime when) { this.when = when; } + + + public Status getStatus() { return status; } + + public void setStatus(Status status) { this.status = status; } +} \ No newline at end of file From 399d4474281e93bd6ef173cdfd6eb50569693d89 Mon Sep 17 00:00:00 2001 From: Jordi Date: Thu, 20 Feb 2025 22:35:47 +0100 Subject: [PATCH 23/27] lowercase --- .../java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java index 2eb12fe..e744a2b 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java @@ -21,7 +21,7 @@ import java.util.Collection; @Entity -@Table(name = "Interest") +@Table(name = "interest") @Data @EqualsAndHashCode(callSuper = true) public class Interest extends UriEntity { From 217812e7734b3bcac76740131f771e2dad6e9a37 Mon Sep 17 00:00:00 2001 From: Jordi Date: Thu, 20 Feb 2025 22:36:09 +0100 Subject: [PATCH 24/27] getters and setters removed --- .../eps/softarch/tfgfinder/domain/Interest.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java index e744a2b..cf7e5e7 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java @@ -40,19 +40,4 @@ public enum Status { @Enumerated (EnumType.STRING) private Status status; - - - public String getInvite() { return id; } - - public void setInvite(String invite) { this.id = invite; } - - - public ZonedDateTime getWhen() { return when; } - - public void setWhen(ZonedDateTime when) { this.when = when; } - - - public Status getStatus() { return status; } - - public void setStatus(Status status) { this.status = status; } } \ No newline at end of file From 7ee9355b26e0d3813b722836b94da90b9047952c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20V=C3=A1zquez=20Teba?= Date: Thu, 20 Feb 2025 16:35:43 +0100 Subject: [PATCH 25/27] MessageRepository created --- .../repository/MessageRepository.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/tfgfinder/repository/MessageRepository.java diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/MessageRepository.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/MessageRepository.java new file mode 100644 index 0000000..a034af4 --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/repository/MessageRepository.java @@ -0,0 +1,30 @@ +package cat.udl.eps.softarch.tfgfinder.repository; + +import cat.udl.eps.softarch.tfgfinder.domain.Message; +import cat.udl.eps.softarch.tfgfinder.domain.User; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +import java.time.ZonedDateTime; +import java.util.List; + +@RepositoryRestResource +public interface MessageRepository extends CrudRepository, PagingAndSortingRepository { + + /* Interface provides automatically, as defined in + * https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html + * and + * https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/PagingAndSortingRepository.html + * the methods: count, delete, deleteAll, deleteById, existsById, findAll, findAllById, findById, save, saveAll,... + * + * Additional methods like findByUsernameContaining can be defined following: + * https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation + */ + + List findByWhen(@Param("when")ZonedDateTime when); + + List findByFrom(@Param("user") User from); + +} From d2b15098d29bdaea2bb0613682fb7c3362fe3c01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20Garc=C3=ADa?= Date: Sun, 23 Feb 2025 17:07:00 +0100 Subject: [PATCH 26/27] Use Long as ID and GenerationType.IDENTITY) --- .../softarch/tfgfinder/domain/Category.java | 2 +- .../eps/softarch/tfgfinder/domain/Chat.java | 5 ++++- .../softarch/tfgfinder/domain/Interest.java | 21 +++++-------------- .../eps/softarch/tfgfinder/domain/Invite.java | 1 + .../softarch/tfgfinder/domain/Message.java | 1 + .../softarch/tfgfinder/domain/Proposal.java | 4 ++-- 6 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Category.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Category.java index 3954388..5fc0cde 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Category.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Category.java @@ -15,7 +15,7 @@ public class Category extends UriEntity { @Id - @GeneratedValue() + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java index eab4b99..2ced8b0 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Chat.java @@ -1,6 +1,8 @@ package cat.udl.eps.softarch.tfgfinder.domain; import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import lombok.Data; import lombok.EqualsAndHashCode; @@ -12,6 +14,7 @@ public class Chat extends UriEntity{ @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; -} \ No newline at end of file +} diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java index cf7e5e7..1862884 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Interest.java @@ -1,33 +1,22 @@ package cat.udl.eps.softarch.tfgfinder.domain; -import com.fasterxml.jackson.annotation.JsonProperty; - import jakarta.persistence.*; -import jakarta.validation.constraints.Email; -import jakarta.validation.constraints.NotBlank; -import com.fasterxml.jackson.annotation.JsonValue; import lombok.Data; import lombok.EqualsAndHashCode; -import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.AuthorityUtils; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.PasswordEncoder; import java.time.ZonedDateTime; -import java.util.Collection; @Entity -@Table(name = "interest") +@Table(name = "interest") @Data @EqualsAndHashCode(callSuper = true) -public class Interest extends UriEntity { +public class Interest extends UriEntity { @Id - private String id; + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; @DateTimeFormat private ZonedDateTime when; @@ -40,4 +29,4 @@ public enum Status { @Enumerated (EnumType.STRING) private Status status; -} \ No newline at end of file +} diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java index 6e93ba2..08ef530 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java @@ -16,6 +16,7 @@ public class Invite extends UriEntity { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotNull diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java index 03a9e55..95e9bae 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Message.java @@ -15,6 +15,7 @@ public class Message extends UriEntity { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotNull diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Proposal.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Proposal.java index 4b4c5de..d103759 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Proposal.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Proposal.java @@ -16,7 +16,7 @@ public class Proposal extends UriEntity { @Id - @GeneratedValue() + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @@ -46,4 +46,4 @@ public class Proposal extends UriEntity { @ManyToOne private User user; // Reference to the User entity -} \ No newline at end of file +} From f6217dca5eb677b5a538ab10d77f7018fa811a6b Mon Sep 17 00:00:00 2001 From: claudiacolas Date: Mon, 24 Feb 2025 19:35:24 +0100 Subject: [PATCH 27/27] Creation of WHAT relation between Invite and User classes. --- .../java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java index 08ef530..36c243e 100644 --- a/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java +++ b/src/main/java/cat/udl/eps/softarch/tfgfinder/domain/Invite.java @@ -26,9 +26,13 @@ public class Invite extends UriEntity { private String status; @ManyToOne - @JoinColumn(name = "user_id", nullable = false) // WHO: Qui està associat a la invitació @NotNull @JsonIdentityReference(alwaysAsId = true) private User who; + @ManyToOne + @NotNull + @JsonIdentityReference(alwaysAsId = true) + private Proposal what; + }