Skip to content

Commit

Permalink
Merge pull request #28 from projet-gl2/imp/restructure
Browse files Browse the repository at this point in the history
Imp/restructure
  • Loading branch information
enimaloc authored Apr 15, 2024
2 parents 1e31cd2 + 1bb5251 commit dd34c85
Show file tree
Hide file tree
Showing 58 changed files with 2,257 additions and 856 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,4 @@ doc/
### Application Files ###
*.db
*.properties
.idea/copilot
11 changes: 9 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

plugins {
id("java")
id("application")
id("org.sonarqube") version "3.5.0.2730"
id("com.github.johnrengelman.shadow") version "8.1.1"
}

group = "fr.hashimiste"
Expand All @@ -19,8 +22,6 @@ repositories {

dependencies {
implementation("org.xerial:sqlite-jdbc:3.7.2")
implementation("ch.obermuhlner:jshell-scriptengine:1.1.0")
implementation("org.python:jython:2.7.2")

testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1")
Expand All @@ -39,3 +40,9 @@ sonar {
property("sonar.projectKey", "projet-gl2_Hashimiste_AY4o2rljbqkgiLWt9-aA")
}
}

tasks.named<ShadowJar>("shadowJar") {
archiveBaseName.set("Grp1")
archiveClassifier.set("")
archiveVersion.set("")
}
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
6 changes: 5 additions & 1 deletion src/main/java/fr/hashimiste/core/data/Decoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,15 @@ public interface Decoder<I, T> {
*/
String getNomContaineur();

default String getIdColonne() {
return null;
}

/**
* Crée un nouvel objet de type T à partir des données en entrée.
*
* @param input les données en entrée.
* @return un nouvel objet de type T.
*/
T creer(I input);
T creer(I input, Object... args);
}
33 changes: 17 additions & 16 deletions src/main/java/fr/hashimiste/core/data/Stockage.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Supplier;

/**
Expand All @@ -19,38 +20,38 @@ public interface Stockage {
* @param extra un paramètre supplémentaire pour la requête.
* @return une liste d'objets de type T.
*/
<T> List<T> charger(Class<T> clazz, String extra);
<T> List<T> charger(Class<T> clazz, String extra, Object... args);

/**
* Charge une liste d'objets de type T à partir du stockage en utilisant des jointures et un filtre.
*
* @param clazz la classe des objets à charger.
* @param clazz la classe des objets à charger.
* @param jointures la liste des jointures à utiliser.
* @param filtre le filtre à utiliser.
* @param filtre le filtre à utiliser.
* @return une liste d'objets de type T.
*/
<T> List<T> charger(Class<T> clazz, List<Join> jointures, Filter filtre);
<T> List<T> charger(Class<T> clazz, List<Join> jointures, Filter filtre, Object... args);

/**
* Charge une liste d'objets de type T à partir du stockage en utilisant des jointures.
*
* @param clazz la classe des objets à charger.
* @param clazz la classe des objets à charger.
* @param jointures la liste des jointures à utiliser.
* @return une liste d'objets de type T.
*/
default <T> List<T> charger(Class<T> clazz, List<Join> jointures) {
return charger(clazz, jointures, null);
default <T> List<T> charger(Class<T> clazz, List<Join> jointures, Object... args) {
return charger(clazz, jointures, null, args);
}

/**
* Charge une liste d'objets de type T à partir du stockage en utilisant un filtre.
*
* @param clazz la classe des objets à charger.
* @param clazz la classe des objets à charger.
* @param filtre le filtre à utiliser.
* @return une liste d'objets de type T.
*/
default <T> List<T> charger(Class<T> clazz, Filter filtre) {
return charger(clazz, null, filtre);
default <T> List<T> charger(Class<T> clazz, Filter filtre, Object... args) {
return charger(clazz, null, filtre, args);
}

/**
Expand All @@ -59,19 +60,19 @@ default <T> List<T> charger(Class<T> clazz, Filter filtre) {
* @param clazz la classe des objets à charger.
* @return une liste d'objets de type T.
*/
default <T> List<T> charger(Class<T> clazz) {
return charger(clazz, null, null);
default <T> List<T> charger(Class<T> clazz, Object... args) {
return charger(clazz, null, null, args);
}

/**
* Récupère un objet de type T à partir du stockage en utilisant un filtre.
*
* @param clazz la classe de l'objet à récupérer.
* @param clazz la classe de l'objet à récupérer.
* @param filtre le filtre à utiliser.
* @return un objet de type T.
*/
default <T> T get(Class<T> clazz, Filter filtre) {
return charger(clazz, null, filtre).stream().findFirst().orElse(null);
default <T> T get(Class<T> clazz, Filter filtre, Object... args) {
return charger(clazz, null, filtre, args).stream().filter(Objects::nonNull).findFirst().orElse(null);
}

/**
Expand All @@ -84,7 +85,7 @@ default <T> T get(Class<T> clazz, Filter filtre) {
/**
* Supprime des objets de type T du stockage en utilisant un filtre.
*
* @param clazz la classe des objets à supprimer.
* @param clazz la classe des objets à supprimer.
* @param filtre le filtre à utiliser.
*/
<T> void supprimer(Class<T> clazz, Filter filtre);
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/fr/hashimiste/core/data/sql/SQLDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,7 @@
* @param <T> le type d'objet à décoder.
*/
public interface SQLDecoder<T> extends Decoder<ResultSet, T> {

default void apresCreation(T object, ResultSet statement) {
}
}
1 change: 1 addition & 0 deletions src/main/java/fr/hashimiste/core/dev/Debuggable.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
public interface Debuggable {
/**
* Récupère les informations de débogage.
*
* @return les informations de débogage.
*/
String getDebugInfo();
Expand Down
30 changes: 14 additions & 16 deletions src/main/java/fr/hashimiste/core/gui/JFrameTemplate.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
import fr.hashimiste.core.data.Stockage;
import fr.hashimiste.core.image.AppImage;
import fr.hashimiste.impl.gui.dev.DebugFrame;
import fr.hashimiste.impl.gui.theme.DebugTheme;
import fr.hashimiste.impl.gui.theme.DefaultTheme;
import fr.hashimiste.impl.gui.theme.CandyTheme;
import fr.hashimiste.impl.gui.theme.DarkTheme;

import fr.hashimiste.impl.gui.theme.DebugTheme;
import fr.hashimiste.impl.gui.theme.DefaultTheme;

import javax.swing.*;
import java.awt.*;
Expand Down Expand Up @@ -44,7 +43,7 @@ protected JFrameTemplate(JFrameTemplate fenetreParente) {
* Constructeur de JFrameTemplate.
*
* @param fenetreParente la fenêtre parente.
* @param dimension la taille de la fenêtre.
* @param dimension la taille de la fenêtre.
*/
protected JFrameTemplate(JFrameTemplate fenetreParente, Dimension dimension) {
this(fenetreParente, fenetreParente.fichierProperties, fenetreParente.stockage, dimension);
Expand All @@ -55,8 +54,8 @@ protected JFrameTemplate(JFrameTemplate fenetreParente, Dimension dimension) {
*
* @param fenetreParente la fenêtre parente.
* @param fichierProperties le fichier de propriétés.
* @param stockage le système de stockage des données.
* @param size la taille de la fenêtre.
* @param stockage le système de stockage des données.
* @param size la taille de la fenêtre.
*/
protected JFrameTemplate(JFrame fenetreParente, File fichierProperties, Stockage stockage, Dimension size) {
this.fenetreParente = fenetreParente;
Expand Down Expand Up @@ -95,7 +94,7 @@ public void changerFenetre(JFrame window) {
/**
* Crée un bouton qui, lorsqu'il est cliqué, change la fenêtre actuelle pour une autre.
*
* @param texte le texte du bouton.
* @param texte le texte du bouton.
* @param fenetre la nouvelle fenêtre.
* @return le bouton créé.
*/
Expand All @@ -106,7 +105,7 @@ protected JButton creerBoutton(String texte, JFrame fenetre) {
/**
* Crée un bouton avec une action lorsqu'il est cliqué.
*
* @param texte le texte du bouton.
* @param texte le texte du bouton.
* @param action l'action à exécuter lors du clic.
* @return le bouton créé.
*/
Expand All @@ -117,9 +116,9 @@ protected JButton creerBoutton(String texte, Runnable action) {
/**
* Crée un bouton avec une action différente selon le bouton de la souris utilisé pour le clic.
*
* @param texte le texte du bouton.
* @param cliqueDroit l'action à exécuter lors d'un clic droit.
* @param cliqueGauche l'action à exécuter lors d'un clic gauche.
* @param texte le texte du bouton.
* @param cliqueDroit l'action à exécuter lors d'un clic droit.
* @param cliqueGauche l'action à exécuter lors d'un clic gauche.
* @return le bouton créé.
*/
protected JButton creerBoutton(String texte, Runnable cliqueDroit, Runnable cliqueGauche) {
Expand Down Expand Up @@ -159,11 +158,10 @@ protected void appliquerTheme(JComponent... composants) {
button.setBackground(theme.getDisabledButtonColor());
}
button.setForeground(theme.getButtonTextColor());
} else if (component instanceof JLabel ) {
} else if (component instanceof JLabel) {
JLabel label = (JLabel) component;
label.setForeground(theme.getTextColor());
} else if (component instanceof JTextArea)
{
} else if (component instanceof JTextArea) {
JTextArea textArea = (JTextArea) component;
textArea.setForeground(theme.getTextColor());
}
Expand All @@ -189,9 +187,9 @@ protected void rechargerTheme() {
this.theme = DefaultTheme.INSTANCE;
if (properties.getProperty("theme").equals("debug")) {
this.theme = DebugTheme.INSTANCE;
}else if(properties.getProperty("theme").equals("candy")){
} else if (properties.getProperty("theme").equals("candy")) {
this.theme = CandyTheme.INSTANCE;
}else if(properties.getProperty("theme").equals("dark")){
} else if (properties.getProperty("theme").equals("dark")) {
this.theme = DarkTheme.INSTANCE;
}
appliquerTheme(composantStylise.toArray(new JComponent[0]));
Expand Down
3 changes: 0 additions & 3 deletions src/main/java/fr/hashimiste/core/jeu/Case.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public interface Case {
* Renvoie le voisin dans la direction indiquée.
*
* @param d la direction du voisin cherché.
*
* @return le voisin de la case dans la direction d.
*/
Case getVoisinCase(Direction d);
Expand All @@ -41,7 +40,6 @@ public interface Case {
* Renvoie l'île dans la direction indiquée.
*
* @param d la direction du voisin cherché.
*
* @return l'île voisine de la case dans la direction d.
*/
Ile getVoisinIle(Direction d);
Expand All @@ -50,7 +48,6 @@ public interface Case {
* Indique si on peut traverser la case dans la direction donnée.
*
* @param d la direction dans laquelle la grille est parcourue.
*
* @return -1 si on ne peut pas la traverser (pont perpendiculaire, ile complète, bordure), 0 si on peut continuer (pont parrallèle, case vide, ne devrait pas arriver), et un nombre entre 1 et 8 (île non complétée)
*/
int opParcours(Direction d);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/fr/hashimiste/core/jeu/CaseVide.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.hashimiste.core.jeu;

public interface CaseVide extends Case{
public interface CaseVide extends Case {
}
35 changes: 31 additions & 4 deletions src/main/java/fr/hashimiste/core/jeu/Grille.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import fr.hashimiste.core.data.Stockage;
import fr.hashimiste.core.data.sql.Identifiable;
import fr.hashimiste.core.utils.UnionIleString;
import fr.hashimiste.core.utils.UnionIleTechnique;
import fr.hashimiste.core.utils.Union;

import java.awt.*;
import java.util.List;
Expand All @@ -15,6 +14,7 @@
public interface Grille extends Identifiable {
/**
* Récupère une île à une position spécifique.
*
* @param x la position x de l'île.
* @param y la position y de l'île.
* @return l'île à la position spécifiée.
Expand All @@ -23,37 +23,43 @@ public interface Grille extends Identifiable {

/**
* Récupère la liste de toutes les îles.
*
* @return la liste de toutes les îles.
*/
List<Case> getIles();

/**
* Récupère les dimensions de la grille.
*
* @return les dimensions de la grille.
*/
Dimension getDimension();

/**
* Si une île doit figurer dans l'écran aventure
*
* @return vrai si l'île doit figurer dans l'écran aventure, faux sinon.
*/
boolean estAventure();

/**
* Récupère la liste de toutes les sauvegardes.
*
* @param stockage le système de stockage des données.
* @return la liste de toutes les sauvegardes.
*/
List<Sauvegarde> getSauvegardes(Stockage stockage);

/**
* Rafraîchit la liste des sauvegardes.
*
* @param stockage le système de stockage des données.
*/
void rafraichirSauvegardes(Stockage stockage);

/**
* Vérifie si la grille est correcte.
*
* @return vrai si la grille est correcte, faux sinon.
*/
boolean verification();
Expand All @@ -63,17 +69,38 @@ public interface Grille extends Identifiable {
*
* @return L'île où l'aide peut s'appliquer et un message d'aide pour résoudre la grille.
*/
UnionIleString aide();
Union<Ile, String> aide();

/**
* Parcourt la grille à la recherche de l'île sur laquelle on peut appliquer une technique.
*
* @return une Ile avec la technique qui peut s'y appliquer.
*/
UnionIleTechnique chercherIle();
Union<Ile, Technique> chercherIle();

/**
* Récupère la difficulté de la grille.
*
* @return la difficulté de la grille.
*/
Difficulte getDifficulte();

/**
* Indique si la grille est jouable.
*
* @return vrai si la grille est jouable, faux sinon.
*/
boolean estJouable();

/**
* Réinitialise la grille.
*/
void reset();

/**
* Charge une sauvegarde.
*
* @param sauvegarde la sauvegarde a chargé.
*/
void chargerSauvegarde(Sauvegarde sauvegarde);
}
Loading

0 comments on commit dd34c85

Please sign in to comment.