methodes toString ajoutées + modification du schéma relationnel de la BDD

This commit is contained in:
Thomas Rubini 2022-06-02 17:19:50 +02:00
parent e3c09ef4ed
commit 8c72a6219d
No known key found for this signature in database
GPG Key ID: C7D287C8C1CAC373
19 changed files with 180 additions and 385 deletions

View File

@ -1,217 +0,0 @@
package fr.univ_amu.iut;
import fr.univ_amu.iut.model.Acteur;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
import jakarta.persistence.TypedQuery;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.util.List;
public class JPAMain extends Application {
private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("gestionUsagesPU");
private static final EntityManager em = emf.createEntityManager();
private TableView<Acteur> table;
private TableColumn<Acteur, String> nom;
private TableColumn<Acteur, Integer> id;
private TableColumn<Acteur, String> prenom;
private TableColumn<Acteur, String> ville;
private TableColumn<Acteur, String> typeActeur;
private ObservableList<Acteur> data;
private HBox boutons;
private Button ajouter;
private Button supprimer;
private VBox racine;
@Override
public void start(Stage stage) {
initialiserTable();
initialiserBoutons();
initialiserRacine();
Scene scene = new Scene(racine, 600, 400);
stage.setScene(scene);
stage.setTitle("Liste d'acteurs");
stage.sizeToScene();
stage.show();
}
private void initialiserRacine() {
racine = new VBox();
racine.setPadding(new Insets(10));
racine.getChildren().addAll(table, boutons);
}
private void initialiserBoutons() {
boutons = new HBox(10);
boutons.setPadding(new Insets(10));
boutons.setAlignment(Pos.CENTER);
initialiserBoutonAjouter();
initialiserBoutonSupprimer();
boutons.getChildren().addAll(ajouter, supprimer);
}
private void initialiserBoutonSupprimer() {
supprimer = new Button("Supprimer");
supprimer.setOnAction(this::supprimerActeur);
}
private void initialiserBoutonAjouter() {
ajouter = new Button("Ajouter");
ajouter.setOnAction(this::ajouterActeur);
}
private void initialiserTable() {
table = new TableView<>();
table.setEditable(true);
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
table.getSelectionModel().select(0);
initialiserColonnes();
insererColonnes();
remplirDonnees();
VBox.setVgrow(table, Priority.ALWAYS);
}
private static TableColumn<Acteur, Integer> initialiserColonneId() {
TableColumn<Acteur, Integer> code = new TableColumn<>("Identifiant");
code.setCellValueFactory(new PropertyValueFactory<>("id"));
return code;
}
private static TableColumn<Acteur, String> initialiserColonneNom() {
TableColumn<Acteur, String> nom = new TableColumn<>("Nom");
nom.setCellValueFactory(new PropertyValueFactory<>("nom"));
nom.setCellFactory(TextFieldTableCell.forTableColumn());
nom.setOnEditCommit(event -> {
int index = event.getTablePosition().getRow();
Acteur acteur = event.getTableView().getItems().get(index);
em.getTransaction().begin();
acteur.setNom(event.getNewValue());
em.getTransaction().commit();
});
return nom;
}
private static TableColumn<Acteur, String> initialiserColonnePrenom() {
TableColumn<Acteur, String> prenom = new TableColumn<>("Prénom");
prenom.setCellValueFactory(new PropertyValueFactory<>("prenom"));
prenom.setCellFactory(TextFieldTableCell.forTableColumn());
prenom.setOnEditCommit(event -> {
int index = event.getTablePosition().getRow();
Acteur acteur = event.getTableView().getItems().get(index);
em.getTransaction().begin();
acteur.setPrenom(event.getNewValue());
em.getTransaction().commit();
});
return prenom;
}
private static TableColumn<Acteur, String> initialiserColonneVille() {
TableColumn<Acteur, String> ville = new TableColumn<>("Ville");
ville.setCellValueFactory(new PropertyValueFactory<>("ville"));
ville.setCellFactory(TextFieldTableCell.forTableColumn());
ville.setOnEditCommit(event -> {
int index = event.getTablePosition().getRow();
Acteur acteur = event.getTableView().getItems().get(index);
em.getTransaction().begin();
acteur.setVille(event.getNewValue());
em.getTransaction().commit();
});
return ville;
}
private TableColumn<Acteur, String> initialiserColonneTypeActeur() {
TableColumn<Acteur, String> typeActeur = new TableColumn<>("Type d'acteur");
typeActeur.setCellValueFactory(new PropertyValueFactory<>("typeActeur"));
typeActeur.setCellFactory(TextFieldTableCell.forTableColumn());
typeActeur.setOnEditCommit(event -> {
int index = event.getTablePosition().getRow();
Acteur acteur = event.getTableView().getItems().get(index);
em.getTransaction().begin();
acteur.setTypeActeur(event.getNewValue());
em.getTransaction().commit();
});
return typeActeur;
}
private void initialiserColonnes() {
id = initialiserColonneId();
nom = initialiserColonneNom();
prenom = initialiserColonnePrenom();
ville = initialiserColonneVille();
typeActeur = initialiserColonneTypeActeur();
}
private void insererColonnes() {
table.getColumns().addAll(List.of(id, nom, prenom, ville, typeActeur));
}
private void remplirDonnees() {
data = listerActeurs();
table.setItems(data);
}
private ObservableList<Acteur> listerActeurs() {
TypedQuery<Acteur> query = em.createNamedQuery("Acteur.findAll", Acteur.class);
return FXCollections.observableList(query.getResultList());
}
private void ajouterActeur(ActionEvent event) {
Acteur acteur = new Acteur();
em.getTransaction().begin();
em.persist(acteur);
em.getTransaction().commit();
data.add(acteur);
int rowIndex = data.size() - 1;
table.requestFocus();
table.scrollTo(rowIndex);
table.getSelectionModel().select(rowIndex);
table.getFocusModel().focus(rowIndex);
}
private void supprimerActeur(ActionEvent event) {
if (table.getItems().size() == 0) return;
em.getTransaction().begin();
em.remove(table.getSelectionModel().getSelectedItem());
em.getTransaction().commit();
int selectedRowIndex = table.getSelectionModel().getSelectedIndex();
data.remove(selectedRowIndex);
if (selectedRowIndex != 0) {
selectedRowIndex = selectedRowIndex - 1;
}
table.requestFocus();
table.scrollTo(selectedRowIndex);
table.getSelectionModel().select(selectedRowIndex);
table.getFocusModel().focus(selectedRowIndex);
}
public static void main(String[] args) {
launch(args);
}
}

View File

@ -1,6 +1,6 @@
package fr.univ_amu.iut.dao;
import fr.univ_amu.iut.model.Usage;
import fr.univ_amu.iut.model.Usages;
public interface DAOUsage extends DAO<Usage>{
public interface DAOUsage extends DAO<Usages>{
}

View File

@ -7,7 +7,6 @@ import jakarta.persistence.TypedQuery;
import java.util.List;
// NOT JPA. No idea how to achieve it else
public class DAOAcademieJPA extends DAOBaseClassJPA<Academie> implements DAOAcademie {
public DAOAcademieJPA(EntityManager entityManager) {

View File

@ -7,7 +7,6 @@ import jakarta.persistence.TypedQuery;
import java.util.List;
// NOT JPA. No idea how to achieve it else
public class DAOActeurJPA extends DAOBaseClassJPA<Acteur> implements DAOActeur {
public DAOActeurJPA(EntityManager entityManager) {

View File

@ -7,7 +7,6 @@ import jakarta.persistence.TypedQuery;
import java.util.List;
// NOT JPA. No idea how to achieve it else
public class DAODisciplineJPA extends DAOBaseClassJPA<Discipline> implements DAODiscipline {
public DAODisciplineJPA(EntityManager entityManager) {

View File

@ -7,7 +7,6 @@ import jakarta.persistence.TypedQuery;
import java.util.List;
// NOT JPA. No idea how to achieve it else
public class DAORegionAcademiqueJPA extends DAOBaseClassJPA<RegionAcademique> implements DAORegionAcademique {
public DAORegionAcademiqueJPA(EntityManager entityManager) {

View File

@ -7,7 +7,6 @@ import jakarta.persistence.TypedQuery;
import java.util.List;
// NOT JPA. No idea how to achieve it else
public class DAORessourceJPA extends DAOBaseClassJPA<Ressource> implements DAORessource {
public DAORessourceJPA(EntityManager entityManager) {

View File

@ -7,7 +7,6 @@ import jakarta.persistence.TypedQuery;
import java.util.List;
// NOT JPA. No idea how to achieve it else
public class DAOThematiqueJPA extends DAOBaseClassJPA<Thematique> implements DAOThematique {
public DAOThematiqueJPA(EntityManager entityManager) {

View File

@ -0,0 +1,28 @@
package fr.univ_amu.iut.dao.jpa;
import fr.univ_amu.iut.dao.DAO;
import fr.univ_amu.iut.model.TypeActeur;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
import java.util.List;
public class DAOTypeActeurJPA extends DAOBaseClassJPA<TypeActeur> implements DAO<TypeActeur> {
public DAOTypeActeurJPA(EntityManager entityManager) {
super(entityManager);
}
@Override
public List<TypeActeur> findAll() {
TypedQuery<TypeActeur> query = entityManager.createNamedQuery("TypeActeur.findAll", TypeActeur.class);
return query.getResultList();
}
@Override
public TypeActeur getById(int id) {
TypedQuery<TypeActeur> query = entityManager.createNamedQuery("TypeActeur.findById", TypeActeur.class);
query.setParameter("numEt", id);
return query.getSingleResult();
}
}

View File

@ -1,28 +1,27 @@
package fr.univ_amu.iut.dao.jpa;
import fr.univ_amu.iut.dao.DAOUsage;
import fr.univ_amu.iut.model.Usage;
import fr.univ_amu.iut.model.Usages;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
import java.util.List;
// NOT JPA. No idea how to achieve it else
public class DAOUsageJPA extends DAOBaseClassJPA<Usage> implements DAOUsage {
public class DAOUsageJPA extends DAOBaseClassJPA<Usages> implements DAOUsage {
public DAOUsageJPA(EntityManager entityManager) {
super(entityManager);
}
@Override
public List<Usage> findAll() {
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findAll", Usage.class);
public List<Usages> findAll() {
TypedQuery<Usages> query = entityManager.createNamedQuery("Usage.findAll", Usages.class);
return query.getResultList();
}
@Override
public Usage getById(int id) {
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findById", Usage.class);
public Usages getById(int id) {
TypedQuery<Usages> query = entityManager.createNamedQuery("Usage.findById", Usages.class);
query.setParameter("numEt", id);
return query.getSingleResult();
}

View File

@ -4,6 +4,8 @@ import jakarta.persistence.*;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@NamedQueries({
@NamedQuery(name = "Academie.findAll", query = "SELECT p FROM Academie p"),
@NamedQuery(name = "Academie.findByCode", query = "SELECT p FROM Academie p WHERE p.code = :acaCode"),
@ -92,6 +94,13 @@ public class Academie {
return INSTANCES.get(code);
}
public static Academie getByNom(String nom) {
for(Academie academie : INSTANCES.values()){
if(academie.nom.equals(nom))return academie;
}
return null;
}
public static Collection<Academie> toutes() {
return INSTANCES.values();
}
@ -107,4 +116,13 @@ public class Academie {
public RegionAcademique getRegionAcademique() {
return regionAcademique;
}
@Override
public String toString() {
return "Academie{" +
"code='" + code + '\'' +
", nom='" + nom + '\'' +
", regionAcademique=" + regionAcademique +
'}';
}
}

View File

@ -12,95 +12,44 @@ public class Acteur {
@GeneratedValue
int id;
String nom;
String prenom;
String type;
@Embedded
Coordonees coordonees;
String identite;
String typeActeur;
public Acteur(String type, String identite) {
this.type = type;
this.identite = identite;
}
public Acteur() {
coordonees = new Coordonees();
}
public int getId() {
return id;
}
public String getNom() {
return nom;
public String getIdentite() {
return identite;
}
public String getPrenom() {
return prenom;
public String getType() {
return type;
}
public Coordonees getCoordonees() {
return coordonees;
public void setIdentite(String identite) {
this.identite = identite;
}
public String getTypeActeur() {
return typeActeur;
public void setType(String typeActeur) {
this.type = typeActeur;
}
public void setNom(String nom) {
this.nom = nom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public void setTypeActeur(String typeActeur) {
this.typeActeur = typeActeur;
}
public int getNumero() {
return coordonees.getNumero();
}
public void setNumero(int numero) {
coordonees.setNumero(numero);
}
public String getRue() {
return coordonees.getRue();
}
public void setRue(String rue) {
coordonees.setRue(rue);
}
public String getCodePostal() {
return coordonees.getCodePostal();
}
public void setCodePostal(String codePostal) {
coordonees.setCodePostal(codePostal);
}
public String getVille() {
return coordonees.getVille();
}
public void setVille(String ville) {
coordonees.setVille(ville);
}
public String getMail() {
return coordonees.getMail();
}
public void setMail(String mail) {
coordonees.setMail(mail);
}
public String getTelephone() {
return coordonees.getTelephone();
}
public void setTelephone(String telephone) {
coordonees.setTelephone(telephone);
@Override
public String toString() {
return "Acteur{" +
"id=" + id +
", type='" + type + '\'' +
", identite='" + identite + '\'' +
'}';
}
}

View File

@ -1,64 +0,0 @@
package fr.univ_amu.iut.model;
import jakarta.persistence.Embeddable;
@Embeddable
public class Coordonees {
private int numero;
private String rue;
private String codePostal;
private String ville;
private String mail;
private String telephone;
public Coordonees() {
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public String getRue() {
return rue;
}
public void setRue(String rue) {
this.rue = rue;
}
public String getCodePostal() {
return codePostal;
}
public void setCodePostal(String codePostal) {
this.codePostal = codePostal;
}
public String getVille() {
return ville;
}
public void setVille(String ville) {
this.ville = ville;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
}

View File

@ -39,7 +39,7 @@ public class Discipline {
INSTANCES.add(this);
}
Discipline(String nom) {
public Discipline(String nom) {
this();
this.nom = nom;
}
@ -62,4 +62,13 @@ public class Discipline {
public String getNom() {
return nom;
}
@Override
public String toString() {
return "Discipline{" +
"id=" + id +
", nom='" + nom + '\'' +
'}';
}
}

View File

@ -1,7 +1,7 @@
package fr.univ_amu.iut.model;
public enum Niveau {
Tous("Tous"),
Tous("Tous niveaux"),
PremierDegre("Premier degré"),
SecondDegre("Second degré");
final String nom;
@ -11,4 +11,11 @@ public enum Niveau {
public String getNom() {
return nom;
}
public static Niveau getByNom(String nom) {
for(Niveau niv : values()){
if(niv.nom.equals(nom))return niv;
}
return null;
}
}

View File

@ -16,11 +16,10 @@ public class Ressource {
String nomRessource;
@ManyToOne
TypeRessource typeRessource;
String typeRessource;
URL lienRessource;
public Ressource(TypeRessource typeRessource, URL lienRessource) {
public Ressource(URL lienRessource, String nomRessource, String typeRessource) {
this.typeRessource = typeRessource;
this.lienRessource = lienRessource;
}
@ -29,7 +28,7 @@ public class Ressource {
}
public TypeRessource getTypeRessource() {
public String getTypeRessource() {
return typeRessource;
}
@ -40,4 +39,15 @@ public class Ressource {
public String getNomRessource() {
return nomRessource;
}
@Override
public String toString() {
return "Ressource{" +
"id=" + id +
", nomRessource='" + nomRessource + '\'' +
", typeRessource='" + typeRessource + '\'' +
", lienRessource=" + lienRessource +
'}';
}
}

View File

@ -67,4 +67,13 @@ public class Thematique {
public Thematique() {
}
@Override
public String toString() {
return "Thematique{" +
"id=" + id +
", nom='" + nom + '\'' +
'}';
}
}

View File

@ -0,0 +1,31 @@
package fr.univ_amu.iut.model;
import jakarta.persistence.*;
@NamedQueries({
@NamedQuery(name = "TypeActeur.findAll", query = "SELECT p FROM TypeActeur p"),
@NamedQuery(name = "TypeActeur.findById", query = "SELECT p FROM TypeActeur p WHERE p.id = :id"),
})
@Entity
public class TypeActeur {
@Id
@GeneratedValue
int id;
String nom;
public TypeActeur(String nom) {
this.nom = nom;
}
public TypeActeur() {
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
}

View File

@ -6,16 +6,17 @@ import java.util.ArrayList;
import java.util.List;
@NamedQueries({
@NamedQuery(name = "Usage.findAll", query = "SELECT p FROM Usage p"),
@NamedQuery(name = "Usage.findById", query = "SELECT p FROM Usage p WHERE p.id = :id"),
@NamedQuery(name = "Usage.findAll", query = "SELECT p FROM Usages p"),
@NamedQuery(name = "Usage.findById", query = "SELECT p FROM Usages p WHERE p.id = :id"),
})
@Entity
public class Usage {
public class Usages {
@Id
@GeneratedValue
int id;
String nom;
String description;
@ManyToOne(cascade = CascadeType.ALL)
@ -27,18 +28,18 @@ public class Usage {
@Enumerated(EnumType.STRING)
Niveau niveau;
@OneToOne
@OneToOne(cascade = CascadeType.ALL)
Academie academie;
@OneToMany(cascade = CascadeType.ALL)
List<Ressource> ressources = new ArrayList<>();
@OneToMany(cascade = CascadeType.ALL)
List<Acteur> acteurs = new ArrayList<>();
@OneToOne(cascade = CascadeType.ALL)
Acteur acteur;
String commentaire;
public Usage() {
public Usages() {
}
public String getNom() {
@ -85,6 +86,10 @@ public class Usage {
return academie;
}
public void setAcademie(Academie academie) {
this.academie = academie;
}
public List<Ressource> getRessources() {
return ressources;
}
@ -93,12 +98,12 @@ public class Usage {
this.ressources.add(ressource);
}
public List<Acteur> getActeurs() {
return acteurs;
public Acteur getActeur() {
return acteur;
}
public void addActeur(Acteur acteur) {
this.acteurs.add(acteur);
public void setActeur(Acteur acteur) {
this.acteur = acteur;
}
public String getCommentaire() {
@ -108,4 +113,21 @@ public class Usage {
public void setCommentaire(String commentaire) {
this.commentaire = commentaire;
}
@Override
public String toString() {
return "Usage{" +
"id=" + id +
", nom='" + nom + '\'' +
", description='" + description + '\'' +
", discipline=" + discipline +
", thematique=" + thematique +
", niveau=" + niveau +
", academie=" + academie +
", ressources=" + ressources +
", acteur=" + acteur +
", commentaire='" + commentaire + '\'' +
'}';
}
}