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;
/**
* É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

View file

@ -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> 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

View file

@ -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;

View file

@ -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"})

View file

@ -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<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)
@JsonIgnore
@Builder.Default

View file

@ -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