Ajout donnée bdd

This commit is contained in:
MAIZY Amaury 2025-04-29 11:11:20 +02:00
parent 9fe8cf4981
commit 1b10a49685
7 changed files with 147 additions and 0 deletions

View file

@ -17,6 +17,7 @@ import java.util.List;
@DynamicUpdate @DynamicUpdate
@DynamicInsert @DynamicInsert
@EqualsAndHashCode @EqualsAndHashCode
@ToString
public class Editeur { public class Editeur {
@Id @Id
@ -31,6 +32,7 @@ public class Editeur {
private String logo; private String logo;
@JsonManagedReference @JsonManagedReference
@ToString.Exclude
@OneToMany(mappedBy = "editeur", cascade = CascadeType.REMOVE) // OneEditeurToManyJeux @OneToMany(mappedBy = "editeur", cascade = CascadeType.REMOVE) // OneEditeurToManyJeux
private List<Jeu> jeux; private List<Jeu> jeux;

View file

@ -14,4 +14,11 @@ import java.time.LocalDate;
public class Joueur extends Utilisateur { public class Joueur extends Utilisateur {
private LocalDate dateDeNaissance; private LocalDate dateDeNaissance;
public Joueur(String pseudo, String email, String motDePasse, LocalDate dateDeNaissance) {
this.setPseudo(pseudo);
this.setEmail(email);
this.setMotDePasse(motDePasse);
this.dateDeNaissance = dateDeNaissance;
}
} }

View file

@ -13,4 +13,11 @@ import org.springframework.boot.convert.DataSizeUnit;
public class Moderateur extends Utilisateur { public class Moderateur extends Utilisateur {
private String numeroDeTelephone; private String numeroDeTelephone;
public Moderateur(String pseudo, String email, String motDePasse, String numeroDeTelephone) {
this.setPseudo(pseudo);
this.setEmail(email);
this.setMotDePasse(motDePasse);
this.setNumeroDeTelephone(numeroDeTelephone);
}
} }

View file

@ -16,6 +16,7 @@ import java.util.List;
@RequiredArgsConstructor @RequiredArgsConstructor
@Getter @Getter
@Setter @Setter
@ToString
public class Plateforme { public class Plateforme {
@Id @Id
@ -27,5 +28,6 @@ public class Plateforme {
@ManyToMany(mappedBy="plateformes") @ManyToMany(mappedBy="plateformes")
@JsonIgnore @JsonIgnore
@ToString.Exclude
private List<Jeu> jeux; private List<Jeu> jeux;
} }

View file

@ -1,15 +1,23 @@
package fr.clelia.avis.initialisation; package fr.clelia.avis.initialisation;
import fr.clelia.avis.business.Editeur; import fr.clelia.avis.business.Editeur;
import fr.clelia.avis.business.Jeu;
import fr.clelia.avis.business.Joueur;
import fr.clelia.avis.business.Plateforme; import fr.clelia.avis.business.Plateforme;
import fr.clelia.avis.repository.EditeurRepository; import fr.clelia.avis.repository.EditeurRepository;
import fr.clelia.avis.repository.PlateformeRepository; import fr.clelia.avis.repository.PlateformeRepository;
import fr.clelia.avis.repository.JeuRepository;
import fr.clelia.avis.repository.JoueurRepository;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.util.List;
import java.util.Random;
@Component // Spring va instancier cette classe @Component // Spring va instancier cette classe
// et placer cette instance dans son conteneur IoC // et placer cette instance dans son conteneur IoC
//@AllArgsConstructor //@AllArgsConstructor
@ -20,12 +28,26 @@ public class AjoutDonneesInitiales {
private EditeurRepository editeurRepository; private EditeurRepository editeurRepository;
@Autowired @Autowired
private PlateformeRepository plateformeRepository; private PlateformeRepository plateformeRepository;
@Autowired
private JeuRepository jeuRepository;
@Autowired
private JoueurRepository joueurRepository;
@EventListener(ApplicationReadyEvent.class) @EventListener(ApplicationReadyEvent.class)
public void init() { public void init() {
System.out.println("Ajout des données initiales"); System.out.println("Ajout des données initiales");
ajouterEditeurs(); ajouterEditeurs();
ajouterPlateformes(); ajouterPlateformes();
ajouterJeux();
ajouteurJoueurs();
afficherStatistiques();
}
private void afficherStatistiques() {
editeurRepository.findByLogoStartsWith("micro")
.forEach(System.out::println);
plateformeRepository.findByNomStartsWith("Nintendo")
.forEach(System.out::println);
} }
private void ajouterEditeurs() { private void ajouterEditeurs() {
@ -107,4 +129,84 @@ public class AjoutDonneesInitiales {
} }
} }
private void ajouterJeux() {
if (jeuRepository.count() == 0) {
Editeur editeur = editeurRepository.findByNom("Ubisoft");
List<Plateforme> plateformes = plateformeRepository.findAll();
Jeu jeuAvecBuilder = Jeu.builder()
.nom("Test")
.editeur(editeur)
.plateformes(List.of(plateformes.get(0)))
.build();
jeuRepository.save(new Jeu("Rocket League", editeurRepository.findByNom("Psyonix"), List.of(plateformeRepository.findByNom("Windows"))));
Jeu jeu = new Jeu("Ghost Recon: Wildlands", editeur, plateformes);
jeuRepository.save(jeu);
jeuRepository.save(
new Jeu(
"Assassin's creed black flag",
editeurRepository.findByNom("Ubisoft"),
List.of(
plateformeRepository.findByNom("Windows"),
plateformeRepository.findByNom("PlayStation 4"),
plateformeRepository.findByNom("Xbox One"),
plateformeRepository.findByNom("Nintendo Switch")
)));
Editeur mobius = editeurRepository.findByNom("Mobius Digital");
List<Plateforme> plateformes2 = List.of(
plateformeRepository.findByNom("PC-Engine"),
plateformeRepository.findByNom("Xbox One"),
plateformeRepository.findByNom("PlayStation 4"),
plateformeRepository.findByNom("Nintendo Switch")
);
jeuRepository.save(new Jeu("Outer Wilds", mobius, plateformes2));
List<Plateforme> plateformes3 = plateformeRepository.findAll();
List<Editeur> editeurs = editeurRepository.findAll();
jeuRepository.save(new Jeu("Overwatch", editeurs.get(9), plateformes3.subList(4, 6)));
jeuRepository.save(new Jeu("Super Mario Odyssey", editeurs.get(1), plateformes3.subList(3, 4)));
jeuRepository.save(new Jeu("The Witcher 3: Wild Hunt", editeurs.get(2), plateformes3.subList(4, 6)));
jeuRepository.save(new Jeu("Red Dead Redemption 2", editeurs.get(3), plateformes3.subList(4, 7)));
jeuRepository.save(new Jeu("Minecraft", editeurs.get(4), plateformes3.subList(4, 8)));
jeuRepository.save(new Jeu("Cyberpunk 2077", editeurs.get(5), plateformes3.subList(4, 6)));
jeuRepository.save(new Jeu("God of War", editeurs.get(6), plateformes3.subList(9, 10)));
jeuRepository.save(new Jeu("Hollow Knight", editeurs.get(7), plateformes3.subList(3, 5)));
jeuRepository.save(new Jeu("Stardew Valley", editeurs.get(8), plateformes3.subList(4, 7)));
jeuRepository.save(new Jeu("ZELDA : TOTK", editeurRepository.findByNom("Nintendo"), List.of(plateformeRepository.findByNom("Nintendo Switch"))));
jeuRepository.save(new Jeu("The Legend of Zelda: Breath of the Wild", editeurRepository.findByNom("Nintendo"), List.of(plateformeRepository.findByNom("Nintendo Switch"))
));
}
}
private void ajouteurJoueurs() {
Random random = new Random();
List<String> pseudos = List.of(
"Justine",
"Cedric",
"Guillaume",
"Maxence",
"Vincent L",
"Maxime",
"Anastasia",
"Ndiogou",
"Marion",
"Nejmeddine",
"Cesar",
"Moulaye",
"Julien",
"Amaury",
"Vincent S"
);
pseudos.forEach(p -> joueurRepository.save(new Joueur(p, p.replaceAll(" ", "") + "@soprasteria.com", "12345", LocalDate.of(random.nextInt(30)+1980, 1, 1))));
}
} }

View file

@ -2,10 +2,21 @@ package fr.clelia.avis.repository;
import fr.clelia.avis.business.Editeur; import fr.clelia.avis.business.Editeur;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List; import java.util.List;
public interface EditeurRepository extends JpaRepository<Editeur, Long> { public interface EditeurRepository extends JpaRepository<Editeur, Long> {
// Méthode dérivée // Méthode dérivée
List<Editeur> findByNomContainingIgnoreCase(String nomRecherche); List<Editeur> findByNomContainingIgnoreCase(String nomRecherche);
@Query("""
SELECT e
FROM Editeur e
WHERE e.logo LIKE concat(:logo, '%')
""")
List<Editeur> findByLogoStartsWith(@Param("logo") String logo);
Editeur findByNom(String nom);
} }

View file

@ -1,7 +1,23 @@
package fr.clelia.avis.repository; package fr.clelia.avis.repository;
import fr.clelia.avis.business.Editeur;
import fr.clelia.avis.business.Plateforme; import fr.clelia.avis.business.Plateforme;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
public interface PlateformeRepository extends JpaRepository<Plateforme, Long> { public interface PlateformeRepository extends JpaRepository<Plateforme, Long> {
// Méthode dérivée
List<Plateforme> findByNomContainingIgnoreCase(String nomRecherche);
@Query("""
SELECT p
FROM Plateforme p
WHERE p.nom LIKE concat(:nom, '%')
""")
List<Plateforme> findByNomStartsWith(@Param("nom") String nom);
Plateforme findByNom(String nom);
} }