/**
   * Récupérer la liste des paramètres
   *
   * @return liste des paramètres
   */
  protected HashMap<String, String> getParametres() {
    // Initialiser la liste des parametres
    HashMap<String, String> parametres = new HashMap<String, String>();

    // Parcourir tous les paramètres
    for (Entry<String, String> parametre : this.parametres.entrySet()) {
      // Extraire la valeur
      String valeur = parametre.getValue();

      // Transformer la valeur si nécéssaire
      if (valeur != null) {
        valeur = ThemeRessourceAbstract.transform(valeur, this.parametres);
      }

      // Ajouter le paramètre
      parametres.put(parametre.getKey(), valeur);
    }

    // Retourner les paramètres
    return parametres;
  }
  /**
   * Créer les ressources associées à un thème
   *
   * @param theme thème
   * @param refresh autoriser la mise à jour automatique des ressources ?
   * @return liste des ressources du thème
   * @throws ContestOrgOutException
   */
  @SuppressWarnings("rawtypes")
  public static ArrayList<ThemeRessourceAbstract> getRessources(
      InfosModelTheme theme, boolean refresh) throws ContestOrgWarningException {
    // Vérifier si le thème existe
    if (!(new File(theme.getChemin()).exists())) {
      throw new ContestOrgWarningException(
          "Le thème \"" + theme.getNom() + "\" n'a pas été retrouvé.");
    }

    // Initialiser les ressources
    ArrayList<ThemeRessourceAbstract> ressources = new ArrayList<ThemeRessourceAbstract>();

    // Ajouter les ressources
    Element configuration = ConfigurationTheme.getConfiguration(theme.getChemin());
    if (configuration.getChild("fichiers") != null) {
      List listeFichiers = configuration.getChild("fichiers").getChildren("fichier");
      Iterator i = listeFichiers.iterator();
      if (!i.hasNext()) {
        throw new ContestOrgWarningException(
            "Aucun fichier n'a été défini dans le fichier de configuration du thème.");
      } else {
        while (i.hasNext()) {
          // Récupérer le fichier dans le DOM
          Element file = (Element) i.next();

          // Récupérer les paramètres du fichier
          String source = file.getAttributeValue("source");
          String cible = file.getAttributeValue("cible");
          if (cible == null) {
            cible = source;
          }
          boolean principal =
              file.getAttributeValue("principal") != null
                  && file.getAttributeValue("principal").equals("oui");
          String transformation = file.getAttributeValue("transformation");

          // Utiliser la cible définie par l'utilisateur si nécéssaire
          if (theme.getFichiers().containsKey(file.getAttributeValue("id"))) {
            cible = theme.getFichiers().get(file.getAttributeValue("id"));
          }

          // Transformer les paramètres spéciaux dans la cible
          cible = ThemeRessourceAbstract.transform(cible, theme.getParametres());

          // Récupérer le fichier associé à la ressource
          File fichier = new File(theme.getChemin() + File.separator + source);

          // Créer et ajouter la ressource
          switch (Tools.stringCase(
              transformation,
              InfosThemeFichier.TRANSFORMATION_XSLT,
              InfosThemeFichier.TRANSFORMATION_FOP)) {
            case 0: // Ressource XSLT
              ressources.add(
                  new ThemeRessourceXSLT(
                      cible, principal, theme.getParametres(), theme.getFichiers(), fichier));
              break;
            case 1: // Ressource FOP
              ressources.add(
                  new ThemeRessourceFOP(
                      cible, principal, theme.getParametres(), theme.getFichiers(), fichier));
              break;
            default: // Ressource fichier
              ressources.add(
                  new ThemeRessourceFichier(
                      cible, principal, theme.getParametres(), theme.getFichiers(), fichier));
          }
        }
      }
    } else {
      // Erreur
      throw new ContestOrgWarningException(
          "Aucun fichier n'a été défini dans le fichier de configuration du thème.");
    }

    // Autoriser la mise à jour automatique si nécéssaire
    if (refresh) {
      for (ThemeRessourceAbstract ressource : ressources) {
        ressource.setAutoRefresh();
      }
    }

    // Retourner les ressources
    return ressources;
  }