Merge branch 'main' of github.com:IUTInfoAix-R202-2022/sae-concombre into admin2

merge avec main
This commit is contained in:
imuny 2022-06-07 09:47:10 +02:00
commit b7645957c6
36 changed files with 798 additions and 406 deletions

View File

@ -1,4 +1,4 @@
name: Java CI with Maven name: Java CI/CD with Maven
on: on:
- push - push
@ -15,7 +15,13 @@ jobs:
distribution: 'zulu' distribution: 'zulu'
java-package: 'jdk+fx' java-package: 'jdk+fx'
cache: maven cache: maven
- name: Run headless test - name: Build and run headless test
uses: GabrielBB/xvfb-action@v1 uses: GabrielBB/xvfb-action@v1
with: with:
run: mvn -B package --file pom.xml run: mvn -B package --file pom.xml
- name: Upload resulting executable
uses: actions/upload-artifact@v2
with:
name: jar file
path: target/sae201-1.0-SNAPSHOT.jar

View File

@ -0,0 +1,55 @@
package fr.univ_amu.iut;
import java.util.List;
import fr.univ_amu.iut.model.Academie;
import fr.univ_amu.iut.model.Discipline;
import fr.univ_amu.iut.model.Thematique;
import fr.univ_amu.iut.model.Usage;
public class Donnees {
private static Academie academieSelectionee = null;
private static Thematique thematiqueSelectionee = null;
private static Discipline disciplineSelectionee = Discipline.Toutes;
private static List<Usage> usagesObtenus;
public static List<Usage> getUsagesObtenus() {
return usagesObtenus;
}
public static void setUsagesObtenus(List<Usage> usagesObtenus) {
Donnees.usagesObtenus = usagesObtenus;
}
public static Academie getAcademieSelectionee() {
return academieSelectionee;
}
public static void setAcademieSelectionee(Academie academieSelectionee) {
if (academieSelectionee.equals(Donnees.academieSelectionee)){
academieSelectionee = null;
}
System.out.println("Academie Selectionée : %s".formatted((academieSelectionee == null)?"Aucune academie":academieSelectionee.getNom()));
Donnees.academieSelectionee = academieSelectionee;
}
public static Thematique getThematiqueSelectionee() {
return thematiqueSelectionee;
}
public static void setThematiqueSelectionee(Thematique thematiqueSelectionee) {
if(thematiqueSelectionee == Donnees.thematiqueSelectionee){
thematiqueSelectionee = null;
}
System.out.println("Thematique selectionée : %s".formatted((thematiqueSelectionee == null)? "Aucune Thematique" : thematiqueSelectionee.getNom()));
Donnees.thematiqueSelectionee = thematiqueSelectionee;
}
public static Discipline getDisciplineSelectionee() {
return disciplineSelectionee;
}
public static void setDisciplineSelectionee(Discipline disciplineSelectionee) {
if(disciplineSelectionee == Donnees.disciplineSelectionee){
disciplineSelectionee = Discipline.Toutes;
}
System.out.println("Discipline Selectionee : %s".formatted(disciplineSelectionee.getNom()));
Donnees.disciplineSelectionee = disciplineSelectionee;
}
}

View File

@ -1,48 +0,0 @@
package fr.univ_amu.iut;
import fr.univ_amu.iut.view.map.AcademiePath;
import fr.univ_amu.iut.view.map.France;
import fr.univ_amu.iut.view.map.FranceBuilder;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class FranceMain extends Application {
France france;
@Override
public void init() {
france = FranceBuilder.create()
// .backgroundColor(Color.web("#4aa9d7"))
// .fillColor(Color.web("#dcb36c"))
// .strokeColor(Color.web("#987028"))
// .hoverColor(Color.web("#fec47e"))
// .pressedColor(Color.web("#6cee85"))
// .selectedColor(Color.MAGENTA)
// .mousePressHandler(evt -> {
// AcademiePath academiePath = (AcademiePath) evt.getSource();
// System.out.println("On vient de cliquer sur l'"+academiePath.getAcademie().getNom());
// })
.selectionEnabled(true)
.build();
}
@Override
public void start(Stage stage) {
StackPane pane = new StackPane(france);
pane.setBackground(new Background(new BackgroundFill(france.getBackgroundColor(), CornerRadii.EMPTY, Insets.EMPTY)));
Scene scene = new Scene(pane);
stage.setTitle("Carte des académie");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}

View File

@ -0,0 +1,34 @@
package fr.univ_amu.iut;
import java.io.IOException;
import fr.univ_amu.iut.screenController.ScreenController;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class Main extends Application {
private Scene scene = new Scene(new Pane());
private ScreenController gestionnaireDePages = new ScreenController(scene);
@Override
public void start(Stage stage) throws IOException{
ScreenController.addScreen("Acceuil",FXMLLoader.load(getClass().getResource("/fr/univ_amu/iut/fp/fp.fxml")));
//TODO Ajouter les pages d'admin pour l'ajout des usages
//ScreenController.addScreen("admin1",pane);
//ScreenController.addScreen("admin2",pane);
ScreenController.activate("Acceuil");
stage.setTitle("Carte des académie");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) throws InterruptedException {
Thread.sleep(5000);
launch(args);
}
}

View File

@ -1,6 +1,13 @@
package fr.univ_amu.iut.dao; package fr.univ_amu.iut.dao;
import fr.univ_amu.iut.model.Usages; import fr.univ_amu.iut.model.Academie;
import fr.univ_amu.iut.model.Discipline;
import fr.univ_amu.iut.model.Thematique;
import fr.univ_amu.iut.model.Usage;
public interface DAOUsage extends DAO<Usages>{ import java.util.List;
public interface DAOUsage extends DAO<Usage>{
List<Usage> findByCriterias(Thematique thematique, Discipline discipline, Academie academie);
List<Usage> findByName(String substring);
} }

View File

@ -14,42 +14,25 @@ public abstract class DAOBaseClassJPA<T> implements DAO<T> {
} }
public boolean insert(T etudiant) { public boolean insert(T etudiant) {
try{ entityManager.getTransaction().begin();
entityManager.getTransaction().begin(); entityManager.persist(etudiant);
entityManager.persist(etudiant); entityManager.getTransaction().commit();
entityManager.getTransaction().commit(); return true;
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
} }
public boolean update(T obj) { public boolean update(T obj) {
try { entityManager.getTransaction().begin();
entityManager.getTransaction().begin(); entityManager.merge(obj);
entityManager.merge(obj); entityManager.getTransaction().commit();
entityManager.getTransaction().commit(); return true;
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} }
@Override @Override
public boolean delete(T obj) { public boolean delete(T obj) {
try { entityManager.getTransaction().begin();
entityManager.getTransaction().begin(); entityManager.remove(obj);
entityManager.remove(obj); entityManager.getTransaction().commit();
entityManager.getTransaction().commit();
return true; return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} }
} }

View File

@ -2,17 +2,54 @@ package fr.univ_amu.iut.dao.jpa;
import fr.univ_amu.iut.dao.*; import fr.univ_amu.iut.dao.*;
import fr.univ_amu.iut.dao.factory.DAOFactory; import fr.univ_amu.iut.dao.factory.DAOFactory;
import fr.univ_amu.iut.model.Academie;
import fr.univ_amu.iut.model.Discipline;
import fr.univ_amu.iut.model.RegionAcademique;
import fr.univ_amu.iut.model.Thematique;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence; import jakarta.persistence.Persistence;
import java.util.ArrayList;
import java.util.Collection;
public class DAOFactoryJPA implements DAOFactory { public class DAOFactoryJPA implements DAOFactory {
private EntityManager entityManager; private EntityManager entityManager;
private String unitName;
// Nous ne sommes pas sûrs de ou initialiser la base de données
private <T> void insertAllHelper(DAO<T> dao, Collection<T> list){
if(dao.findAll().size()==0){
entityManager.getTransaction().begin();
System.out.println("LOOP");
System.out.flush();
for(var a : list){
entityManager.persist(a);
}
// list.forEach(obj -> entityManager.persist(obj));
entityManager.getTransaction().commit();
}
}
public DAOFactoryJPA(String unitName){
this.unitName = unitName;
insertAllHelper(createDAORegionAcademique(), RegionAcademique.toutes());
insertAllHelper(createDAOAcademie(), Academie.toutes());
insertAllHelper(createDAOThematique(), Thematique.toutes());
insertAllHelper(createDAODiscipline(), Discipline.toutes());
}
public DAOFactoryJPA(){
this("gestionUsagesPU");
}
public EntityManager getEntityManager() { public EntityManager getEntityManager() {
if(entityManager == null){ if(entityManager == null){
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("gestionUsagesPU"); EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(unitName);
entityManager = entityManagerFactory.createEntityManager(); entityManager = entityManagerFactory.createEntityManager();
} }
return entityManager; return entityManager;

View File

@ -22,7 +22,7 @@ public class DAOThematiqueJPA extends DAOBaseClassJPA<Thematique> implements DAO
@Override @Override
public Thematique getById(int id) { public Thematique getById(int id) {
TypedQuery<Thematique> query = entityManager.createNamedQuery("Thematique.findById", Thematique.class); TypedQuery<Thematique> query = entityManager.createNamedQuery("Thematique.findById", Thematique.class);
query.setParameter("numEt", id); query.setParameter("id", id);
return query.getSingleResult(); return query.getSingleResult();
} }
} }

View File

@ -1,28 +0,0 @@
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,48 @@
package fr.univ_amu.iut.dao.jpa; package fr.univ_amu.iut.dao.jpa;
import fr.univ_amu.iut.dao.DAOUsage; import fr.univ_amu.iut.dao.DAOUsage;
import fr.univ_amu.iut.model.Usages; import fr.univ_amu.iut.model.Academie;
import fr.univ_amu.iut.model.Discipline;
import fr.univ_amu.iut.model.Thematique;
import fr.univ_amu.iut.model.Usage;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery; import jakarta.persistence.TypedQuery;
import java.util.List; import java.util.List;
public class DAOUsageJPA extends DAOBaseClassJPA<Usages> implements DAOUsage { public class DAOUsageJPA extends DAOBaseClassJPA<Usage> implements DAOUsage {
public DAOUsageJPA(EntityManager entityManager) { public DAOUsageJPA(EntityManager entityManager) {
super(entityManager); super(entityManager);
} }
@Override @Override
public List<Usages> findAll() { public List<Usage> findAll() {
TypedQuery<Usages> query = entityManager.createNamedQuery("Usage.findAll", Usages.class); TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findAll", Usage.class);
return query.getResultList(); return query.getResultList();
} }
@Override @Override
public Usages getById(int id) { public Usage getById(int id) {
TypedQuery<Usages> query = entityManager.createNamedQuery("Usage.findById", Usages.class); TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findById", Usage.class);
query.setParameter("numEt", id); query.setParameter("numEt", id);
return query.getSingleResult(); return query.getSingleResult();
} }
@Override
public List<Usage> findByCriterias(Thematique thematique, Discipline discipline, Academie academie) {
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findByCriterias", Usage.class);
query.setParameter("thematique", thematique);
query.setParameter("discipline", discipline);
query.setParameter("academie", academie);
return query.getResultList();
}
@Override
public List<Usage> findByName(String substring) {
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findByName", Usage.class);
query.setParameter("substring", "%"+substring+"%");
return query.getResultList();
}
} }

View File

@ -10,43 +10,45 @@ import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.control.cell.PropertyValueFactory;
import java.net.URL; import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import fr.univ_amu.iut.Donnees;
import fr.univ_amu.iut.model.Usage;
public class Controller implements Initializable{ public class Controller implements Initializable{
@FXML @FXML
private TableColumn<Utilisateur, String> Disciplines; private TableView<TableEntry> table;
@FXML @FXML
private TableColumn<Utilisateur, String> Niveaux; private TableColumn<TableEntry, String> discipline;
@FXML @FXML
private TableColumn<Utilisateur, String> Noms; private TableColumn<TableEntry, String> niveau;
@FXML @FXML
private TableColumn<Utilisateur, Integer> Numéro; private TableColumn<TableEntry, String> nom;
@FXML @FXML
private TableView<Utilisateur> Table; private TableColumn<TableEntry, String> description;
@FXML
private TableColumn<Utilisateur, String> Types;
ObservableList<Utilisateur> list = FXCollections.observableArrayList(
new Utilisateur(1,"Patrik","Maht","Blog","Terminal"),
new Utilisateur(2,"Mark","Chimie","Site","Seconde")
);
@Override @Override
public void initialize(URL url, ResourceBundle resourceBundle) { public void initialize(URL url, ResourceBundle resourceBundle) {
Noms.setCellValueFactory(new PropertyValueFactory<Utilisateur, String>("Noms"));
Numéro.setCellValueFactory(new PropertyValueFactory<Utilisateur, Integer>("Numéro"));
Disciplines.setCellValueFactory(new PropertyValueFactory<Utilisateur, String>("Disciplines"));
Types.setCellValueFactory(new PropertyValueFactory<Utilisateur, String>("Types"));
Niveaux.setCellValueFactory(new PropertyValueFactory<Utilisateur, String>("Niveaux"));
Table.setItems(list);
List<TableEntry> entries = new ArrayList<>();
for (Usage usage: Donnees.getUsagesObtenus()){
entries.add(new TableEntry(usage));
}
ObservableList<TableEntry> tableEntries = FXCollections.observableArrayList(entries);
table.setItems(tableEntries);
nom.setCellValueFactory(new PropertyValueFactory<TableEntry, String>("nom"));
discipline.setCellValueFactory(new PropertyValueFactory<TableEntry, String>("discipline"));
description.setCellValueFactory(new PropertyValueFactory<TableEntry, String>("description"));
niveau.setCellValueFactory(new PropertyValueFactory<TableEntry, String>("niveau"));
} }
} }

View File

@ -6,13 +6,12 @@
<AnchorPane prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: #1e3d59#1e3d59;" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univ_amu.iut.fResultat.Controller"> <AnchorPane prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: #1e3d59#1e3d59;" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univ_amu.iut.fResultat.Controller">
<children> <children>
<TableView fx:id="Table" layoutX="10.0" layoutY="10.0" prefHeight="380.0" prefWidth="580.0" style="-fx-background-radius: 20; -fx-border-color: #1e3d59#1e3d59; -fx-background-color: #f5f0e1#f5f0e1;" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0"> <TableView fx:id="table" layoutX="10.0" layoutY="10.0" prefHeight="380.0" prefWidth="580.0" style="-fx-background-radius: 20; -fx-border-color: #1e3d59#1e3d59; -fx-background-color: #f5f0e1#f5f0e1;" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0">
<columns> <columns>
<TableColumn fx:id="Numéro" prefWidth="75.0" text="Numéro" /> <TableColumn fx:id="nom" prefWidth="121.0" text="Nom" />
<TableColumn fx:id="Noms" prefWidth="121.0" text="Noms" /> <TableColumn fx:id="discipline" prefWidth="128.0" text="Disciplines" />
<TableColumn fx:id="Disciplines" prefWidth="128.0" text="Disciplines" /> <TableColumn fx:id="niveau" minWidth="8.0" prefWidth="130.0" text="Niveaux" />
<TableColumn fx:id="Types" prefWidth="124.0" text="Types" /> <TableColumn fx:id="description" prefWidth="124.0" text="Description" />
<TableColumn fx:id="Niveaux" minWidth="8.0" prefWidth="130.0" text="Niveaux" />
</columns> </columns>
</TableView> </TableView>
</children> </children>

View File

@ -1,24 +0,0 @@
package fr.univ_amu.iut.fResultat;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {launch(args);}
@Override
public void start(Stage stage) throws Exception {
try {
AnchorPane root = FXMLLoader.load(getClass().getResource("/fr/univ_amu/iut/fResultat/FResultat.fxml"));
stage.setScene(new Scene(root));
stage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,54 @@
package fr.univ_amu.iut.fResultat;
import java.util.List;
import fr.univ_amu.iut.model.Usage;
public class TableEntry {
private String nom;
private String discipline;
private String description;
private String niveau;
public TableEntry(Usage usage) {
nom = usage.getNom();
discipline = usage.getDiscipline().getNom();
description = usage.getDescription();
niveau = usage.getNiveau().getNom();
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getDiscipline() {
return discipline;
}
public void setDiscipline(String discipline) {
this.discipline = discipline;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getNiveau() {
return niveau;
}
public void setNiveau(String niveau) {
this.niveau = niveau;
}
}

View File

@ -1,40 +0,0 @@
package fr.univ_amu.iut.fResultat;
import java.util.List;
public class Utilisateur {
private int Numéro ;
private String Noms;
private String Disciplines;
private String Types;
private String Niveaux;
public Utilisateur(int numero, String noms, String disciplines, String types, String niveaux) {
Numéro = numero;
Noms = noms;
Disciplines = disciplines;
Types = types;
Niveaux = niveaux;
}
public int getNuméro() {
return Numéro;
}
public String getNoms() {
return Noms;
}
public String getDisciplines() {
return Disciplines;
}
public String getTypes() {
return Types;
}
public String getNiveaux() {
return Niveaux;
}
}

View File

@ -1,86 +1,142 @@
package fr.univ_amu.iut.fp; package fr.univ_amu.iut.fp;
import fr.univ_amu.iut.Donnees;
import fr.univ_amu.iut.dao.DAODiscipline;
import fr.univ_amu.iut.dao.DAORessource; import fr.univ_amu.iut.dao.DAORessource;
import fr.univ_amu.iut.dao.DAOThematique; import fr.univ_amu.iut.dao.DAOThematique;
import fr.univ_amu.iut.dao.DAOUsage;
import fr.univ_amu.iut.dao.factory.DAOFactory; import fr.univ_amu.iut.dao.factory.DAOFactory;
import fr.univ_amu.iut.dao.factory.DAOFactoryProducer; import fr.univ_amu.iut.dao.factory.DAOFactoryProducer;
import fr.univ_amu.iut.dao.factory.DAOType; import fr.univ_amu.iut.dao.factory.DAOType;
import fr.univ_amu.iut.model.Ressource; import fr.univ_amu.iut.model.Discipline;
import fr.univ_amu.iut.model.Thematique; import fr.univ_amu.iut.model.Thematique;
import fr.univ_amu.iut.screenController.ScreenController;
import fr.univ_amu.iut.view.map.AcademiePath;
import fr.univ_amu.iut.view.map.France; import fr.univ_amu.iut.view.map.France;
import fr.univ_amu.iut.view.map.FranceBuilder; import fr.univ_amu.iut.view.map.FranceBuilder;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*; import javafx.scene.layout.*;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.event.EventHandler;
import javafx.event.ActionEvent;
import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.List; import java.util.List;
import java.util.ResourceBundle; import java.util.ResourceBundle;
public class Controller implements Initializable { public class Controller implements Initializable {
France france; France france;
EventHandler<MouseEvent> onEnterHandler;
EventHandler<MouseEvent> onExitHandler;
DAOFactory daoFactory; DAOFactory daoFactory;
DAORessource daoRessource; DAODiscipline daoDiscipline;
DAOThematique daoThematique; DAOThematique daoThematique;
DAOUsage daoUsage;
@FXML @FXML
private Pane stackPaneFrance; private Pane stackPaneFrance;
@FXML @FXML
private AnchorPane ressource; private AnchorPane discipline;
@FXML @FXML
private AnchorPane thematique; private AnchorPane thematique;
@FXML
private Button recherche;
// Style des boutons
Background btNormalBackground = new Background(new BackgroundFill(Color.rgb(255,110,64), new CornerRadii(30), Insets.EMPTY));
Background btNormalHover = new Background(new BackgroundFill(Color.rgb(255,152,120), new CornerRadii(30), Insets.EMPTY));
Background btNormalSelected = new Background(new BackgroundFill(Color.rgb(255,60,0), new CornerRadii(30), Insets.EMPTY));
private void initFrance() { private void initFrance() {
france = FranceBuilder.create() france = FranceBuilder.create()
.backgroundColor(Color.web("#f5f0e1")) .backgroundColor(Color.web("#f5f0e1"))
.fillColor(Color.web("#1e3d59")) .fillColor(Color.web("#1e3d59"))
// .strokeColor(Color.web("#987028")) .mousePressHandler(evt -> {
// .hoverColor(Color.web("#fec47e")) AcademiePath academiePath = (AcademiePath) evt.getSource();
// .pressedColor(Color.web("#6cee85")) Donnees.setAcademieSelectionee(academiePath.getAcademie());
// .selectedColor(Color.MAGENTA) })
// .mousePressHandler(evt -> {
// AcademiePath academiePath = (AcademiePath) evt.getSource();
// System.out.println("On vient de cliquer sur l'"+academiePath.getAcademie().getNom());
// })
.selectionEnabled(true) .selectionEnabled(true)
.build(); .build();
} }
private Button initButton(Object obj,int x,int y){
String nom = "";
EventHandler<ActionEvent> actionHandler;
EventHandler<MouseEvent> onPressHandler;
onEnterHandler = evt -> {
Button bt = (Button) evt.getSource();
bt.setBackground(btNormalHover);
};
onExitHandler= evt -> {
Button bt = (Button) evt.getSource();
bt.setBackground(btNormalBackground);
};
/*<Button layoutX="38.0" layoutY="30.0" mnemonicParsing="false" prefHeight="115.0" prefWidth="235.0" style="-fx-background-radius: 30; -fx-background-color: #ff6e40;" text="Button" /> onPressHandler = event -> {
<Button layoutX="332.0" layoutY="30.0" mnemonicParsing="false" prefHeight="115.0" prefWidth="235.0" style="-fx-background-radius: 30; -fx-background-color: #ff6e40#ff6e40;" text="Button" />*/ Button bt = (Button) event.getSource();
if(bt.getBackground().equals(btNormalSelected)){
bt.setBackground(btNormalHover);
bt.setOnMouseEntered(onEnterHandler);
bt.setOnMouseExited(onExitHandler);
}
else{
bt.setBackground(btNormalSelected);
bt.setOnMouseEntered(null);
bt.setOnMouseExited(null);
}
};
if ( obj instanceof Discipline ){
private Button initButton(String ressource,int x,int y){ Discipline disciplineActuelle = (Discipline) obj;
Button bt = new Button(ressource); nom = disciplineActuelle.getNom();
actionHandler = event -> {Donnees.setDisciplineSelectionee(disciplineActuelle);};
}
else{
Thematique thematiqueActuelle = (Thematique) obj;
nom = thematiqueActuelle.getNom();
actionHandler = event -> {Donnees.setThematiqueSelectionee(thematiqueActuelle);};
}
Button bt = new Button(nom);
bt.setMnemonicParsing(false); bt.setMnemonicParsing(false);
bt.setMinSize(235,115); bt.setMinSize(235,115);
bt.layoutXProperty().setValue(x); bt.layoutXProperty().setValue(x);
bt.layoutYProperty().setValue(y); bt.layoutYProperty().setValue(y);
bt.setId(ressource); bt.setId(nom);
bt.prefHeight(115); bt.prefHeight(115);
bt.prefWidth(235); bt.prefWidth(235);
bt.setText(ressource); bt.setText(nom);
bt.setBackground(new Background(new BackgroundFill(Color.rgb(255,110,64), new CornerRadii(30), Insets.EMPTY))); bt.setBackground(btNormalBackground);
bt.setOnAction(actionHandler);
bt.setOnMouseClicked(onPressHandler);
bt.setOnMouseEntered(onEnterHandler);
bt.setOnMouseExited(onExitHandler);
return bt; return bt;
} }
private Void placeButtonRessource(){ private Void placeButtonDiscipline(){
List<Ressource> ressources = daoRessource.findAll(); List<Discipline> disciplines = daoDiscipline.findAll();
ressource.setMinHeight(ressources.size()*65); discipline.setMinHeight(disciplines.size()*65);
for (int i = 0;i<ressources.size();++i){ for (int i = 0;i<disciplines.size();++i){
if (i%2 == 0){ if (i%2 == 0){
ressource.getChildren().add(initButton(ressources.get(i).getNomRessource(),38,i/2*130)); discipline.getChildren().add(initButton(disciplines.get(i),38,i/2*130));
} }
else { else {
ressource.getChildren().add(initButton(ressources.get(i).getNomRessource(),332,i/2*130)); discipline.getChildren().add(initButton(disciplines.get(i),332,i/2*130));
} }
} }
@ -92,13 +148,12 @@ public class Controller implements Initializable {
thematique.setMinHeight(thematiques.size()*65); thematique.setMinHeight(thematiques.size()*65);
for (int i = 0;i<thematiques.size();++i){ for (int i = 0;i<thematiques.size();++i){
if (i%2 == 0){ if (i%2 == 0){
thematique.getChildren().add(initButton(thematiques.get(i).getNom(),38,i/2*130)); thematique.getChildren().add(initButton(thematiques.get(i),38,i/2*130));
} }
else { else {
thematique.getChildren().add(initButton(thematiques.get(i).getNom(),332,i/2*130)); thematique.getChildren().add(initButton(thematiques.get(i),332,i/2*130));
} }
} }
return null; return null;
} }
@ -109,19 +164,31 @@ public class Controller implements Initializable {
// init // init
daoFactory = DAOFactoryProducer.getFactory(DAOType.TEST); daoFactory = DAOFactoryProducer.getFactory(DAOType.TEST);
daoRessource = daoFactory.createDAORessource(); daoDiscipline = daoFactory.createDAODiscipline();
daoThematique = daoFactory.createDAOThematique(); daoThematique = daoFactory.createDAOThematique();
daoUsage = daoFactory.createDAOUsage();
// a chaque fois // a chaque fois
List<Ressource> l = daoRessource.findAll();
List<Discipline> d = daoDiscipline.findAll();
List<Thematique> t = daoThematique.findAll(); List<Thematique> t = daoThematique.findAll();
System.out.println(l);
placeButtonThematique(); placeButtonThematique();
placeButtonRessource(); placeButtonDiscipline();
// matiere.getChildren().add(initButton(t.get(0).getNom(),38,30)); EventHandler<ActionEvent> handler = event ->{
// matiere.getChildren().add(initButton("test",38,160)); //TODO Recherche en fonctions des objets selectionnés
Donnees.setUsagesObtenus(daoUsage.findByCriterias(Donnees.getThematiqueSelectionee(),Donnees.getDisciplineSelectionee(),Donnees.getAcademieSelectionee()));
Stage resultats = new Stage();
try {
resultats.setScene(new Scene(FXMLLoader.load(getClass().getResource("/fr/univ_amu/iut/fResultat/FResultat.fxml"))));
resultats.show();
} catch (IOException e) {
e.printStackTrace();
}
};
recherche.setOnAction(handler);
} }
} }

View File

@ -1,25 +0,0 @@
package fr.univ_amu.iut.fp;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {launch(args);}
@Override
public void start(Stage stage) throws Exception {
try {
AnchorPane root = FXMLLoader.load(getClass().getResource("/fr/univ_amu/iut/fp/fp.fxml"));
stage.setScene(new Scene(root));
stage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -1,26 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.*?> <?import javafx.scene.Cursor?>
<?import javafx.scene.control.*?> <?import javafx.scene.control.Button?>
<?import javafx.scene.layout.*?> <?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.StackPane?>
<AnchorPane id="root" prefHeight="798.0" prefWidth="1365.0" style="-fx-background-color: #f5f0e1#f5f0e1;" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univ_amu.iut.fp.Controller"> <AnchorPane id="root" prefHeight="798.0" prefWidth="1365.0" style="-fx-background-color: #f5f0e1#f5f0e1;" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univ_amu.iut.fp.Controller">
<children> <children>
<StackPane id="stackPaneFrance" fx:id="stackPaneFrance" layoutX="43.0" layoutY="92.0" prefHeight="649.0" prefWidth="642.0" style="-fx-background-color: blue;" /> <StackPane id="stackPaneFrance" fx:id="stackPaneFrance" layoutX="43.0" layoutY="92.0" prefHeight="649.0" prefWidth="642.0" style="-fx-background-color: blue;" />
<AnchorPane layoutX="11.0" prefHeight="80.0" prefWidth="1019.0" style="-fx-background-color: #1e3d59#1e3d59;" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"> <AnchorPane layoutX="11.0" prefHeight="80.0" prefWidth="1019.0" style="-fx-background-color: #1e3d59#1e3d59;" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">
<children> <children>
<TextField id="barreDeRecherche " layoutX="329.0" layoutY="27.0" prefHeight="27.0" prefWidth="372.0" style="-fx-background-color: #CDD0D4#CDD0D4; -fx-border-radius: 5em; -fx-background-radius: 5em;" text="Entrer nom projet : " AnchorPane.leftAnchor="329.0" AnchorPane.rightAnchor="329.0"> <TextField id="barreDeRecherche " layoutX="329.0" layoutY="27.0" prefHeight="27.0" prefWidth="372.0" promptText="Entrer nom projet :" style="-fx-background-color: #CDD0D4#CDD0D4; -fx-border-radius: 5em; -fx-background-radius: 5em;" text=" " AnchorPane.leftAnchor="329.0" AnchorPane.rightAnchor="329.0">
<cursor> <cursor>
<Cursor fx:constant="CROSSHAIR" /> <Cursor fx:constant="TEXT" />
</cursor> </cursor>
</TextField> </TextField>
<Button layoutX="1066.0" layoutY="27.0" mnemonicParsing="false" text="RECHERCHER VIA LE NOM" />
</children> </children>
</AnchorPane> </AnchorPane>
<StackPane layoutX="744.0" layoutY="100.0" prefHeight="181.0" prefWidth="622.0" style="-fx-background-color: none;" AnchorPane.rightAnchor="-1.0" AnchorPane.topAnchor="100.0"> <StackPane layoutX="744.0" layoutY="100.0" prefHeight="181.0" prefWidth="622.0" style="-fx-background-color: none;" AnchorPane.rightAnchor="-1.0" AnchorPane.topAnchor="100.0">
<children> <children>
<ScrollPane hbarPolicy="NEVER" prefHeight="471.0" prefWidth="347.0" style="-fx-background-color: #f5f0e1;"> <ScrollPane hbarPolicy="NEVER" prefHeight="471.0" prefWidth="347.0" style="-fx-background-color: #f5f0e1;">
<content> <content>
<AnchorPane id="ressource" fx:id="ressource" minHeight="0.0" minWidth="0.0" prefHeight="442.0" prefWidth="620.0" style="-fx-background-color: #f5f0e1#f5f0e1;"> <AnchorPane id="discipline" fx:id="discipline" minHeight="0.0" minWidth="0.0" prefHeight="442.0" prefWidth="620.0" style="-fx-background-color: #f5f0e1#f5f0e1;">
<children> <children>
</children> </children>
@ -41,6 +45,6 @@
</ScrollPane> </ScrollPane>
</children> </children>
</StackPane> </StackPane>
<Button layoutX="875.0" layoutY="606.0" mnemonicParsing="false" prefHeight="120.0" prefWidth="337.0" style="-fx-background-radius: 50; -fx-background-color: #ffc13b#ffc13b;" text="RECHERCHER" AnchorPane.bottomAnchor="72.0" AnchorPane.rightAnchor="153.0" /> <Button id="recherche" fx:id="recherche" layoutX="875.0" layoutY="606.0" mnemonicParsing="false" prefHeight="120.0" prefWidth="337.0" style="-fx-background-radius: 50; -fx-background-color: #ffc13b#ffc13b;" text="RECHERCHER VIA LES FILTRES" AnchorPane.bottomAnchor="72.0" AnchorPane.rightAnchor="153.0" />
</children> </children>
</AnchorPane> </AnchorPane>

View File

@ -2,6 +2,7 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -11,7 +12,7 @@ import java.util.Map;
@NamedQuery(name = "Academie.findByCode", query = "SELECT p FROM Academie p WHERE p.code = :acaCode"), @NamedQuery(name = "Academie.findByCode", query = "SELECT p FROM Academie p WHERE p.code = :acaCode"),
}) })
@Entity @Entity
public class Academie { public class Academie implements Serializable {
private final static HashMap<String, Academie> INSTANCES = new HashMap<>(); private final static HashMap<String, Academie> INSTANCES = new HashMap<>();
@Transient @Transient
public static Academie Mayotte = new Academie("MY", "Académie de Mayotte", RegionAcademique.Mayotte); public static Academie Mayotte = new Academie("MY", "Académie de Mayotte", RegionAcademique.Mayotte);
@ -125,4 +126,19 @@ public class Academie {
", regionAcademique=" + regionAcademique + ", regionAcademique=" + regionAcademique +
'}'; '}';
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Academie academie = (Academie) o;
return code.equals(academie.code);
}
@Override
public int hashCode() {
return code.hashCode();
}
} }

View File

@ -2,21 +2,23 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import java.io.Serializable;
@NamedQueries({ @NamedQueries({
@NamedQuery(name = "Acteur.findAll", query = "SELECT p FROM Acteur p"), @NamedQuery(name = "Acteur.findAll", query = "SELECT p FROM Acteur p"),
@NamedQuery(name = "Acteur.findById", query = "SELECT p FROM Acteur p WHERE p.id = :id"), @NamedQuery(name = "Acteur.findById", query = "SELECT p FROM Acteur p WHERE p.id = :id"),
}) })
@Entity @Entity
public class Acteur { public class Acteur implements Serializable {
@Id @Id
@GeneratedValue @GeneratedValue
int id; int id;
String type;
String identite; String identite;
public Acteur(String type, String identite) { String type;
public Acteur(String identite, String type) {
this.type = type; this.type = type;
this.identite = identite; this.identite = identite;
} }
@ -52,4 +54,24 @@ public class Acteur {
", identite='" + identite + '\'' + ", identite='" + identite + '\'' +
'}'; '}';
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Acteur acteur = (Acteur) o;
if (id != acteur.id) return false;
if (!identite.equals(acteur.identite)) return false;
return type.equals(acteur.type);
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + identite.hashCode();
result = 31 * result + type.hashCode();
return result;
}
} }

View File

@ -1,17 +1,19 @@
package fr.univ_amu.iut.model; package fr.univ_amu.iut.model;
import jakarta.persistence.Entity; import jakarta.persistence.*;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.Transient;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@NamedQueries({
@NamedQuery(name = "Discipline.findAll", query = "SELECT p FROM Discipline p"),
@NamedQuery(name = "Discipline.findById", query = "SELECT p FROM Discipline p WHERE p.id = :id"),
})
@Entity @Entity
public class Discipline { public class Discipline implements Serializable {
private static List<Discipline> INSTANCES = new ArrayList<>(); private static final List<Discipline> INSTANCES = new ArrayList<>();
@Transient @Transient
public static Discipline Toutes = new Discipline("Toutes disciplines"); public static Discipline Toutes = new Discipline("Toutes disciplines");
@ -33,15 +35,16 @@ public class Discipline {
@Id @Id
@GeneratedValue @GeneratedValue
int id; int id;
@Column(unique = true)
String nom; String nom;
public Discipline() { public Discipline() {
INSTANCES.add(this);
} }
public Discipline(String nom) { public Discipline(String nom) {
this();
this.nom = nom; this.nom = nom;
INSTANCES.add(this);
} }
public static List<Discipline> toutes() { public static List<Discipline> toutes() {
@ -71,4 +74,22 @@ public class Discipline {
", nom='" + nom + '\'' + ", nom='" + nom + '\'' +
'}'; '}';
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Discipline that = (Discipline) o;
if (id != that.id) return false;
return nom.equals(that.nom);
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + nom.hashCode();
return result;
}
} }

View File

@ -18,4 +18,12 @@ public enum Niveau {
} }
return null; return null;
} }
@Override
public String toString() {
return "Niveau{" +
"nom='" + nom + '\'' +
'}';
}
} }

View File

@ -2,61 +2,69 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@NamedQueries({
@NamedQuery(name = "RegionAcademique.findAll", query = "SELECT p FROM RegionAcademique p"),
@NamedQuery(name = "RegionAcademique.findById", query = "SELECT p FROM RegionAcademique p WHERE p.id = :id"),
})
@Entity @Entity
public class RegionAcademique { public class RegionAcademique implements Serializable {
private static List<RegionAcademique> INSTANCES = new ArrayList<>(); private static List<RegionAcademique> INSTANCES = new ArrayList<>();
@Transient
public static RegionAcademique AuvergneRhoneAlpes = new RegionAcademique("Région académique Auvergne-Rhône-Alpes"); public static RegionAcademique AuvergneRhoneAlpes = new RegionAcademique("Région académique Auvergne-Rhône-Alpes");
@Transient
public static RegionAcademique BourgogneFrancheComte = new RegionAcademique("Région académique Bourgogne-Franche-Comté"); public static RegionAcademique BourgogneFrancheComte = new RegionAcademique("Région académique Bourgogne-Franche-Comté");
@Transient
public static RegionAcademique Bretagne = new RegionAcademique("Région académique Bretagne"); public static RegionAcademique Bretagne = new RegionAcademique("Région académique Bretagne");
@Transient
public static RegionAcademique CentreValDeLoire = new RegionAcademique("Région académique Centre-Val de Loire"); public static RegionAcademique CentreValDeLoire = new RegionAcademique("Région académique Centre-Val de Loire");
@Transient
public static RegionAcademique Corse = new RegionAcademique("Région académique Corse"); public static RegionAcademique Corse = new RegionAcademique("Région académique Corse");
@Transient
public static RegionAcademique GrandEst = new RegionAcademique("Région académique Grand Est"); public static RegionAcademique GrandEst = new RegionAcademique("Région académique Grand Est");
@Transient
public static RegionAcademique Guadeloupe = new RegionAcademique("Région académique Guadeloupe"); public static RegionAcademique Guadeloupe = new RegionAcademique("Région académique Guadeloupe");
@Transient
public static RegionAcademique Guyane = new RegionAcademique("Région académique Guyane"); public static RegionAcademique Guyane = new RegionAcademique("Région académique Guyane");
@Transient
public static RegionAcademique HautsDeFrance = new RegionAcademique("Région académique Hauts-de-France"); public static RegionAcademique HautsDeFrance = new RegionAcademique("Région académique Hauts-de-France");
@Transient
public static RegionAcademique IleDeFrance = new RegionAcademique("Région académique Île-de-France"); public static RegionAcademique IleDeFrance = new RegionAcademique("Région académique Île-de-France");
@Transient
public static RegionAcademique Martinique = new RegionAcademique("Région académique Martinique"); public static RegionAcademique Martinique = new RegionAcademique("Région académique Martinique");
@Transient
public static RegionAcademique Normandie = new RegionAcademique("Région académique Normandie"); public static RegionAcademique Normandie = new RegionAcademique("Région académique Normandie");
@Transient
public static RegionAcademique NouvelleAquitaine = new RegionAcademique("Région académique Nouvelle-Aquitaine"); public static RegionAcademique NouvelleAquitaine = new RegionAcademique("Région académique Nouvelle-Aquitaine");
@Transient
public static RegionAcademique Occitanie = new RegionAcademique("Région académique Occitanie"); public static RegionAcademique Occitanie = new RegionAcademique("Région académique Occitanie");
@Transient
public static RegionAcademique PaysDeLaLoire = new RegionAcademique("Région académique Pays de la Loire"); public static RegionAcademique PaysDeLaLoire = new RegionAcademique("Région académique Pays de la Loire");
@Transient
public static RegionAcademique ProvenceAlpesCoteDAzur = new RegionAcademique("Région académique Provence-Alpes-Côte d'Azur"); public static RegionAcademique ProvenceAlpesCoteDAzur = new RegionAcademique("Région académique Provence-Alpes-Côte d'Azur");
@Transient
public static RegionAcademique Reunion = new RegionAcademique("Région académique La Réunion"); public static RegionAcademique Reunion = new RegionAcademique("Région académique La Réunion");
@Transient
public static RegionAcademique Mayotte = new RegionAcademique("Région académique Mayotte"); public static RegionAcademique Mayotte = new RegionAcademique("Région académique Mayotte");
@Id @Id
@GeneratedValue @GeneratedValue
int id; int id;
@Column(unique = true)
String nom; String nom;
public RegionAcademique() { public RegionAcademique() {
INSTANCES.add(this);
} }
public RegionAcademique(String nom) { public RegionAcademique(String nom) {
this(); INSTANCES.add(this);
this.nom = nom; this.nom = nom;
} }
@ -78,4 +86,31 @@ public class RegionAcademique {
public String getNom() { public String getNom() {
return nom; return nom;
} }
@Override
public String toString() {
return "RegionAcademique{" +
"id=" + id +
", nom='" + nom + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
RegionAcademique that = (RegionAcademique) o;
if (id != that.id) return false;
return nom.equals(that.nom);
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + nom.hashCode();
return result;
}
} }

View File

@ -2,6 +2,8 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
@NamedQueries({ @NamedQueries({
@ -9,17 +11,31 @@ import java.net.URL;
@NamedQuery(name = "Ressource.findById", query = "SELECT p FROM Ressource p WHERE p.id = :id"), @NamedQuery(name = "Ressource.findById", query = "SELECT p FROM Ressource p WHERE p.id = :id"),
}) })
@Entity @Entity
public class Ressource { public class Ressource implements Serializable {
@Id @Id
@GeneratedValue @GeneratedValue
int id; int id;
String nomRessource; String nomRessource;
String typeRessource;
URL lienRessource; URL lienRessource;
public Ressource(URL lienRessource, String nomRessource, String typeRessource) { String typeRessource;
private static URL convertUrl(String url){
try{
return new URL(url);
}catch(MalformedURLException e){
e.printStackTrace();
return null;
}
}
public Ressource(String nomRessource, String lienRessource, String typeRessource) {
this(nomRessource, convertUrl(lienRessource), typeRessource);
}
public Ressource(String nomRessource, URL lienRessource, String typeRessource) {
this.nomRessource = nomRessource;
this.typeRessource = typeRessource; this.typeRessource = typeRessource;
this.lienRessource = lienRessource; this.lienRessource = lienRessource;
} }
@ -50,4 +66,19 @@ public class Ressource {
", lienRessource=" + lienRessource + ", lienRessource=" + lienRessource +
'}'; '}';
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Ressource ressource = (Ressource) o;
return id == ressource.id;
}
@Override
public int hashCode() {
return id;
}
} }

View File

@ -1,12 +1,23 @@
package fr.univ_amu.iut.model; package fr.univ_amu.iut.model;
import jakarta.persistence.Entity; import jakarta.persistence.*;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.Transient;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@NamedQueries({
@NamedQuery(name = "Thematique.findAll", query = "SELECT p FROM Thematique p"),
@NamedQuery(name = "Thematique.findById", query = "SELECT p FROM Thematique p WHERE p.id = :id"),
})
@Entity @Entity
public class Thematique { public class Thematique implements Serializable {
private final static List<Thematique> INSTANCES = new ArrayList<>();
@Transient @Transient
public static Thematique ClasseInversee= new Thematique("Classe inversée"); public static Thematique ClasseInversee= new Thematique("Classe inversée");
@Transient @Transient
@ -55,6 +66,8 @@ public class Thematique {
@Id @Id
@GeneratedValue @GeneratedValue
int id; int id;
@Column(unique = true)
String nom; String nom;
public String getNom() { public String getNom() {
@ -63,11 +76,15 @@ public class Thematique {
public Thematique(String nom) { public Thematique(String nom) {
this.nom = nom; this.nom = nom;
INSTANCES.add(this);
} }
public Thematique() { public Thematique() {
} }
public static List<Thematique> toutes(){
return INSTANCES;
}
@Override @Override
public String toString() { public String toString() {
@ -76,4 +93,22 @@ public class Thematique {
", nom='" + nom + '\'' + ", nom='" + nom + '\'' +
'}'; '}';
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Thematique that = (Thematique) o;
if (id != that.id) return false;
return nom.equals(that.nom);
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + nom.hashCode();
return result;
}
} }

View File

@ -1,31 +0,0 @@
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

@ -1,23 +0,0 @@
package fr.univ_amu.iut.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
@Entity
public class TypeRessource {
@Id
@GeneratedValue
int id;
String nom;
public TypeRessource(String nom) {
this.nom = nom;
}
public TypeRessource() {}
public String getNom() {
return nom;
}
}

View File

@ -2,15 +2,23 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@NamedQueries({ @NamedQueries({
@NamedQuery(name = "Usage.findAll", query = "SELECT p FROM Usages p"), @NamedQuery(name = "Usage.findAll", query = "SELECT p FROM Usage p"),
@NamedQuery(name = "Usage.findById", query = "SELECT p FROM Usages p WHERE p.id = :id"), @NamedQuery(name = "Usage.findById", query = "SELECT p FROM Usage p WHERE p.id = :id"),
@NamedQuery(name = "Usage.findByName", query = "SELECT p FROM Usage p WHERE p.nom LIKE :substring"),
@NamedQuery(name = "Usage.findByCriterias", query = "SELECT p FROM Usage p WHERE" +
"(:thematique is null or :thematique=p.thematique)" +
"AND (:discipline is null or :discipline=p.discipline)"+
"AND (:academie is null or :academie=p.academie)"),
}) })
@Entity @Entity
public class Usages { @Table(name="\"USAGE\"")
public class Usage implements Serializable {
@Id @Id
@GeneratedValue @GeneratedValue
int id; int id;
@ -34,12 +42,12 @@ public class Usages {
@OneToMany(cascade = CascadeType.ALL) @OneToMany(cascade = CascadeType.ALL)
List<Ressource> ressources = new ArrayList<>(); List<Ressource> ressources = new ArrayList<>();
@OneToOne(cascade = CascadeType.ALL) @OneToMany(cascade = CascadeType.ALL)
Acteur acteur; List<Acteur> acteurs = new ArrayList<>();
String commentaire; String commentaire;
public Usages() { public Usage() {
} }
public String getNom() { public String getNom() {
@ -98,12 +106,12 @@ public class Usages {
this.ressources.add(ressource); this.ressources.add(ressource);
} }
public Acteur getActeur() { public List<Acteur> getActeurs() {
return acteur; return acteurs;
} }
public void setActeur(Acteur acteur) { public void addActeur(Acteur acteur) {
this.acteur = acteur; this.acteurs.add(acteur);
} }
public String getCommentaire() { public String getCommentaire() {
@ -126,8 +134,23 @@ public class Usages {
", niveau=" + niveau + ", niveau=" + niveau +
", academie=" + academie + ", academie=" + academie +
", ressources=" + ressources + ", ressources=" + ressources +
", acteur=" + acteur + ", acteurs=" + acteurs +
", commentaire='" + commentaire + '\'' + ", commentaire='" + commentaire + '\'' +
'}'; '}';
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Usage usage = (Usage) o;
return id == usage.id;
}
@Override
public int hashCode() {
return id;
}
} }

View File

@ -0,0 +1,23 @@
package fr.univ_amu.iut.screenController;
import java.util.HashMap;
import javafx.scene.*;
import javafx.scene.layout.Pane;
public class ScreenController {
private static HashMap<String, Pane> screenMap = new HashMap<>();
private static Scene main;
public ScreenController(Scene main) {
ScreenController.main = main;
}
public static void addScreen(String name, Pane pane){
screenMap.put(name, pane);
}
public static void activate(String name){
main.setRoot( screenMap.get(name) );
}
}

View File

@ -12,7 +12,7 @@ public class DAODisciplineTest implements DAODiscipline {
@Override @Override
public List<Discipline> findAll() { public List<Discipline> findAll() {
return null; return Discipline.toutes();
} }
@Override @Override

View File

@ -17,7 +17,7 @@ public class DAOFactoryTest implements DAOFactory {
@Override @Override
public DAODiscipline createDAODiscipline() { public DAODiscipline createDAODiscipline() {
return null; return new DAODisciplineTest();
} }
@Override @Override
@ -37,6 +37,6 @@ public class DAOFactoryTest implements DAOFactory {
@Override @Override
public DAOUsage createDAOUsage() { public DAOUsage createDAOUsage() {
return null; return new DAOUsageTest();
} }
} }

View File

@ -18,13 +18,7 @@ public class DAORessourceTest implements DAORessource {
public List<Ressource> findAll() { public List<Ressource> findAll() {
List<Ressource> liste = new ArrayList<>(); List<Ressource> liste = new ArrayList<>();
for (int i = 0; i < 12; i++){ for (int i = 0; i < 12; i++){
URL url = null; Ressource ressource = new Ressource("google", "http://google.com", "site web");
try {
url = new URL("http://google.com");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Ressource ressource = new Ressource(url, "google", "site web");
liste.add(ressource); liste.add(ressource);
} }
return liste; return liste;

View File

@ -18,13 +18,7 @@ public class DAOThematiqueTest implements DAOThematique {
public List<Thematique> findAll() { public List<Thematique> findAll() {
List<Thematique> liste = new ArrayList<>(); List<Thematique> liste = new ArrayList<>();
for (int i = 0; i < 12; i++){ for (int i = 0; i < 12; i++){
URL url = null; Thematique thematique = new Thematique("Thematique n° "+i);
try {
url = new URL("http://google.com");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Thematique thematique = new Thematique(String.valueOf(i));
liste.add(thematique); liste.add(thematique);
} }
return liste; return liste;

View File

@ -0,0 +1,66 @@
package fr.univ_amu.iut.test;
import java.util.ArrayList;
import java.util.List;
import fr.univ_amu.iut.dao.DAOUsage;
import fr.univ_amu.iut.model.Academie;
import fr.univ_amu.iut.model.Discipline;
import fr.univ_amu.iut.model.Niveau;
import fr.univ_amu.iut.model.Thematique;
import fr.univ_amu.iut.model.Usage;
public class DAOUsageTest implements DAOUsage{
@Override
public boolean delete(Usage obj) {
// TODO Auto-generated method stub
return false;
}
@Override
public List<Usage> findAll() {
List<Usage> usages = new ArrayList<>();
for( int i = 0; i < 69 ; i++){
Usage tmp = new Usage();
tmp.setNom(String.valueOf(i));
tmp.setDiscipline(Discipline.Technologie);
tmp.setNiveau(Niveau.Tous);
tmp.setDescription("je suis un commentaire tres long mais surtout tres utile, je sert a tester l'interface graphique et la mettre au bout de ses limtes");
usages.add(tmp);
}
return usages;
}
@Override
public Usage getById(int id) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean insert(Usage obj) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean update(Usage obj) {
// TODO Auto-generated method stub
return false;
}
@Override
public List<Usage> findByCriterias(Thematique thematique, Discipline discipline, Academie academie) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Usage> findByName(String substring) {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -7,9 +7,27 @@
<properties> <properties>
<!-- database connection properties --> <!-- database connection properties -->
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/devapp"/> <property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://lagrottedeneotaku.hopto.org:6776/devapp"/>
<property name="jakarta.persistence.jdbc.user" value="root"/> <property name="jakarta.persistence.jdbc.user" value="devapp"/>
<property name="jakarta.persistence.jdbc.password" value="azerty123"/> <property name="jakarta.persistence.jdbc.password" value="7kPoWBgoV5ahygxyXYGzaL"/>
<!-- Nous ne devrions pas commit le mot de passe dans le dépot, mais... je ne pense pas que le projet ne respecte la moindre règle de sécurité de toute facon (pas d'architecture trois tiers)-->
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
<!-- configure logging -->
<property name="eclipselink.logging.level" value="INFO"/>
<property name="eclipselink.logging.level.sql" value="FINE"/>
<property name="eclipselink.logging.parameters" value="true"/>
</properties>
</persistence-unit>
<persistence-unit name="gestionUsagesPUTest" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<!-- database connection properties -->
<property name="jakarta.persistence.jdbc.url" value="jdbc:derby:memory:devapp;create=true"/>
<property name="eclipselink.ddl-generation.output-mode" value="database"/> <property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.ddl-generation" value="create-tables"/> <property name="eclipselink.ddl-generation" value="create-tables"/>

View File

@ -0,0 +1,57 @@
package fr.univ_amu.iut;
import fr.univ_amu.iut.dao.factory.DAOFactory;
import fr.univ_amu.iut.dao.jpa.DAOFactoryJPA;
import fr.univ_amu.iut.model.*;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.PrintStream;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
public class BackendTest {
private static DAOFactoryJPA daoFactory;
@BeforeAll
public static void setUp() throws Exception {
daoFactory = new DAOFactoryJPA("gestionUsagesPUTest");
Usage usage = new Usage();
usage.setNom("Nom d'usage n°1");
usage.addActeur(new Acteur("Thomas", "Developpeur"));
usage.addActeur(new Acteur("Djalim", "Developpeur"));
usage.addRessource(new Ressource("Google", "https://google.com", "Site web"));
usage.setDiscipline(new Discipline("Informatique"));
daoFactory.createDAOUsage().insert(usage);
}
@Test
public void beforeeach_works() {
assertThat(true).isTrue();
}
@Test
public void thematiques_are_not_empty() {
assertThat(daoFactory.createDAOThematique().findAll().size()).isNotZero();
}
@Test
public void thematiques_contains_ecole_inclusive() {
// on ne créé pas une fonction findByName car elle ne serait utilisée que pour le test
boolean ecoleInclusiveFound = false;
for(Thematique thematique : daoFactory.createDAOThematique().findAll()) {
if (thematique.getNom().equals("École inclusive")) {
ecoleInclusiveFound = true;
break;
}
}
assertThat(ecoleInclusiveFound).isTrue();
}
}