Ajout des commentaires javaDoc

This commit is contained in:
vincentRamiere 2025-07-09 19:41:16 +02:00
parent 0727d85ea3
commit 4e02052ed3
6 changed files with 106 additions and 7 deletions

View file

@ -2,8 +2,18 @@ package fr.vincent.ramiere.mangerautourdesimplonback.models;
import org.springframework.security.core.GrantedAuthority; 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 { public enum EnumRole implements GrantedAuthority {
/**
* Rôle standard avec des droits de lecture et d'interaction de base.
*/
ROLE_READER, ROLE_READER,
/**
* Rôle administrateur avec des droits étendus sur l'application.
*/
ROLE_ADMIN; ROLE_ADMIN;
@Override @Override

View file

@ -11,6 +11,9 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/**
* Entité représentant un utilisateur de l'application.
*/
@Entity @Entity
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@ -20,28 +23,51 @@ public class Personne implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* Identifiant unique de la personne, généré automatiquement.
*/
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_personne") @Column(name = "id_personne")
private int id; private int id;
/**
* Nom de famille de l'utilisateur.
*/
@Column(nullable = false) @Column(nullable = false)
private String nom; private String nom;
/**
* Prénom de l'utilisateur.
*/
@Column(nullable = false) @Column(nullable = false)
private String prenom; private String prenom;
/**
* Adresse e-mail de l'utilisateur, utilisée comme identifiant de connexion.
*/
@Column(nullable = false) @Column(nullable = false)
private String email; private String email;
/**
* Mot de passe de l'utilisateur, stocké sous forme de hachage sécurisé.
*/
@Column(nullable = false) @Column(nullable = false)
private String password; 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) @OneToMany(mappedBy = "preferencePK.personne", cascade = CascadeType.REMOVE)
//@JsonIgnore //@JsonIgnore
@Builder.Default @Builder.Default
private Collection<Preference> preference = new ArrayList<>(); private Collection<Preference> 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) @ElementCollection(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
@Builder.Default @Builder.Default

View file

@ -24,17 +24,21 @@ public class Preference implements Serializable {
private static final long serialVersionUID = 1L; 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 @EmbeddedId
private PreferencePK preferencePK; 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 @Column // Par défaut, nullable = true pour Integer
private Integer note; 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") @Column(name = "favori")
private Boolean favori; private Boolean favori;

View file

@ -29,13 +29,17 @@ import lombok.Setter;
public class PreferencePK implements Serializable { public class PreferencePK implements Serializable {
private static final long serialVersionUID = 1L; 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 @ManyToOne
@JoinColumn(name = "personne_id_personne") @JoinColumn(name = "personne_id_personne")
@JsonBackReference("personne-preferencepk") @JsonBackReference("personne-preferencepk")
private Personne personne; private Personne personne;
// Clé étrangère vers l'entité Restaurant /**
* Le restaurant associé à cette préférence. Fait partie de la clé composite.
*/
@ManyToOne @ManyToOne
@JoinColumn(name="restau_id_restau") @JoinColumn(name="restau_id_restau")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})

View file

@ -8,6 +8,9 @@ import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
/**
* Entité représentant un restaurant dans l'application.
*/
@Entity @Entity
@Table(name = "restaurant") @Table(name = "restaurant")
@Data @Data
@ -18,41 +21,77 @@ public class Restaurant implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* Identifiant unique du restaurant, généré automatiquement.
*/
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_restau") @Column(name = "id_restau")
private int id; private int id;
/**
* Nom commercial du restaurant.
*/
@Column(nullable = false) @Column(nullable = false)
private String nom; private String nom;
/**
* Adresse postale complète du restaurant.
*/
@Column(nullable = false) @Column(nullable = false)
private String adresse; private String adresse;
/**
* Numéro de téléphone du restaurant.
*/
@Column @Column
private String telephone; private String telephone;
/**
* Indique si le restaurant propose la vente à emporter.
*/
@Column(name = "a_emporter") @Column(name = "a_emporter")
private Boolean aEmporter; private Boolean aEmporter;
/**
* Indique si le restaurant propose de consommer sur place.
*/
@Column(name = "sur_place") @Column(name = "sur_place")
private Boolean surPlace; private Boolean surPlace;
/**
* Indication du niveau de prix (ex: 1 pour , 2 pour , 3 pour ).
*/
@Column @Column
private Integer prix; private Integer prix;
/**
* Indique si le restaurant est accessible aux Personnes à Mobilité Réduite.
*/
@Column(name = "accespmr") @Column(name = "accespmr")
private Boolean accesPMR; private Boolean accesPMR;
/**
* Coordonnée de latitude pour la géolocalisation.
*/
@Column(nullable = false) @Column(nullable = false)
private String latitude; private String latitude;
/**
* Coordonnée de longitude pour la géolocalisation.
*/
@Column(nullable = false) @Column(nullable = false)
private String longitude; private String longitude;
/**
* URL du site web du restaurant.
*/
@Column @Column
private String website; private String website;
/**
* Collection des types de cuisine proposés par le restaurant (ex: Italien, Français).
*/
@ManyToMany @ManyToMany
@JoinTable( @JoinTable(
name = "type_restau", name = "type_restau",
@ -62,6 +101,10 @@ public class Restaurant implements Serializable {
@Builder.Default @Builder.Default
private Collection<TypeRestau> typerestaus = new ArrayList<>(); private Collection<TypeRestau> 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) @OneToMany(mappedBy = "preferencePK.restau", cascade = CascadeType.REMOVE)
@JsonIgnore @JsonIgnore
@Builder.Default @Builder.Default

View file

@ -8,6 +8,9 @@ import java.util.ArrayList;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
/**
* Entité représentant un type de cuisine (ex: "Italien", "Japonais").
*/
@Entity @Entity
@Table(name = "type") @Table(name = "type")
@Data @Data
@ -18,14 +21,23 @@ public class TypeRestau implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* Identifiant unique du type de cuisine, généré automatiquement.
*/
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_type") @Column(name = "id_type")
private int id; private int id;
/**
* Nom du type de cuisine (ex: "Pizza", "Français").
*/
@Column(nullable = false) @Column(nullable = false)
private String libelle; private String libelle;
/**
* Liste des restaurants associés à ce type de cuisine.
*/
@ManyToMany(mappedBy = "typerestaus") @ManyToMany(mappedBy = "typerestaus")
@JsonBackReference("restaurants") @JsonBackReference("restaurants")
@Builder.Default @Builder.Default