package projetMusee.backend;

import java.nio.file.Path;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;

/**
 * La classe JSONReader est chargée de lire le fichier JSON qui fait partie de
 * l'application.
 * Le fichier JSON se trouve à la racine du projet dans
 * "data-musees-de-france.json".
 *
 * @requires Le fichier "data-musees-de-france.json" doit exister à la racine du
 *           projet.
 * @ensures Retourne une chaîne de caractères contenant le contenu complet du
 *          fichier JSON.
 */
public class JSONReader {

    // Chemin relatif vers le fichier JSON
    private static final String CHEMIN_FICHIER_JSON = "data/musees-de-france.json";

    /**
     * Lit le contenu entier du fichier JSON.
     *
     * @return Une chaîne de caractères contenant le contenu JSON.
     * @throws IOException Si une erreur survient lors de la lecture du fichier.
     *
     * @requires Le fichier situé à {@code CHEMIN_FICHIER_JSON} est accessible en
     *           lecture.
     * @ensures Le contenu du fichier JSON est entièrement lu et retourné sous forme
     *          de chaîne.
     */
    public String lireJSON() throws IOException {
        Path path = Paths.get(CHEMIN_FICHIER_JSON);

        // Vérification que le fichier existe et peut être lu
        if (!Files.exists(path)) {
            throw new IOException("Le fichier JSON à l'emplacement " + CHEMIN_FICHIER_JSON + " n'existe pas.");
        }
        if (!Files.isReadable(path)) {
            throw new IOException("Le fichier JSON à l'emplacement " + CHEMIN_FICHIER_JSON + " n'est pas lisible.");
        }

        // Lecture du contenu du fichier JSON
        String contenuJSON = new String(Files.readAllBytes(path));

        // Vérification que le contenu n'est pas vide
        if (contenuJSON.trim().isEmpty()) {
            throw new IOException("Le fichier JSON est vide.");
        }
        return new String(Files.readAllBytes(Paths.get(CHEMIN_FICHIER_JSON)));
    }
}
