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();
            }
        }
Exemple #2
0
 private void EnMenúProcesarTodo(object sender, EventArgs e)
 {
     miManejadorDeMapa.ProcesarTodo();
 }