diff --git a/src/main/java/fr/univ_amu/iut/Main.java b/src/main/java/fr/univ_amu/iut/AppMain.java similarity index 83% rename from src/main/java/fr/univ_amu/iut/Main.java rename to src/main/java/fr/univ_amu/iut/AppMain.java index b341b38..4a4d3a9 100644 --- a/src/main/java/fr/univ_amu/iut/Main.java +++ b/src/main/java/fr/univ_amu/iut/AppMain.java @@ -9,12 +9,19 @@ import javafx.scene.Scene; import javafx.scene.layout.Pane; import javafx.stage.Stage; -public class Main extends Application { +public class AppMain extends Application { private Scene scene = new Scene(new Pane()); private ScreenController gestionnaireDePages = new ScreenController(scene); + public static boolean testMode; + @Override public void start(Stage stage) throws IOException{ + + String res = getParameters().getNamed().get("testMode"); + testMode = res!=null&&res.equals("true"); + + 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 @@ -28,7 +35,6 @@ public class Main extends Application { } public static void main(String[] args) throws InterruptedException { - Thread.sleep(5000); launch(args); } } diff --git a/src/main/java/fr/univ_amu/iut/Donnees.java b/src/main/java/fr/univ_amu/iut/Donnees.java index 473b306..a7d7bd9 100644 --- a/src/main/java/fr/univ_amu/iut/Donnees.java +++ b/src/main/java/fr/univ_amu/iut/Donnees.java @@ -10,7 +10,7 @@ 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 Discipline disciplineSelectionee = null; private static List usagesObtenus; public static List getUsagesObtenus() { @@ -36,7 +36,7 @@ public class Donnees { if(thematiqueSelectionee == Donnees.thematiqueSelectionee){ thematiqueSelectionee = null; } - System.out.println("Thematique selectionée : %s".formatted((thematiqueSelectionee == null)? "Aucune Thematique" : thematiqueSelectionee.getNom())); + System.out.println("Thematique selectionée : %s".formatted(thematiqueSelectionee)); Donnees.thematiqueSelectionee = thematiqueSelectionee; } public static Discipline getDisciplineSelectionee() { @@ -44,9 +44,9 @@ public class Donnees { } public static void setDisciplineSelectionee(Discipline disciplineSelectionee) { if(disciplineSelectionee == Donnees.disciplineSelectionee){ - disciplineSelectionee = Discipline.Toutes; + disciplineSelectionee = null; } - System.out.println("Discipline Selectionee : %s".formatted(disciplineSelectionee.getNom())); + System.out.println("Discipline Selectionee : %s".formatted(disciplineSelectionee)); Donnees.disciplineSelectionee = disciplineSelectionee; } diff --git a/src/main/java/fr/univ_amu/iut/Launcher.java b/src/main/java/fr/univ_amu/iut/Launcher.java index 6ab56b4..c6c7065 100644 --- a/src/main/java/fr/univ_amu/iut/Launcher.java +++ b/src/main/java/fr/univ_amu/iut/Launcher.java @@ -2,6 +2,6 @@ package fr.univ_amu.iut; public class Launcher { public static void main(String[] args) throws Exception { - Main.main(args); + AppMain.main(args); } } diff --git a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java index f02fbc0..55e2252 100644 --- a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java +++ b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java @@ -6,7 +6,8 @@ import fr.univ_amu.iut.test.DAOFactoryTest; public class DAOFactoryProducer { public static DAOFactory getFactory(DAOType type) { return switch (type){ - case JPA -> new DAOFactoryJPA(); + case JPA -> new DAOFactoryJPA("gestionUsagesPU"); + case JPA_MEMORY -> new DAOFactoryJPA("gestionUsagesPUMemory"); case TEST -> new DAOFactoryTest(); default -> throw new IllegalArgumentException(); }; diff --git a/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java b/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java index b947d4d..1f6a400 100644 --- a/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java +++ b/src/main/java/fr/univ_amu/iut/dao/factory/DAOType.java @@ -2,5 +2,6 @@ package fr.univ_amu.iut.dao.factory; public enum DAOType { JPA, - TEST + JPA_MEMORY, // JPA, mais sans persistence (base de données en mémoire) (utilisé pour le test de JPA) + TEST // utilisé pour le test de l'interface graphique } diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java index 4751a59..402e13e 100644 --- a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java @@ -37,15 +37,11 @@ public class DAOFactoryJPA implements DAOFactory { 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() { if(entityManager == null){ diff --git a/src/main/java/fr/univ_amu/iut/fResultat/TableEntry.java b/src/main/java/fr/univ_amu/iut/fResultat/TableEntry.java index 41c3c75..aec118e 100644 --- a/src/main/java/fr/univ_amu/iut/fResultat/TableEntry.java +++ b/src/main/java/fr/univ_amu/iut/fResultat/TableEntry.java @@ -8,12 +8,15 @@ public class TableEntry { private String nom; private String discipline; + private String thematique; private String description; private String niveau; public TableEntry(Usage usage) { nom = usage.getNom(); + thematique = usage.getThematique().getNom(); discipline = usage.getDiscipline().getNom(); + System.out.println("DESC="+usage.getDescription()); description = usage.getDescription(); niveau = usage.getNiveau().getNom(); } @@ -34,6 +37,15 @@ public class TableEntry { this.discipline = discipline; } + + public String getThematique() { + return thematique; + } + + public void setThematique(String thematique) { + this.thematique = thematique; + } + public String getDescription() { return description; } @@ -51,4 +63,36 @@ public class TableEntry { } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + TableEntry that = (TableEntry) o; + + if (nom != null ? !nom.equals(that.nom) : that.nom != null) return false; + if (discipline != null ? !discipline.equals(that.discipline) : that.discipline != null) return false; + if (description != null ? !description.equals(that.description) : that.description != null) return false; + return niveau != null ? niveau.equals(that.niveau) : that.niveau == null; + } + + @Override + public int hashCode() { + int result = nom != null ? nom.hashCode() : 0; + result = 31 * result + (discipline != null ? discipline.hashCode() : 0); + result = 31 * result + (description != null ? description.hashCode() : 0); + result = 31 * result + (niveau != null ? niveau.hashCode() : 0); + return result; + } + + + @Override + public String toString() { + return "TableEntry{" + + "nom='" + nom + '\'' + + ", discipline='" + discipline + '\'' + + ", description='" + description + '\'' + + ", niveau='" + niveau + '\'' + + '}'; + } } diff --git a/src/main/java/fr/univ_amu/iut/fp/Controller.java b/src/main/java/fr/univ_amu/iut/fp/Controller.java index 0f177b0..7557c71 100644 --- a/src/main/java/fr/univ_amu/iut/fp/Controller.java +++ b/src/main/java/fr/univ_amu/iut/fp/Controller.java @@ -1,5 +1,6 @@ package fr.univ_amu.iut.fp; +import fr.univ_amu.iut.AppMain; import fr.univ_amu.iut.Donnees; import fr.univ_amu.iut.dao.DAODiscipline; import fr.univ_amu.iut.dao.DAOThematique; @@ -18,6 +19,7 @@ import javafx.fxml.Initializable; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; +import javafx.scene.control.TextField; import javafx.scene.input.MouseEvent; import javafx.scene.layout.*; import javafx.scene.paint.Color; @@ -27,7 +29,6 @@ import javafx.event.ActionEvent; import java.io.IOException; import java.net.URL; -import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; @@ -43,6 +44,9 @@ public class Controller implements Initializable { @FXML private Pane stackPaneFrance; + @FXML + private TextField barreDeRecherche; + @FXML private AnchorPane discipline; @@ -52,26 +56,27 @@ public class Controller implements Initializable { @FXML private Button recherche; - List listNomThematique = new ArrayList<>(); + @FXML + private Button rechercheTextuelle; // 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 btSelectedBackground = new Background(new BackgroundFill(Color.rgb(255, 60, 0), new CornerRadii(30), Insets.EMPTY)); + 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() { france = FranceBuilder.create() .backgroundColor(Color.web("#f5f0e1")) .fillColor(Color.web("#1e3d59")) .mousePressHandler(evt -> { - AcademiePath academiePath = (AcademiePath) evt.getSource(); - Donnees.setAcademieSelectionee(academiePath.getAcademie()); + AcademiePath academiePath = (AcademiePath) evt.getSource(); + Donnees.setAcademieSelectionee(academiePath.getAcademie()); }) .selectionEnabled(true) .build(); } - private Button initButton(Object obj, int x, int y) { + private Button initButton(Object obj,int x,int y){ String nom = ""; EventHandler actionHandler; @@ -105,7 +110,7 @@ public class Controller implements Initializable { onPressHandler = event -> { Button bt = (Button) event.getSource(); - if (bt.getBackground().equals(btSelectedBackground)) { + if (bt.getBackground().equals(btNormalSelected)) { bt.setBackground(btNormalHover); bt.setOnMouseEntered(onEnterHandler); bt.setOnMouseExited(onExitHandler); @@ -127,7 +132,7 @@ public class Controller implements Initializable { } bt.setOnMouseEntered(null); bt.setOnMouseExited(null); - bt.setBackground(btSelectedBackground); + bt.setBackground(btNormalSelected); } }; @@ -182,7 +187,7 @@ public class Controller implements Initializable { stackPaneFrance.getChildren().add(france); // init - daoFactory = DAOFactoryProducer.getFactory(DAOType.JPA); + daoFactory = DAOFactoryProducer.getFactory(AppMain.testMode ? DAOType.TEST : DAOType.JPA); daoDiscipline = daoFactory.createDAODiscipline(); daoThematique = daoFactory.createDAOThematique(); daoUsage = daoFactory.createDAOUsage(); @@ -194,10 +199,9 @@ public class Controller implements Initializable { placeButtonThematique(); placeButtonDiscipline(); - EventHandler handler = event -> { - //TODO Recherche en fonctions des objets selectionnés + EventHandler handleRechercheTextuelle = event ->{ - Donnees.setUsagesObtenus(daoUsage.findByCriterias(Donnees.getThematiqueSelectionee(), Donnees.getDisciplineSelectionee(), Donnees.getAcademieSelectionee())); + Donnees.setUsagesObtenus(daoUsage.findByNamePart(barreDeRecherche.getText())); Stage resultats = new Stage(); try { @@ -206,8 +210,21 @@ public class Controller implements Initializable { } catch (IOException e) { e.printStackTrace(); } - }; - recherche.setOnAction(handler); + rechercheTextuelle.setOnAction(handleRechercheTextuelle); + + + EventHandler handleRechercheCrieters = event ->{ + System.out.println("test"); + 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(handleRechercheCrieters); } } diff --git a/src/main/java/fr/univ_amu/iut/fp/fp.fxml b/src/main/java/fr/univ_amu/iut/fp/fp.fxml index 908c2e5..ac6c726 100644 --- a/src/main/java/fr/univ_amu/iut/fp/fp.fxml +++ b/src/main/java/fr/univ_amu/iut/fp/fp.fxml @@ -7,17 +7,17 @@ - + - + -