private void GuardaMapa(string elArchivo) { try { miManejadorDeMapa.GuardaEnFormatoPolish( elArchivo, "Generado por " + VentanaDeAcerca.AssemblyName + " " + VentanaDeAcerca.AssemblyVersion + " - " + VentanaDeAcerca.AssemblyDescription); // Deshabilita el menu de Guardar porque se acaba de guardar el mapa. miMenuGuardar.Enabled = false; } catch (Exception e) { Programa.MuestraExcepción("Error guardando archivo " + elArchivo, e); } }
static void Main(string[] losArgumentos) { // Procesa los argumentos. Argumentos argumentos = new Argumentos(); if (!argumentos.ParseAndContinue(losArgumentos)) { return; } if (argumentos.DirectorioDeEntrada == null) { Console.WriteLine( argumentos.GetUsage("ERROR: Falta directorio de entrada.")); Environment.Exit(1); } if (argumentos.DirectorioDeSalida == null) { Console.WriteLine( argumentos.GetUsage("ERROR: Falta directorio de salida.")); Environment.Exit(1); } // Chequea que los directorios no sean los mismos. if (argumentos.DirectorioDeEntrada == argumentos.DirectorioDeSalida) { Console.WriteLine( argumentos.GetUsage("ERROR: El directorio de entrada y salida deben ser diferentes.")); Environment.Exit(1); } // Procesa cada archivo en el directorio fuente. IEscuchadorDeEstatus escuchadorDeEstatus = new EscuchadorDeEstatusPorOmisión(); ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(escuchadorDeEstatus); DirectoryInfo informaciónDelDirectorio = new DirectoryInfo(argumentos.DirectorioDeEntrada); FileInfo[] archivosFuente = informaciónDelDirectorio.GetFiles("*.mp"); foreach (FileInfo archivo in archivosFuente) { // Verifica que el archivo de salida no existe. string archivoDeSalida = Path.Combine(argumentos.DirectorioDeSalida, archivo.Name); if (File.Exists(archivoDeSalida)) { Console.WriteLine(string.Format("ERROR: Archivo de salida '{0}' ya existe.", archivoDeSalida)); Environment.Exit(1); break; } // Lee mapa. Console.Write(string.Format("Leyendo '{0}' ... ", archivo.FullName)); manejadorDeMapa.Abrir(archivo.FullName); Console.WriteLine("listo."); // Procesa cada uno de los 'procesamientos'. Console.WriteLine("Procesando ... "); foreach (string procesamiento in argumentos.Procesamientos) { Console.Write(string.Format(" -> {0} ...", procesamiento)); int númeroDeProblemas = 0; switch (procesamiento) { case "ProcesarTodo": { númeroDeProblemas += manejadorDeMapa.ProcesarTodo(); } break; case "ArreglaIndices": { númeroDeProblemas += manejadorDeMapa.ManejadorDePdis.ArregladorDeIndicesDeCiudad.Procesa(); númeroDeProblemas += manejadorDeMapa.ManejadorDeVías.ArregladorDeIndicesDeCiudad.Procesa(); } break; default: Console.WriteLine( argumentos.GetUsage(string.Format("ERROR: Procesamiento '{0}' es desconocido.", procesamiento))); Environment.Exit(1); break; } // Imprime el número de problemas encontrados. Console.WriteLine(string.Format(" {0} problemas.", númeroDeProblemas)); // Imprime cambios. ImprimeCambios(manejadorDeMapa.ManejadorDePdis.Elementos, "PDI"); ImprimeCambios(manejadorDeMapa.ManejadorDeVías.Elementos, "Via"); } // Escribe el archivo de salida. Console.Write(string.Format("Guardando mapa '{0}' ... ", archivoDeSalida)); manejadorDeMapa.GuardaEnFormatoPolish( archivoDeSalida, string.Format("Generado por {0} @ {1}", Assembly.GetExecutingAssembly().GetName().Name, DateTime.Now)); Console.WriteLine("listo."); Console.WriteLine(); } }