diff --git a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/EnumRole.java b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/EnumRole.java index 142dd69..96f9aa4 100644 --- a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/EnumRole.java +++ b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/EnumRole.java @@ -2,8 +2,18 @@ package fr.vincent.ramiere.mangerautourdesimplonback.models; import org.springframework.security.core.GrantedAuthority; +/** + * Énumération des rôles possibles pour un utilisateur dans le système. + * Implémente GrantedAuthority pour l'intégration avec Spring Security. + */ public enum EnumRole implements GrantedAuthority { + /** + * Rôle standard avec des droits de lecture et d'interaction de base. + */ ROLE_READER, + /** + * Rôle administrateur avec des droits étendus sur l'application. + */ ROLE_ADMIN; @Override diff --git a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Personne.java b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Personne.java index 5d5e0b5..fe71b60 100644 --- a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Personne.java +++ b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Personne.java @@ -11,6 +11,9 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +/** + * Entité représentant un utilisateur de l'application. + */ @Entity @Data @NoArgsConstructor @@ -20,28 +23,51 @@ public class Personne implements Serializable { private static final long serialVersionUID = 1L; + /** + * Identifiant unique de la personne, généré automatiquement. + */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id_personne") private int id; + /** + * Nom de famille de l'utilisateur. + */ @Column(nullable = false) private String nom; + /** + * Prénom de l'utilisateur. + */ @Column(nullable = false) private String prenom; + /** + * Adresse e-mail de l'utilisateur, utilisée comme identifiant de connexion. + */ @Column(nullable = false) private String email; + /** + * Mot de passe de l'utilisateur, stocké sous forme de hachage sécurisé. + */ @Column(nullable = false) private String password; + /** + * Collection des préférences (notes, favoris) de cet utilisateur pour les restaurants. + * La suppression d'une personne entraîne la suppression de ses préférences. + */ @OneToMany(mappedBy = "preferencePK.personne", cascade = CascadeType.REMOVE) //@JsonIgnore @Builder.Default private Collection preference = new ArrayList<>(); + /** + * Liste des rôles attribués à l'utilisateur (ex: ROLE_ADMIN, ROLE_READER). + * Chargée immédiatement avec l'entité (EAGER). + */ @ElementCollection(fetch = FetchType.EAGER) @Enumerated(EnumType.STRING) @Builder.Default diff --git a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Preference.java b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Preference.java index f176547..4d95c9f 100644 --- a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Preference.java +++ b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Preference.java @@ -24,17 +24,21 @@ public class Preference implements Serializable { private static final long serialVersionUID = 1L; - // Clé primaire composite, intégrée directement dans cette entité. + /** + * Clé primaire composite, contenant les références vers Personne et Restaurant. + */ @EmbeddedId private PreferencePK preferencePK; - // Note attribuée par l'utilisateur au restaurant. Peut être nulle. - // Le type Integer est utilisé pour permettre la nullité (non noté). + /** + * Note (de 1 à 5) attribuée par l'utilisateur au restaurant. Peut être nulle si non noté. + */ @Column // Par défaut, nullable = true pour Integer private Integer note; - // Indique si le restaurant est marqué comme favori par l'utilisateur. - // boolean primitif, donc non nullable par défaut en base (false si non spécifié). + /** + * Indique si le restaurant est marqué comme favori par l'utilisateur. + */ @Column(name = "favori") private Boolean favori; diff --git a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/PreferencePK.java b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/PreferencePK.java index 9207a8a..205afb3 100644 --- a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/PreferencePK.java +++ b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/PreferencePK.java @@ -29,13 +29,17 @@ import lombok.Setter; public class PreferencePK implements Serializable { private static final long serialVersionUID = 1L; - // Clé étrangère vers l'entité Personne + /** + * La personne associée à cette préférence. Fait partie de la clé composite. + */ @ManyToOne @JoinColumn(name = "personne_id_personne") @JsonBackReference("personne-preferencepk") private Personne personne; - // Clé étrangère vers l'entité Restaurant + /** + * Le restaurant associé à cette préférence. Fait partie de la clé composite. + */ @ManyToOne @JoinColumn(name="restau_id_restau") @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) diff --git a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Restaurant.java b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Restaurant.java index 6c5c62b..ea3d106 100644 --- a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Restaurant.java +++ b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Restaurant.java @@ -8,6 +8,9 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; +/** + * Entité représentant un restaurant dans l'application. + */ @Entity @Table(name = "restaurant") @Data @@ -18,41 +21,77 @@ public class Restaurant implements Serializable { private static final long serialVersionUID = 1L; + /** + * Identifiant unique du restaurant, généré automatiquement. + */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id_restau") private int id; + /** + * Nom commercial du restaurant. + */ @Column(nullable = false) private String nom; + /** + * Adresse postale complète du restaurant. + */ @Column(nullable = false) private String adresse; + /** + * Numéro de téléphone du restaurant. + */ @Column private String telephone; + /** + * Indique si le restaurant propose la vente à emporter. + */ @Column(name = "a_emporter") private Boolean aEmporter; + /** + * Indique si le restaurant propose de consommer sur place. + */ @Column(name = "sur_place") private Boolean surPlace; + /** + * Indication du niveau de prix (ex: 1 pour €, 2 pour €€, 3 pour €€€). + */ @Column private Integer prix; + /** + * Indique si le restaurant est accessible aux Personnes à Mobilité Réduite. + */ @Column(name = "accespmr") private Boolean accesPMR; + /** + * Coordonnée de latitude pour la géolocalisation. + */ @Column(nullable = false) private String latitude; + /** + * Coordonnée de longitude pour la géolocalisation. + */ @Column(nullable = false) private String longitude; + /** + * URL du site web du restaurant. + */ @Column private String website; + /** + * Collection des types de cuisine proposés par le restaurant (ex: Italien, Français). + */ @ManyToMany @JoinTable( name = "type_restau", @@ -62,6 +101,10 @@ public class Restaurant implements Serializable { @Builder.Default private Collection typerestaus = new ArrayList<>(); + /** + * Collection des préférences des utilisateurs associées à ce restaurant. + * La suppression d'un restaurant entraîne la suppression des préférences associées. + */ @OneToMany(mappedBy = "preferencePK.restau", cascade = CascadeType.REMOVE) @JsonIgnore @Builder.Default diff --git a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/TypeRestau.java b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/TypeRestau.java index aad2c86..2e11726 100644 --- a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/TypeRestau.java +++ b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/TypeRestau.java @@ -8,6 +8,9 @@ import java.util.ArrayList; import java.io.Serializable; import java.util.List; +/** + * Entité représentant un type de cuisine (ex: "Italien", "Japonais"). + */ @Entity @Table(name = "type") @Data @@ -18,14 +21,23 @@ public class TypeRestau implements Serializable { private static final long serialVersionUID = 1L; + /** + * Identifiant unique du type de cuisine, généré automatiquement. + */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id_type") private int id; + /** + * Nom du type de cuisine (ex: "Pizza", "Français"). + */ @Column(nullable = false) private String libelle; + /** + * Liste des restaurants associés à ce type de cuisine. + */ @ManyToMany(mappedBy = "typerestaus") @JsonBackReference("restaurants") @Builder.Default