Marc Baloup
55748b0d5e
- tous les appels à printStackTrace() sont supprimés et remplacés par Log.severe() - Ajout de de l'historiqe de ping et de login kick - AbstractConfig et AbstractConfigManager maintenant dans PandacubeUtil pour être utilisé par tous les plugins (évite code en double) - Connexion MySQL supporte UTF-8 (mb4) - Correction de Quelques erreurs lorsqu'une table SQL n'est pas initialisée avant son utilisation - Correction de bugs lors de le gestion des clé étrangères dans l'ORM.
134 lines
3.7 KiB
Java
134 lines
3.7 KiB
Java
package fr.pandacube.java.util.config;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.FileReader;
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
import fr.pandacube.java.util.Log;
|
|
/**
|
|
* Classe chargeant en mémoire un fichier de configuration ou un dossier donné
|
|
* @author Marc Baloup
|
|
*
|
|
*/
|
|
public abstract class AbstractConfig {
|
|
|
|
/**
|
|
* Correspond au dossier ou au fichier de configuration traité par la sous-classe
|
|
* courante de {@link AbstractConfig}
|
|
*/
|
|
protected File configFile;
|
|
|
|
/**
|
|
* @param fileOrDirName le nom du fichier ou du dossier correspondant à la sous-classe de {@link AbstractConfig}
|
|
* @param isDir <code>true</code> si il s'agit d'un dossier, <code>false</code> sinon
|
|
* @throws IOException si le fichier est impossible à créer
|
|
*/
|
|
public AbstractConfig(File configDir, String fileOrDirName, FileType type) throws IOException {
|
|
configFile = new File(configDir, fileOrDirName);
|
|
if (type == FileType.DIR)
|
|
configFile.mkdir();
|
|
else
|
|
configFile.createNewFile();
|
|
}
|
|
|
|
/**
|
|
* Retourne toutes les lignes d'un fichier donné
|
|
* @param ignoreEmpty <code>true</code> si on doit ignorer les lignes vides
|
|
* @param ignoreHashtagComment <code>true</code> si on doit ignorer les lignes commentés (commençant par un #)
|
|
* @param trimOutput <code>true</code> si on doit appeller la méthode String.trim() sur chaque ligne retournée
|
|
* @param f le fichier à lire
|
|
* @return la liste des lignes utiles
|
|
* @throws IOException
|
|
*/
|
|
protected List<String> getFileLines(boolean ignoreEmpty, boolean ignoreHashtagComment, boolean trimOutput, File f) throws IOException {
|
|
if (!f.isFile())
|
|
return null;
|
|
|
|
BufferedReader reader = new BufferedReader(new FileReader(f));
|
|
|
|
List<String> lines = new ArrayList<String>();
|
|
|
|
String line;
|
|
while ((line = reader.readLine()) != null) {
|
|
String trimmedLine = line.trim();
|
|
|
|
if (ignoreEmpty && trimmedLine.equals(""))
|
|
continue;
|
|
|
|
if (ignoreHashtagComment && trimmedLine.startsWith("#"))
|
|
continue;
|
|
|
|
if (trimOutput)
|
|
lines.add(trimmedLine);
|
|
else
|
|
lines.add(line);
|
|
}
|
|
|
|
|
|
reader.close();
|
|
|
|
return lines;
|
|
}
|
|
|
|
|
|
/**
|
|
* Retourne toutes les lignes du fichier de configuration
|
|
* @param ignoreEmpty <code>true</code> si on doit ignorer les lignes vides
|
|
* @param ignoreHashtagComment <code>true</code> si on doit ignorer les lignes commentés (commençant par un #)
|
|
* @param trimOutput <code>true</code> si on doit appeller la méthode String.trim() sur chaque ligne retournée
|
|
* @return la liste des lignes utiles
|
|
* @throws IOException
|
|
*/
|
|
protected List<String> getFileLines(boolean ignoreEmpty, boolean ignoreHashtagComment, boolean trimOutput) throws IOException {
|
|
return getFileLines(ignoreEmpty, ignoreHashtagComment, trimOutput, configFile);
|
|
}
|
|
|
|
|
|
|
|
protected List<File> getFileList() {
|
|
if (!configFile.isDirectory())
|
|
return null;
|
|
|
|
return Arrays.asList(configFile.listFiles());
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* Découpe une chaine de caractère contenant une série de noeuds
|
|
* de permissions séparés par des point-virgules et la retourne sous forme d'une liste.
|
|
* @param perms la chaine de permissions à traiter
|
|
* @return <code>null</code> si le paramètre est nulle ou si <code>perms.equals("*")</code>, ou alors la chaine splittée.
|
|
*/
|
|
public static List<String> splitPermissionsString(String perms) {
|
|
if (perms == null || perms.equals("*"))
|
|
return null;
|
|
else
|
|
return Arrays.asList(perms.split(";"));
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected void warning(String message) {
|
|
Log.warning("Erreur dans la configuration de '"+configFile.getName()+"' : "+message);
|
|
}
|
|
|
|
|
|
|
|
|
|
protected enum FileType {
|
|
FILE, DIR
|
|
}
|
|
|
|
}
|