1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
   | 	/**
         * Fusionne tous les fichiers xml présent dans le répertoire shemasNavigation dans le fichier schemaNavigationGenere.xml.
         * Les fichiers xml à fusionnés doivent être de la forme CO*.xml
         * @throws IOException
         * @throws ValeurNullException
         */
	public static void creerSchemaNavigation() throws IOException, ValeurNullException {
 
		File repShemasCarto = new File(Constante.getProjectHome()+"/xml/"+Constante.URL_REPERTOIRE_XML_CARTOGRAPHIE);
		File [] lesSchemasNavigation = repShemasCarto.listFiles ();
 
		if (lesSchemasNavigation != null){
 
			PrintWriter printWriter = null;
			FileInputStream fileInputStream = null;
			BufferedReader buffer = null;
			try{
				// On supprime le fichier XML qui sera la fusion de tous les fichiers si il existe
				File f  = new File(Constante.getProjectHome()+"/xml/"+Constante.NOM_FICHIER_XML_SCHEMA_NAVIGATION_GENEREE);
				if( f.exists() ) {
					f.delete();
				}
 
				// On ouvre l'ouvre en écriture
				File fichierDest = new File(Constante.getProjectHome()+"/xml/"+Constante.NOM_FICHIER_XML_SCHEMA_NAVIGATION_GENEREE);
				printWriter = new PrintWriter(fichierDest.getAbsolutePath(), "UTF-8"); 
 
				// On ajoute la balise de début
				printWriter.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
				printWriter.println("<!DOCTYPE schemaNavigation SYSTEM \"./schemaNavigation.dtd\" >");
				printWriter.println();
				printWriter.println("<!-- Fichier XML auto-généré -->");
				printWriter.println("<!-- Ne pas modifier directement : modifier les fichier CO*.xml du répertoire " + Constante.URL_REPERTOIRE_XML_CARTOGRAPHIE + " et regénérer le fichier " + Constante.NOM_FICHIER_XML_SCHEMA_NAVIGATION_GENEREE + " -->");
				printWriter.println();
				printWriter.println();
				printWriter.println("<schemaNavigation>");
 
				for (File unSchemaNavigation:lesSchemasNavigation) {
					if (unSchemaNavigation.isFile() && unSchemaNavigation.getName().startsWith("CO") && unSchemaNavigation.getName().endsWith(".xml")) {
						Debug.print(" |-> Copie de " + unSchemaNavigation.getName(), nomClasse);
						fileInputStream = new FileInputStream(unSchemaNavigation.getAbsolutePath());
						buffer = new BufferedReader(new InputStreamReader(fileInputStream, "UTF-8"));
 
						try {
							String ligne;
							while ((ligne = buffer.readLine()) != null) {
								printWriter.println(ligne);
							}
						}
						finally {
							buffer.close();
							fileInputStream.close();
						}
					} else {
						Debug.print(unSchemaNavigation.getName() + " a été ignoré.", nomClasse);
					}
				}
 
				// On ajoute la balise de fin
				printWriter.println("</schemaNavigation>");
 
				Debug.print(String.valueOf(lesSchemasNavigation.length) + " fichiers ont été copié dans " + Constante.NOM_FICHIER_XML_SCHEMA_NAVIGATION_GENEREE + ".", nomClasse);
 
			}catch(IOException ex){
				ex.printStackTrace();
			}finally{
				if(printWriter != null){
					printWriter.flush();
					printWriter.close();
				}
			}			
        } else {
        	throw new ValeurNullException("Erreur de lecture du fichier : " + repShemasCarto);
        }
	} | 
Partager