diff --git a/src/fr/iutfbleau/papillon/ColorIcon.java b/src/fr/iutfbleau/papillon/ColorIcon.java new file mode 100644 index 0000000..5def2fc --- /dev/null +++ b/src/fr/iutfbleau/papillon/ColorIcon.java @@ -0,0 +1,35 @@ +import javax.swing.Icon; +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; + +public class ColorIcon implements Icon { + + private final Color couleur; + private final int largeur; + private final int hauteur; + + public ColorIcon(Color couleur, int largeur, int hauteur) { + this.couleur = couleur; + this.largeur = largeur; + this.hauteur = hauteur; + } + + @Override + public int getIconWidth() { + return largeur; + } + + @Override + public int getIconHeight() { + return hauteur; + } + + @Override + public void paintIcon(Component c, Graphics g, int x, int y) { + g.setColor(couleur); + g.fillRect(x, y, largeur, hauteur); + g.setColor(Color.DARK_GRAY); + g.drawRect(x, y, largeur - 1, hauteur - 1); + } +} diff --git a/src/fr/iutfbleau/papillon/model/BaseDeDonnees.java b/src/fr/iutfbleau/papillon/model/BaseDeDonnees.java new file mode 100644 index 0000000..092f394 --- /dev/null +++ b/src/fr/iutfbleau/papillon/model/BaseDeDonnees.java @@ -0,0 +1,104 @@ +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + +public class BaseDeDonnees { + + private static final String URL = "jdbc:mariadb://dwarves.iut-fbleau.fr:3306/yolou"; + private static final String USER = "yolou"; + private static final String PASS = "serikhaneyolou"; + + /** Connexion */ + public static Connection getConnexion() throws SQLException { + try { + Class.forName("org.mariadb.jdbc.Driver"); + } catch (ClassNotFoundException e) { + System.out.println("Erreur : pilote MariaDB non trouvé !"); + } + return DriverManager.getConnection(URL, USER, PASS); + } + + /** Ajout d’un rappel (INSERT) */ + public static int ajouter(Rappel r) throws SQLException { + String sql = "INSERT INTO rappel(titre, contenu, theme, rang) VALUES (?, ?, ?, ?)"; + Connection cnx = getConnexion(); + PreparedStatement pst = cnx.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); + + pst.setString(1, r.getTitre()); + pst.setString(2, r.getContenu()); + pst.setString(3, r.getTheme()); + pst.setInt(4, r.getRang()); + pst.executeUpdate(); + + ResultSet rs = pst.getGeneratedKeys(); + int id = 0; + if (rs.next()) { + id = rs.getInt(1); + r.setId(id); + } + + rs.close(); + pst.close(); + cnx.close(); + return id; + } + + /** Liste des rappels */ + public static List lister() throws SQLException { + String sql = "SELECT id, titre, contenu, theme, rang FROM rappel ORDER BY rang ASC, id ASC"; + List res = new ArrayList<>(); + + Connection cnx = getConnexion(); + PreparedStatement pst = cnx.prepareStatement(sql); + ResultSet rs = pst.executeQuery(); + + while (rs.next()) { + Rappel r = new Rappel( + rs.getInt("id"), + rs.getString("titre"), + rs.getString("contenu"), + rs.getString("theme"), + rs.getInt("rang") + ); + res.add(r); + } + + rs.close(); + pst.close(); + cnx.close(); + return res; + } + + /** Modification d’un rappel (UPDATE) */ + public static int modifier(int id, Rappel r) throws SQLException { + String sql = "UPDATE rappel SET titre=?, contenu=?, theme=?, rang=? WHERE id=?"; + Connection cnx = getConnexion(); + PreparedStatement pst = cnx.prepareStatement(sql); + + pst.setString(1, r.getTitre()); + pst.setString(2, r.getContenu()); + pst.setString(3, r.getTheme()); + pst.setInt(4, r.getRang()); + pst.setInt(5, id); + + int rows = pst.executeUpdate(); + + pst.close(); + cnx.close(); + return rows; + } + + /** Suppression d’un rappel (DELETE) */ + public static int supprimer(int id) throws SQLException { + String sql = "DELETE FROM rappel WHERE id=?"; + Connection cnx = getConnexion(); + PreparedStatement pst = cnx.prepareStatement(sql); + + pst.setInt(1, id); + int rows = pst.executeUpdate(); + + pst.close(); + cnx.close(); + return rows; + } +} diff --git a/src/fr/iutfbleau/papillon/model/GestionRappel.java b/src/fr/iutfbleau/papillon/model/GestionRappel.java new file mode 100644 index 0000000..eff8ddc --- /dev/null +++ b/src/fr/iutfbleau/papillon/model/GestionRappel.java @@ -0,0 +1,60 @@ +import java.util.List; + +public class GestionRappel { + + public List lister() throws Exception { + return BaseDeDonnees.lister(); + } + + public int ajouter(Rappel r) throws Exception { + return BaseDeDonnees.ajouter(r); + } + + public int modifierParId(int id, Rappel r) throws Exception { + return BaseDeDonnees.modifier(id, r); + } + + public int supprimerParId(int id) throws Exception { + return BaseDeDonnees.supprimer(id); + } + + // === petit main pour test rapide === + public static void main(String[] args) { + try { + GestionRappel g = new GestionRappel(); + + // Ajouter + Rappel r = new Rappel("Acheter du café", "avant 17h", "Urgent", 1); + int id = g.ajouter(r); + System.out.println("Ajouté : " + id); + + // Lister + System.out.println("\nListe des rappels :"); + for (Rappel x : g.lister()) { + System.out.println(" - " + x); + } + + // Modifier + r.setTitre("Acheter du café (bio)"); + r.setRang(3); + + g.modifierParId(r.getId(), r); + System.out.println("\nAprès modification :"); + + for (Rappel x : g.lister()) { + System.out.println(" - " + x); + } + + // Supprimer + // g.supprimerParId(r.getId()); + // System.out.println("\nAprès suppression :"); + + // for (Rappel x : g.lister()) { + // System.out.println(" - " + x); + + // } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/fr/iutfbleau/papillon/model/RappelM.java b/src/fr/iutfbleau/papillon/model/RappelM.java new file mode 100644 index 0000000..e2e51bc --- /dev/null +++ b/src/fr/iutfbleau/papillon/model/RappelM.java @@ -0,0 +1,67 @@ +public class Rappel { + private int id; + private String titre; + private String contenu; + private String theme; + private int rang; + + public Rappel(String titre, String contenu, String theme, int rang) { + this(0, titre, contenu, theme, rang); + } + + public Rappel(int id, String titre, String contenu, String theme, int rang) { + this.id = id; + this.titre = titre; + this.contenu = contenu; + this.theme = theme; + this.rang = rang; + } + + public int getId() { + return id; + } + public void setId(int id) { + this.id = id; + } + + public String getTitre() { + return titre; + } + public void setTitre(String titre) { + this.titre = titre; + } + + public String getContenu() { + return contenu; + } + public void setContenu(String contenu) { + this.contenu = contenu; + } + + public String getTheme() { + return theme; + } + public void setTheme(String theme) { + this.theme = theme; + } + + public int getRang() { + return rang; + } + public void setRang(int rang) { + this.rang = rang; + } + + @Override + public String toString() { + @Override + public String toString() { + String texte = "[" + id + "] " + titre + " | " + theme + " | rang=" + rang + " | "; + if (contenu != null) { + texte = texte + contenu; + } + return texte; + } + +} +} \ No newline at end of file