Ajout des commentaires javaDoc
This commit is contained in:
parent
0727d85ea3
commit
4e02052ed3
6 changed files with 106 additions and 7 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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"})
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue