/** * 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; }