// Path: src/main/java/enums/Job.java
// public enum Job {
// 
//     ALCHIMISTE("job.alchimiste"),
//     BIJOUTIER("job.bijoutier"),
//     BRICOLEUR("job.bricoleur"),
//     BUCHERON("job.bucheron"),
//     CHASSEUR("job.chasseur"),
//     CORDOMAGE("job.cordomage"),
//     CORDONNIER("job.cordonnier"),
//     COSTUMAGE("job.costumage"),
//     FACONNEUR("job.faconneur"),
//     FORGEMAGE("job.forgemage"),
//     FORGERON("job.forgeron"),
//     JOAILLOMAGE("job.joaillomage"),
//     MINEUR("job.mineur"),
//     PAYSAN("job.paysan"),
//     PECHEUR("job.pecheur"),
//     SCULPTEMAGE("job.sculptemage"),
//     SCULPTEUR("job.sculpteur"),
//     TAILLEUR("job.tailleur"),
//     FACOMAGE("job.facomage");
// 
//     private static Map<String, Job> jobs;
//     private String name;
// 
//     Job(String name){this.name = name;}
// 
//     public String getName(){
//         return name;
//     }
// 
//     public String getLabel(Language lg){
//         return Translator.getLabel(lg, getName());
//     }
// 
//     /**
//      *
//      * @param name Nom du métier
//      * @return L'énumération Job correspondant à name
//      * @throws IllegalArgumentException si aucun Job n'est trouvé pour le nom proposé.
//      */
//     public static synchronized Job getJob(String name){
//         if (jobs == null){
//             jobs = new HashMap<>();
//             for(Job job : Job.values())
//                 jobs.put(job.getName(), job);
//         }
// 
//         if (jobs.containsKey(name))
//             return jobs.get(name);
//         throw new IllegalArgumentException("No job found for \"" + name + "\".");
//     }
// }
// 
// Path: src/main/java/enums/Language.java
// public enum Language {
// 
//     FR("Français", "FR"), EN("English", "EN"), ES("Español", "ES");
// 
//     private String name;
//     private String abrev;
// 
//     Language(String name, String abrev){
//         this.name = name;
//         this.abrev = abrev;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public String getAbrev() {
//         return abrev;
//     }
// 
//     @Override
//     public String toString(){
//         return name;
//     }
// }


import discord4j.common.util.Snowflake;
import discord4j.core.object.entity.Member;
import discord4j.core.object.presence.Presence;
import discord4j.core.object.presence.Status;
import discord4j.core.spec.EmbedCreateSpec;
import enums.Job;
import enums.Language;
import java.awt.Color;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import util.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import java.util.function.Consumer;
            jobs = new MultiKeySearch<>(NUMBER_FIELD);
            Connexion connexion = Connexion.getInstance();
            Connection connection = connexion.getConnection();

            try {
                PreparedStatement query = connection.prepareStatement(
                        "SELECT id_user, server_dofus, name_job, level FROM Job_User;");
                ResultSet resultSet = query.executeQuery();

                while (resultSet.next()) {
                    Long idUser = resultSet.getLong("id_user");
                    ServerDofus server = ServerDofus.getServersMap().get(resultSet.getString("server_dofus"));
                    Job job = Job.getJob(resultSet.getString("name_job"));
                    int level = resultSet.getInt("level");
                    jobs.add(new JobUser(idUser, server, job, level), idUser, server, job);
                }
            } catch (SQLException e) {
                Reporter.report(e);
                LOG.error("getJobs", e);
            }
        }

        return jobs;
    }

    /**
     * @param user Joueur de la guilde
     * @param server Serveur dofus
     * @return Liste des résultats de la recherche
     */
// Path: src/main/java/enums/Job.java
// public enum Job {
// 
//     ALCHIMISTE("job.alchimiste"),
//     BIJOUTIER("job.bijoutier"),
//     BRICOLEUR("job.bricoleur"),
//     BUCHERON("job.bucheron"),
//     CHASSEUR("job.chasseur"),
//     CORDOMAGE("job.cordomage"),
//     CORDONNIER("job.cordonnier"),
//     COSTUMAGE("job.costumage"),
//     FACONNEUR("job.faconneur"),
//     FORGEMAGE("job.forgemage"),
//     FORGERON("job.forgeron"),
//     JOAILLOMAGE("job.joaillomage"),
//     MINEUR("job.mineur"),
//     PAYSAN("job.paysan"),
//     PECHEUR("job.pecheur"),
//     SCULPTEMAGE("job.sculptemage"),
//     SCULPTEUR("job.sculpteur"),
//     TAILLEUR("job.tailleur"),
//     FACOMAGE("job.facomage");
// 
//     private static Map<String, Job> jobs;
//     private String name;
// 
//     Job(String name){this.name = name;}
// 
//     public String getName(){
//         return name;
//     }
// 
//     public String getLabel(Language lg){
//         return Translator.getLabel(lg, getName());
//     }
// 
//     /**
//      *
//      * @param name Nom du métier
//      * @return L'énumération Job correspondant à name
//      * @throws IllegalArgumentException si aucun Job n'est trouvé pour le nom proposé.
//      */
//     public static synchronized Job getJob(String name){
//         if (jobs == null){
//             jobs = new HashMap<>();
//             for(Job job : Job.values())
//                 jobs.put(job.getName(), job);
//         }
// 
//         if (jobs.containsKey(name))
//             return jobs.get(name);
//         throw new IllegalArgumentException("No job found for \"" + name + "\".");
//     }
// }
// 
// Path: src/main/java/enums/Language.java
// public enum Language {
// 
//     FR("Français", "FR"), EN("English", "EN"), ES("Español", "ES");
// 
//     private String name;
//     private String abrev;
// 
//     Language(String name, String abrev){
//         this.name = name;
//         this.abrev = abrev;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public String getAbrev() {
//         return abrev;
//     }
// 
//     @Override
//     public String toString(){
//         return name;
//     }
// }


// Path: src/main/java/data/JobUser.java
import discord4j.common.util.Snowflake;
import discord4j.core.object.entity.Member;
import discord4j.core.object.presence.Presence;
import discord4j.core.object.presence.Status;
import discord4j.core.spec.EmbedCreateSpec;
import enums.Job;
import enums.Language;
import java.awt.Color;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import util.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import java.util.function.Consumer;

            jobs = new MultiKeySearch<>(NUMBER_FIELD);
            Connexion connexion = Connexion.getInstance();
            Connection connection = connexion.getConnection();

            try {
                PreparedStatement query = connection.prepareStatement(
                        "SELECT id_user, server_dofus, name_job, level FROM Job_User;");
                ResultSet resultSet = query.executeQuery();

                while (resultSet.next()) {
                    Long idUser = resultSet.getLong("id_user");
                    ServerDofus server = ServerDofus.getServersMap().get(resultSet.getString("server_dofus"));
                    Job job = Job.getJob(resultSet.getString("name_job"));
                    int level = resultSet.getInt("level");
                    jobs.add(new JobUser(idUser, server, job, level), idUser, server, job);
                }
            } catch (SQLException e) {
                Reporter.report(e);
                LOG.error("getJobs", e);
            }
        }

        return jobs;
    }

    /**
     * @param user Joueur de la guilde
     * @param server Serveur dofus
     * @return Liste des résultats de la recherche
     */
    public static List<EmbedCreateSpec> getJobsFromUser(Member user, ServerDofus server, Language lg){