diff --git a/.gradle/7.4.1/executionHistory/executionHistory.bin b/.gradle/7.4.1/executionHistory/executionHistory.bin
index da38cf76dd7d8f7af877ded9734793742fee99d1..3ec6d61b9e3e6661d549201ad032ad332007b896 100644
Binary files a/.gradle/7.4.1/executionHistory/executionHistory.bin and b/.gradle/7.4.1/executionHistory/executionHistory.bin differ
diff --git a/.gradle/7.4.1/executionHistory/executionHistory.lock b/.gradle/7.4.1/executionHistory/executionHistory.lock
index e12e4471466a9db60b9a77b5b89c84cfc8ddf72b..de9f966e11c8c793bd0253c40b81cbc318f6d82c 100644
Binary files a/.gradle/7.4.1/executionHistory/executionHistory.lock and b/.gradle/7.4.1/executionHistory/executionHistory.lock differ
diff --git a/.gradle/7.4.1/fileHashes/fileHashes.bin b/.gradle/7.4.1/fileHashes/fileHashes.bin
index 6bc21b7470664518a30dabd73b29f409cbf2e04c..a1c4d395c6620c27093fad84e85c50ac6c654788 100644
Binary files a/.gradle/7.4.1/fileHashes/fileHashes.bin and b/.gradle/7.4.1/fileHashes/fileHashes.bin differ
diff --git a/.gradle/7.4.1/fileHashes/fileHashes.lock b/.gradle/7.4.1/fileHashes/fileHashes.lock
index 35142982ce3bc19b9c5200bb54d8aaa270ddbc86..991d54e0eb5a986c1d521afd9eba70590e5d719c 100644
Binary files a/.gradle/7.4.1/fileHashes/fileHashes.lock and b/.gradle/7.4.1/fileHashes/fileHashes.lock differ
diff --git a/.gradle/7.4.1/fileHashes/resourceHashesCache.bin b/.gradle/7.4.1/fileHashes/resourceHashesCache.bin
index 6db7433d9dcf8de302e7c9f39cda70156936bc3a..2f3444320456071f868d0f58f6a122564165e85a 100644
Binary files a/.gradle/7.4.1/fileHashes/resourceHashesCache.bin and b/.gradle/7.4.1/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 0aed6473e94379208a4825858c1fb46083d48308..74ecdeafc47073937af8ffb3299ac910a79cbdb0 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/bin/default/.gradle/7.4.1/executionHistory/executionHistory.bin b/bin/default/.gradle/7.4.1/executionHistory/executionHistory.bin
index a2e075a154554bd150cbdc160b046a35211063cd..e6d6a9c2d5adcd6dc2504d10ed89d250c3c9657b 100644
Binary files a/bin/default/.gradle/7.4.1/executionHistory/executionHistory.bin and b/bin/default/.gradle/7.4.1/executionHistory/executionHistory.bin differ
diff --git a/bin/default/.gradle/7.4.1/executionHistory/executionHistory.lock b/bin/default/.gradle/7.4.1/executionHistory/executionHistory.lock
index 7ed09f71d555d2005471bd1532829f87b27629de..494f9fb523d746e13f649372990ffff6ad95ed74 100644
Binary files a/bin/default/.gradle/7.4.1/executionHistory/executionHistory.lock and b/bin/default/.gradle/7.4.1/executionHistory/executionHistory.lock differ
diff --git a/bin/default/.gradle/7.4.1/fileHashes/fileHashes.bin b/bin/default/.gradle/7.4.1/fileHashes/fileHashes.bin
index 9952d9b912909d66a7f176c99b7aa353fa04b269..e2531934d8bb22c1c1ce4bc1c3846013ea5faf3c 100644
Binary files a/bin/default/.gradle/7.4.1/fileHashes/fileHashes.bin and b/bin/default/.gradle/7.4.1/fileHashes/fileHashes.bin differ
diff --git a/bin/default/.gradle/7.4.1/fileHashes/fileHashes.lock b/bin/default/.gradle/7.4.1/fileHashes/fileHashes.lock
index dadbc8cc50bc02e2626aacbb412a60f205a1592c..26c70595cdcc4a10fea77d374723aff3b204e703 100644
Binary files a/bin/default/.gradle/7.4.1/fileHashes/fileHashes.lock and b/bin/default/.gradle/7.4.1/fileHashes/fileHashes.lock differ
diff --git a/bin/default/.gradle/7.4.1/fileHashes/resourceHashesCache.bin b/bin/default/.gradle/7.4.1/fileHashes/resourceHashesCache.bin
index bb66dbd0527cdb40a4e3ee52a64ff3b23d7a2a61..6bf1331017707b9a463814fd451987d3d04520ac 100644
Binary files a/bin/default/.gradle/7.4.1/fileHashes/resourceHashesCache.bin and b/bin/default/.gradle/7.4.1/fileHashes/resourceHashesCache.bin differ
diff --git a/bin/default/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/bin/default/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 186deed7cc82f7a454ef2a668a9772ff9b7b8e72..25e5862b7b9d4fafbdd907a2edb9cb84d97f2141 100644
Binary files a/bin/default/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/bin/default/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/bin/default/src/com/uca/dao/EleveDAO.class b/bin/default/src/com/uca/dao/EleveDAO.class
index 2ca96308d5ce295a14d87b22bf77be79033401a3..f9db5f911f0e6bb690c5bff5bb3a8c188384c97f 100644
Binary files a/bin/default/src/com/uca/dao/EleveDAO.class and b/bin/default/src/com/uca/dao/EleveDAO.class differ
diff --git a/bin/default/src/com/uca/dao/GommetteAttribDAO.class b/bin/default/src/com/uca/dao/GommetteAttribDAO.class
index c05f81ffb078751101d3421eddcfe8d748a4ba73..9c07697ec1570e8ae374cf9d6298f61de29c7d06 100644
Binary files a/bin/default/src/com/uca/dao/GommetteAttribDAO.class and b/bin/default/src/com/uca/dao/GommetteAttribDAO.class differ
diff --git a/bin/default/src/com/uca/dao/GommetteDAO.class b/bin/default/src/com/uca/dao/GommetteDAO.class
index 9133201b84b274f533817a7fa4199fabb2ae2a7e..bf101a8744eb83637a5b94a8e753893366f59753 100644
Binary files a/bin/default/src/com/uca/dao/GommetteDAO.class and b/bin/default/src/com/uca/dao/GommetteDAO.class differ
diff --git a/bin/default/src/com/uca/dao/ProfDAO.class b/bin/default/src/com/uca/dao/ProfDAO.class
index 15f79f1cdf612ddfb91b36a677db98cfe10108cf..f9916e2a8479a043f0a2abc2178f0c3d8cd3af68 100644
Binary files a/bin/default/src/com/uca/dao/ProfDAO.class and b/bin/default/src/com/uca/dao/ProfDAO.class differ
diff --git a/bin/default/src/com/uca/dao/UserDAO.class b/bin/default/src/com/uca/dao/UserDAO.class
index 54d02952174b70d86f0e73f3ec120444bd1826f2..bc0901d0e5034efeff0bdf2b987197ba746f94cf 100644
Binary files a/bin/default/src/com/uca/dao/UserDAO.class and b/bin/default/src/com/uca/dao/UserDAO.class differ
diff --git a/build/classes/java/main/com/uca/dao/EleveDAO.class b/build/classes/java/main/com/uca/dao/EleveDAO.class
index 81ca49d6e230baf1929cdf8cbb68dc3612acb1ec..c2a83dca3d62149cb180dba3c1db65ff425553b9 100644
Binary files a/build/classes/java/main/com/uca/dao/EleveDAO.class and b/build/classes/java/main/com/uca/dao/EleveDAO.class differ
diff --git a/build/classes/java/main/com/uca/dao/GommetteAttribDAO.class b/build/classes/java/main/com/uca/dao/GommetteAttribDAO.class
index 5c720fd8f8310cfc3f929e1c5cd828a962adc9b1..9238d3cf279dc02231153ef0c2ad2064b3cccd6a 100644
Binary files a/build/classes/java/main/com/uca/dao/GommetteAttribDAO.class and b/build/classes/java/main/com/uca/dao/GommetteAttribDAO.class differ
diff --git a/build/classes/java/main/com/uca/dao/GommetteDAO.class b/build/classes/java/main/com/uca/dao/GommetteDAO.class
index c6fc7f8cd15043e4519403ec77f32aa0473e7ace..58b56f94c6c44f4a6864cd23faa720d6467ecf43 100644
Binary files a/build/classes/java/main/com/uca/dao/GommetteDAO.class and b/build/classes/java/main/com/uca/dao/GommetteDAO.class differ
diff --git a/build/classes/java/main/com/uca/dao/ProfDAO.class b/build/classes/java/main/com/uca/dao/ProfDAO.class
index 41697aa27ea9e9c73cf7231010debe1f8943c739..287bb9913288120e4c6e1ed0d9d00b75513db193 100644
Binary files a/build/classes/java/main/com/uca/dao/ProfDAO.class and b/build/classes/java/main/com/uca/dao/ProfDAO.class differ
diff --git a/build/classes/java/main/com/uca/dao/UserDAO.class b/build/classes/java/main/com/uca/dao/UserDAO.class
index 785a91557ff37742f79827dd412b639c05fd66d8..856338e7c2921ac4ee36d2a7ad0079539f454801 100644
Binary files a/build/classes/java/main/com/uca/dao/UserDAO.class and b/build/classes/java/main/com/uca/dao/UserDAO.class differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 772daee8e74c102f052abbea9b0cc4668c33d1f8..35ff3ea7519163e24b4eafa179a87061fc52b88b 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/com/uca/dao/EleveDAO.java b/src/com/uca/dao/EleveDAO.java
index 989aa414dc722419871928b8f757d4e393e62d2b..d2228ee536a166a9506b70cee6e560955078a903 100644
--- a/src/com/uca/dao/EleveDAO.java
+++ b/src/com/uca/dao/EleveDAO.java
@@ -7,29 +7,58 @@ import java.util.ArrayList;
 
 public class EleveDAO extends _Generic<EleveEntity> {
 
-    public ArrayList<EleveEntity> getAllEleves() {
-        ArrayList<EleveEntity> entities = new ArrayList<>();
+    public EleveEntity extract(ResultSet resultSet)
+    {
         try {
-            PreparedStatement preparedStatement = this.connect
-                    .prepareStatement("SELECT * FROM eleves ORDER BY id ASC;");
-            ResultSet resultSet = preparedStatement.executeQuery();
-            while (resultSet.next()) {
+            if (resultSet.next()) 
+            {
                 EleveEntity entity = new EleveEntity();
                 entity.setId(resultSet.getInt("id"));
                 entity.setFirstName(resultSet.getString("firstname"));
                 entity.setLastName (resultSet.getString("lastname"));
                 entity.setNaissance(resultSet.getString("dateNaissance"));
                 entity.setNomClasse(resultSet.getString("nomClasse"));
+                return entity;
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 
+    public ArrayList<EleveEntity> getAll() { return getAllEleves(); } // sorry Boris
+    public ArrayList<EleveEntity> getAllEleves() {
+        ArrayList<EleveEntity> entities = new ArrayList<>();
+        try {
+            PreparedStatement preparedStatement = this.connect
+                    .prepareStatement("SELECT * FROM eleves ORDER BY id ASC;");
+            ResultSet resultSet = preparedStatement.executeQuery();
+            
+            while(true)
+            {
+                EleveEntity entity = extract(resultSet);
+                if(entity == null) { return entities;}
                 entities.add(entity);
             }
         } catch (SQLException e) {
             e.printStackTrace();
         }
-
         return entities;
     }
 
+    public EleveEntity getById(int id)
+    {
+        EleveEntity entity = null;
+        try {
+            PreparedStatement stmt = this.connect.prepareStatement("SELECT * FROM eleves where id = ?;");
+            stmt.setInt(1, id);
+            return extract(stmt.executeQuery());
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return entity;
+    }
+
     @Override
     public EleveEntity create(EleveEntity obj) {
         try {
diff --git a/src/com/uca/dao/GommetteAttribDAO.java b/src/com/uca/dao/GommetteAttribDAO.java
index f54ca3ec309a7103e3da981e856ed50725ea159d..022319709dede3f6a543c0f7c7fd65e562285bf0 100644
--- a/src/com/uca/dao/GommetteAttribDAO.java
+++ b/src/com/uca/dao/GommetteAttribDAO.java
@@ -7,32 +7,59 @@ import java.util.ArrayList;
 
 public class GommetteAttribDAO extends _Generic<GommetteAttribEntity> {
 
-    public ArrayList<GommetteAttribEntity> getAllGommetteAttribs() {
-        ArrayList<GommetteAttribEntity> entities = new ArrayList<>();
+    public GommetteAttribEntity extract(ResultSet resultSet)
+    {
         try {
-            PreparedStatement preparedStatement = this.connect
-                    .prepareStatement("SELECT * FROM gommetteAttribs ORDER BY id ASC;");
-            ResultSet resultSet = preparedStatement.executeQuery();
-            while (resultSet.next()) {
+            if (resultSet.next()) 
+            {
                 GommetteAttribEntity entity = new GommetteAttribEntity();
                 entity.setId(resultSet.getInt("id"));
                 // entity.setCouleur TODO
                 entity.setIdEleve(resultSet.getInt("idEleve"));
                 entity.setIdProf(resultSet.getInt("idProf"));
-
                 entity.setIdGommette(resultSet.getInt("idGommette"));
                 // entity.setDateAttrib TODO
                 entity.setRaisonAttribution(resultSet.getString("raison"));
+                return entity;
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 
+    public ArrayList<GommetteAttribEntity> getAll() { return getAllGommetteAttribs(); }
+    public ArrayList<GommetteAttribEntity> getAllGommetteAttribs() {
+        ArrayList<GommetteAttribEntity> entities = new ArrayList<>();
+        try {
+            PreparedStatement preparedStatement = this.connect
+                    .prepareStatement("SELECT * FROM gommetteAttribs ORDER BY id ASC;");
+            ResultSet resultSet = preparedStatement.executeQuery();
+            while(true)
+            {
+                GommetteAttribEntity entity = extract(resultSet);
+                if(entity == null) { return entities;}
                 entities.add(entity);
             }
         } catch (SQLException e) {
             e.printStackTrace();
         }
-
         return entities;
     }
 
+    public GommetteAttribEntity getById(int id)
+    {
+        GommetteAttribEntity entity = null;
+        try {
+            PreparedStatement stmt = this.connect.prepareStatement("SELECT * FROM gommetteAttribs where id = ?;");
+            stmt.setInt(1, id);
+            return extract(stmt.executeQuery());
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return entity;
+    }
+
     @Override
     public GommetteAttribEntity create(GommetteAttribEntity obj) {
         try {
diff --git a/src/com/uca/dao/GommetteDAO.java b/src/com/uca/dao/GommetteDAO.java
index 2c97838924dda90003d3734622b19d3c19363621..8f67d680d748e5a83bdf60d068b47bf081836577 100644
--- a/src/com/uca/dao/GommetteDAO.java
+++ b/src/com/uca/dao/GommetteDAO.java
@@ -7,19 +7,36 @@ import java.util.ArrayList;
 
 public class GommetteDAO extends _Generic<GommetteEntity> {
 
-    public ArrayList<GommetteEntity> getAllGommettes() {
-        ArrayList<GommetteEntity> entities = new ArrayList<>();
+    public GommetteEntity extract(ResultSet resultSet)
+    {
         try {
-            PreparedStatement preparedStatement = this.connect
-                    .prepareStatement("SELECT * FROM gommettes ORDER BY id ASC;");
-            ResultSet resultSet = preparedStatement.executeQuery();
-            while (resultSet.next()) {
+            if (resultSet.next()) 
+            {
                 GommetteEntity entity = new GommetteEntity();
                 entity.setId(resultSet.getInt("id"));
                 // entity.setCouleur TODO
                 entity.setNom(resultSet.getString("nom"));
                 entity.setDescription(resultSet.getString("description"));
+                return entity;
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 
+    public ArrayList<GommetteEntity> getAll() { return getAllGommettes(); }
+    public ArrayList<GommetteEntity> getAllGommettes() {
+        ArrayList<GommetteEntity> entities = new ArrayList<>();
+        try {
+            PreparedStatement preparedStatement = this.connect
+                    .prepareStatement("SELECT * FROM gommettes ORDER BY id ASC;");
+            ResultSet resultSet = preparedStatement.executeQuery();
+            
+            while(true)
+            {
+                GommetteEntity entity = extract(resultSet);
+                if(entity == null) { return entities;}
                 entities.add(entity);
             }
         } catch (SQLException e) {
@@ -44,6 +61,19 @@ public class GommetteDAO extends _Generic<GommetteEntity> {
         return obj;
     }
 
+    public GommetteEntity getById(int id)
+    {
+        GommetteEntity entity = null;
+        try {
+            PreparedStatement stmt = this.connect.prepareStatement("SELECT * FROM gommettes where id = ?;");
+            stmt.setInt(1, id);
+            return extract(stmt.executeQuery());
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return entity;
+    }
+
     @Override
     public void delete(GommetteEntity obj) {
         delete(obj.getId());
diff --git a/src/com/uca/dao/ProfDAO.java b/src/com/uca/dao/ProfDAO.java
index 7937e84baa209bf98028337cbeca64d7566fa0fe..9caccba9123dc037203eb8e9d79df2bf3265d5b9 100644
--- a/src/com/uca/dao/ProfDAO.java
+++ b/src/com/uca/dao/ProfDAO.java
@@ -7,17 +7,35 @@ import java.util.ArrayList;
 
 public class ProfDAO extends _Generic<ProfEntity> {
 
-    public ArrayList<ProfEntity> getAllProfs() {
-        ArrayList<ProfEntity> entities = new ArrayList<>();
+    public ProfEntity extract(ResultSet resultSet)
+    {
         try {
-            PreparedStatement preparedStatement = this.connect.prepareStatement("SELECT * FROM profs ORDER BY id ASC;");
-            ResultSet resultSet = preparedStatement.executeQuery();
-            while (resultSet.next()) {
+            if (resultSet.next()) 
+            {
                 ProfEntity entity = new ProfEntity();
                 entity.setId(resultSet.getInt("id"));
                 entity.setFirstName(resultSet.getString("firstName"));
                 entity.setLastName(resultSet.getString("lastName"));
                 entity.setUserName(resultSet.getString("userName"));
+                return entity;
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public ArrayList<ProfEntity> getAll() { return getAllProfs(); }
+    public ArrayList<ProfEntity> getAllProfs() {
+        ArrayList<ProfEntity> entities = new ArrayList<>();
+        try {
+            PreparedStatement preparedStatement = this.connect.prepareStatement("SELECT * FROM profs ORDER BY id ASC;");
+            ResultSet resultSet = preparedStatement.executeQuery();
+            
+            while(true)
+            {
+                ProfEntity entity = extract(resultSet);
+                if(entity == null) { return entities;}
                 entities.add(entity);
             }
         } catch (SQLException e) {
@@ -27,6 +45,19 @@ public class ProfDAO extends _Generic<ProfEntity> {
         return entities;
     }
 
+    public ProfEntity getById(int id)
+    {
+        ProfEntity entity = null;
+        try {
+            PreparedStatement stmt = this.connect.prepareStatement("SELECT * FROM profs where id = ?;");
+            stmt.setInt(1, id);
+            return extract(stmt.executeQuery());
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return entity;
+    }
+
     @Override
     public ProfEntity create(ProfEntity obj) {
         try {
diff --git a/src/com/uca/dao/UserDAO.java b/src/com/uca/dao/UserDAO.java
index a50e117d95bc479040b777944083f12612174057..fd0dbc598d1e295ae4f11c79adb0b75dbd090609 100644
--- a/src/com/uca/dao/UserDAO.java
+++ b/src/com/uca/dao/UserDAO.java
@@ -7,26 +7,55 @@ import java.util.ArrayList;
 
 public class UserDAO extends _Generic<UserEntity> {
 
-    public ArrayList<UserEntity> getAllUsers() {
-        ArrayList<UserEntity> entities = new ArrayList<>();
+    public UserEntity extract(ResultSet resultSet)
+    {
         try {
-            PreparedStatement preparedStatement = this.connect.prepareStatement("SELECT * FROM users ORDER BY id ASC;");
-            ResultSet resultSet = preparedStatement.executeQuery();
-            while (resultSet.next()) {
+            if (resultSet.next()) 
+            {
                 UserEntity entity = new UserEntity();
                 entity.setId(resultSet.getInt("id"));
                 entity.setFirstName(resultSet.getString("firstname"));
                 entity.setLastName(resultSet.getString("lastname"));
+                return entity;
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+    
+    public ArrayList<UserEntity> getAll() { return getAllUsers(); }
+    public ArrayList<UserEntity> getAllUsers() {
+        ArrayList<UserEntity> entities = new ArrayList<>();
+        try {
+            PreparedStatement preparedStatement = this.connect.prepareStatement("SELECT * FROM users ORDER BY id ASC;");
+            ResultSet resultSet = preparedStatement.executeQuery();
 
+            while(true)
+            {
+                UserEntity entity = extract(resultSet);
+                if(entity == null) { return entities;}
                 entities.add(entity);
             }
         } catch (SQLException e) {
             e.printStackTrace();
         }
-
         return entities;
     }
 
+    public UserEntity getById(int id)
+    {
+        UserEntity entity = null;
+        try {
+            PreparedStatement stmt = this.connect.prepareStatement("SELECT * FROM users where id = ?;");
+            stmt.setInt(1, id);
+            return extract(stmt.executeQuery());
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        return entity;
+    }
+
     @Override
     public UserEntity create(UserEntity obj) {
         try {