<commit_before>package polytheque.model.DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


/**
 * Classe abstraite permettant de gérer la connexion à la base de données (BDD)
 */
public abstract class DAO {

	/**
	 * Pilote JDBC à utiliser pour se connecter à la BDD (ici mySQL)
	 */
	private String driver;

	/**
	 * URL utilisée par JDBC pour accéder à la BDD
	 */
	private String url;
	
	/**
	 * Nom d'utilisateur à utiliser pour se connecter à la BDD
	 */
	private String username;
	
	/**
	 * Mot de passe pour se connecter à la BDD
	 */
	private String password;

	/**
	 * Attribut pour la lecture de la configuration dans le fichier config.xml
	 */
	// private XMLConfiguration configReader;
	
	/**
	 * Attribut représentant la connexion à la BDD.
	 * Trois états possibles :
	 * <ul>
	 * 		<li> Null : connexion non existante </li>
	 * 		<li> Fermée : connexion existante mais inutilisable </li>
	 * 		<li> Ouverte : connexion existante et exploitable </li>
	 * </ul>
	 */
	protected static Connection connection;

	/**
	 * Vérifie si le pilote JDBC spécifié existe bien dans l'application
	 * 
	 * @return true 
	 * 				le pilote JDBC est bien présent dans l'application
	 * @return false 
	 * 				le pilote JDBC n'a pas été trouvé
	 */
	public boolean checkDriver() {
		try {
			Class.forName(driver);
			return true;
		} catch (ClassNotFoundException exception) {
			return false;
		}
	}

	/**
	 * Ouvre une connexion à la base de données grâce à l'URL spécifiée
	 */
	protected void connect() {
		try {
			if (connection == null || connection.isClosed()) {
				connection = DriverManager.getConnection(url, username, password);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * Ferme la connexion à la base de données
	 */
	protected void disconnect() {
		try {
			if (connection != null && !connection.isClosed()) {
				connection.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}<commit_msg>Ajout d'une méthode pour récupérer la config depuis un fichier XML<commit_after>package polytheque.model.DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;

/**
 * Classe abstraite permettant de gérer la connexion à la base de données (BDD)
 */
public abstract class DAO {

	/**
	 * Pilote JDBC à utiliser pour se connecter à la BDD (ici mySQL)
	 */
	private String driver;

	/**
	 * URL utilisée par JDBC pour accéder à la BDD
	 */
	private String url;
	
	/**
	 * Nom d'utilisateur à utiliser pour se connecter à la BDD
	 */
	private String username;
	
	/**
	 * Mot de passe pour se connecter à la BDD
	 */
	private String password;
	
	/**
	 * Attribut représentant la connexion à la BDD.
	 * Trois états possibles :
	 * <ul>
	 * 		<li> Null : connexion non existante </li>
	 * 		<li> Fermée : connexion existante mais inutilisable </li>
	 * 		<li> Ouverte : connexion existante et exploitable </li>
	 * </ul>
	 */
	protected static Connection connection;

	/**
	 * Fichier de configuration
	 */
	private static final String CONFIG_FILE = "config.xml";
	
	/**
	 * Attribut pour la lecture de la configuration dans le fichier config.xml
	 */
	private XMLConfiguration configReader;
	
	/**
	 * Vérifie si le pilote JDBC spécifié existe bien dans l'application
	 * 
	 * @return true 
	 * 				le pilote JDBC est bien présent dans l'application
	 * @return false 
	 * 				le pilote JDBC n'a pas été trouvé
	 */
	public boolean checkDriver() {
		try {
			Class.forName(driver);
			return true;
		} catch (ClassNotFoundException exception) {
			return false;
		}
	}

	/**
	 * Ouvre une connexion à la base de données grâce à l'URL spécifiée
	 */
	protected void connect() {
		try {
			if (connection == null || connection.isClosed()) {
				connection = DriverManager.getConnection(url, username, password);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * Ferme la connexion à la base de données
	 */
	protected void disconnect() {
		try {
			if (connection != null && !connection.isClosed()) {
				connection.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public void readConfig(String configFile) {
		try {
			configReader = new XMLConfiguration(configFile);
			this.driver = configReader.getString("driver");
			this.url = configReader.getString("url");
			this.username = configReader.getString("username");
			this.password = configReader.getString("password");
		} catch (ConfigurationException e) {
			e.printStackTrace();
		}
		
	}

}
{'fraction_non_alphanumeric': 0.10555674747908174, 'fraction_numerical': 0.0, 'mean_word_length': 3.1699463327370303, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 3}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '403361', 'n_tokens_mistral': 1667, 'n_tokens_neox': 1462, 'n_words': 477}