public bool CrearPFDPorCuadrante(object proyectoSeleccionado, object cuadranteSeleccionado, bool esTrineo, string pathDestino, int tipoBusqueda, string path, string nombreArchivo, out string mensageError) { try { Proyecto proyecto = (Proyecto)proyectoSeleccionado; Cuadrante cuadrante = (Cuadrante)cuadranteSeleccionado; SplitPDF.Instance = null; SplitPDF.CantidadTravelers = 0; mensageError = ""; if (proyecto == null || proyecto.ProyectoID <= 0) { mensageError = "Selecciona un proyecto"; return(false); } else if (tipoBusqueda == 1 && (cuadrante == null || cuadrante.CuadranteID <= 0)) { mensageError = "Selecciona un cuadrante"; return(false); } else if (pathDestino == string.Empty) { mensageError = "Selecciona una carpeta de destino"; return(false); } else if (tipoBusqueda == 2 && path == "") { mensageError = "Selecciona un archivo"; return(false); } else if (tipoBusqueda == 0) { mensageError = "Necesitas seleccionar el tipo de busqueda: por cuadrante o por csv"; return(false); } DataTable dtSpools = new DataTable(); int cantidadArchivosEncontrados = 0; if (tipoBusqueda == 1) //cuadrante { dtSpools = ObtieneSpools(cuadrante.CuadranteID, proyecto.ProyectoID); string mensajeNombreCsv; SplitPDF.Instance.CrearObtenerCSV(pathDestino, cuadrante.NombreCuadrante, out mensajeNombreCsv); for (int i = 0; i < dtSpools.Rows.Count; i++) { if ((ExisteNumeroOrdenPath(proyecto.pathRutaCompartida, dtSpools.Rows[i][0].ToString()))) { cantidadArchivosEncontrados++; } } if (cantidadArchivosEncontrados > 0 && dtSpools.Rows.Count > 0) { string mensajeCrearPDF = ""; if (SplitPDF.Instance.CrearObtenerPDF(pathDestino, cuadrante.NombreCuadrante, out mensajeCrearPDF)) { foreach (DataRow item in dtSpools.Rows) { string ruta = System.IO.Path.Combine(proyecto.pathRutaCompartida, "ODT " + item[0].ToString() + ".pdf"); try { if (ExisteNumeroOrdenPath(proyecto.pathRutaCompartida, item[0].ToString())) { int numeroPaginasPDF = SplitPDF.Instance.CantidadDePaginas(ruta) - int.Parse(item[2].ToString()); try { SplitPDF.Instance.SplitAndSaveInterval(ruta, pathDestino, numeroPaginasPDF, 1, mensajeCrearPDF, item[0].ToString(), item[0].ToString() + "-" + item[1].ToString()); } catch (Exception ex) { CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), "Error desconocido " + ex.Message); } } else { CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), "No existe el archivo pdf en la carpeta compartida"); } } catch (Exception ex) { CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), ex.Message); } } if (SplitPDF.Instance.AgregoPaginas) { SplitPDF.Instance.document.Close(); SplitPDF.Instance.CerrarDocumentoCreado(pathDestino + "\\" + mensajeCrearPDF.Trim() + ".pdf"); } CrearArchivo.Instance.CerrarDocumento(); mensageError = mensajeCrearPDF + " con " + SplitPDF.CantidadTravelers.ToString(); return(true); // escribir que se cerro el documento. } else { mensageError = "No se pudo crear el archivo pdf " + mensajeCrearPDF; return(false); } } else { mensageError = "No se generó archivo con travelers, revisar archivo " + mensajeNombreCsv + ".csv para mayor informaciòn"; for (int i = 0; i < dtSpools.Rows.Count; i++) { CrearArchivo.Instance.EscribirMensajeDocumento(dtSpools.Rows[i][0].ToString(), dtSpools.Rows[i][0].ToString() + "-" + dtSpools.Rows[i][1].ToString(), "no se encontro el archivo pdf en la ruta de la carpeta compartida"); } CrearArchivo.Instance.CerrarDocumento(); return(false); } } else if (tipoBusqueda == 2)//csv { DataTable dt = ConvertToDataTable(path, 1); if (dt.Rows.Count < 70) { DataSet dataSet = DAONumeroOrden.Instance.ValidarNumerosControl(dt, proyecto.ProyectoID); dtSpools = dataSet.Tables[0]; string mensajeCrearPDF = ""; string mensajeNombreCsv; SplitPDF.Instance.CrearObtenerCSV(pathDestino, nombreArchivo.Split('.')[0], out mensajeNombreCsv); for (int i = 0; i < dtSpools.Rows.Count; i++) { if ((ExisteNumeroOrdenPath(proyecto.pathRutaCompartida, dtSpools.Rows[i][0].ToString()))) { cantidadArchivosEncontrados++; } } if (dtSpools.Rows.Count > 0 && dtSpools.Rows.Count <= 70) { if (cantidadArchivosEncontrados > 0) { if (SplitPDF.Instance.CrearObtenerPDF(pathDestino, nombreArchivo.Split('.')[0], out mensajeCrearPDF)) { if (dtSpools.Rows.Count > 0 && dtSpools.Rows.Count <= 70) { if (dataSet.Tables[1].Rows.Count > 0) { for (int i = 0; i < dataSet.Tables[1].Rows.Count; i++) { CrearArchivo.Instance.EscribirMensajeDocumento("", dataSet.Tables[1].Rows[i][0].ToString(), "No pertenece al proyecto " + proyecto.NombreProyecto); } } foreach (DataRow item in dtSpools.Rows) { string ruta = System.IO.Path.Combine(proyecto.pathRutaCompartida, "ODT " + item[0].ToString() + ".pdf"); try { if (ExisteNumeroOrdenPath(proyecto.pathRutaCompartida, item[0].ToString())) { int numeroPaginasPDF = SplitPDF.Instance.CantidadDePaginas(ruta) - int.Parse(item[2].ToString()); try { SplitPDF.Instance.SplitAndSaveInterval(ruta, pathDestino, numeroPaginasPDF, 1, mensajeCrearPDF, item[0].ToString(), item[0].ToString() + "-" + item[1].ToString()); } catch (Exception ex) { CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), "Error desconocido " + ex.Message); } } else { CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), "No existe el archivo pdf en la carpeta compartida"); } } catch (Exception ex) { CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), ex.Message); } } if (SplitPDF.Instance.AgregoPaginas) { SplitPDF.Instance.document.Close(); SplitPDF.Instance.CerrarDocumentoCreado(pathDestino + "\\" + mensajeCrearPDF.Trim() + ".pdf"); } CrearArchivo.Instance.CerrarDocumento(); mensageError = mensageError = mensajeCrearPDF + " con " + SplitPDF.CantidadTravelers.ToString(); return(true); // escribir que se cerro el documento. } else { if (dtSpools.Rows.Count > 70) { CrearArchivo.Instance.EscribirMensajeDocumento("", "", "La cantidad de numeros de control que coinciden son mas de 70"); } for (int i = 0; i < dtSpools.Rows.Count; i++) { CrearArchivo.Instance.EscribirMensajeDocumento("", dtSpools.Rows[i][0].ToString() + "" + dtSpools.Rows[i][1].ToString(), "coincide con el proyecto " + proyecto.NombreProyecto); } if (dataSet.Tables[1].Rows.Count > 0) { for (int i = 0; i < dataSet.Tables[1].Rows.Count; i++) { CrearArchivo.Instance.EscribirMensajeDocumento("", dataSet.Tables[1].Rows[i][0].ToString(), "No pertenece al proyecto " + proyecto.NombreProyecto); } } if (SplitPDF.Instance.AgregoPaginas) { SplitPDF.Instance.document.Close(); SplitPDF.Instance.CerrarDocumentoCreado(pathDestino + "\\" + mensajeCrearPDF.Trim() + ".pdf"); } CrearArchivo.Instance.CerrarDocumento(); mensageError = SplitPDF.CantidadTravelers.ToString(); return(false); } } else { mensageError = "No se pudo crear el archivo pdf " + mensajeCrearPDF; return(false); } } else { mensageError = "No se generó archivo con travelers, revisar archivo " + mensajeNombreCsv + ".csv para mayor informaciòn"; for (int i = 0; i < dtSpools.Rows.Count; i++) { CrearArchivo.Instance.EscribirMensajeDocumento(dtSpools.Rows[i][0].ToString(), dtSpools.Rows[i][0].ToString() + "-" + dtSpools.Rows[i][1].ToString(), "no se encontro el archivo pdf en la ruta de la carpeta compartida"); } CrearArchivo.Instance.CerrarDocumento(); return(false); } } else { mensageError = "No se generó archivo con travelers, revisar archivo " + mensajeNombreCsv + ".csv para mayor informaciòn"; //for (int i = 0; i < dtSpools.Rows.Count; i++) //{ // CrearArchivo.Instance.EscribirMensajeDocumento(dtSpools.Rows[i][0].ToString(), dtSpools.Rows[i][0].ToString() + "-" + dtSpools.Rows[i][1].ToString(), " maximo tienen que ser 70 numeros de control en el archivo"); //} if (dtSpools.Rows.Count > 70) { mensageError = "Como máximo tienen que ser 70 numeros de control para iniciar con el proceso."; } if (dataSet.Tables[1].Rows.Count > 0) { for (int i = 0; i < dataSet.Tables[1].Rows.Count; i++) { CrearArchivo.Instance.EscribirMensajeDocumento("", dataSet.Tables[1].Rows[i][0].ToString(), "No pertenece al proyecto " + proyecto.NombreProyecto); } } CrearArchivo.Instance.CerrarDocumento(); return(false); } } else { mensageError = " El número máximo permitido es 70 "; return(false); } } else { mensageError = "No se selecciono un tipo de busqueda"; return(false); } } catch (Exception ex) { mensageError = ex.Message; return(false); } }
static void Main(string[] args) { Console.WriteLine("Conway - Game of Life"); var app = new CommandLineApplication(); app.Name = "Conway"; app.HelpOption("-?|-h|--help"); app.VersionOption("-v|--version", "Conway 1.0.0"); var inputFile = app.Option("-i <inputfile>|--input <inputfile>", "Input file", CommandOptionType.SingleValue); var iterations = app.Option("-n <n>|--iter <n>", "Number of iterations", CommandOptionType.SingleValue); app.OnExecute(() => { // procesar entrada de comandos try{ // algoritmo de Quadtree if (!inputFile.HasValue()) { throw new Exception("Please, specify an input file"); } if (!System.IO.File.Exists(inputFile.Value())) { throw new Exception("Please, check that the specified file exists"); } if (!iterations.HasValue()) { throw new Exception("Please, specify a number of iterations"); } var iter = Int32.Parse(iterations.Value()); // TODO: ser capaz de detectar el formato correcto bool[][] matrix = null; try{ matrix = new File.Rle(inputFile.Value()).GetMatrix(); }catch (Exception) { matrix = new File.Vaca(inputFile.Value()).GetMatrix(); }; if (matrix == null) { throw new Exception("File format error"); } Cuadrante cuadrante = Cuadrante.crear(matrix); Console.WriteLine($"{cuadrante}"); var sw = Stopwatch.StartNew(); for (var i = 0; i < iter; i++) { while (!(cuadrante.isCentrado() && cuadrante.getCuadranteCentral().isCentrado())) { cuadrante = cuadrante.expandir(); } cuadrante = cuadrante.generacionEtapa4(); } sw.Stop(); var conway = new ConwayMatrix(cuadrante.GetMatrix()); var final = conway.GetFinalResult(); // report final Console.WriteLine($"{iter} iteraciones"); Console.WriteLine($"{final.CeldasVivas} celdas vivas"); Console.WriteLine($"Dimensiones: {final.LimitedMatrix.Width} x {final.LimitedMatrix.Height}"); Console.WriteLine($"Tiempo: {sw.Elapsed.TotalMilliseconds} ms"); // guardar Console.Write("Fichero de salida: "); var filename = Console.ReadLine().Trim(); if (filename == string.Empty) { Console.WriteLine(final.LimitedMatrix); } else { var file = new File.Vaca(); file.ConwayMatrix = final.LimitedMatrix; file.Save(filename); Console.WriteLine($"Matriz final guardada en {filename}"); } }catch (Exception e) { Console.WriteLine($"WARNING: {e.Message}"); Console.WriteLine("Starting UI"); // arrancar gui (algoritmo de ConwayMatrix) AppBuilder.Configure <App>().UseSkia().UseX11().Start <GUI.MainWindow>(); } return(0); }); app.Execute(args); }