Esempio n. 1
0
        private void Launch(object sender, RoutedEventArgs e)
        {
            #if DEBUG
            Stopwatch globalWatch = new Stopwatch();
            globalWatch.Start();
            #endif
            //Al tener que usar un wraper para poder pasar una lista de strings al Data grid ahora hay que hacer esta movida para recuperarlo
            //"ENB_O_AVILES_MAGDALENA_CT_01","ENB_PO_SAN_VICENTE_EB_01" ->prueba
            String[] aux = new String[lnBtsInputGrid.Count];
            int      i;
            for (i = 0; i < 50; i++)
            {
                if (lnBtsInputGrid[i].lnBtsName == "")
                {
                    break;
                }
                aux[i] = lnBtsInputGrid[i].lnBtsName;
            }
            string[] lnBtsInputs = new string[i];
            for (int j = 0; j < i; j++)
            {
                lnBtsInputs[j] = aux[j];
            }
            aux = null;

            //Se crean objetos que albergan las tablas de datos que se necesitan en esta herramienta
            RSLTE31       R31    = new RSLTE31(lnBtsInputs, RSLTE31_path.Text);
            TimingAdvance TA     = new TimingAdvance(lnBtsInputs, TA_path.Text);
            Exports       export = new Exports(TA.GetColumn("LNCEL name"), SRAN_path.Text, FL18_path.Text);

            //Procesado paralelo de cada una de las colindancias, ya que son independientes salvo en la escritura, que está sincronizada
            Parallel.ForEach(export.data.AsEnumerable(), dataRow =>
            {
                colindancias.CheckColin(dataRow, R31);
            });
            Parallel.ForEach(R31.NotInExports().AsEnumerable(), dataRow =>
            {
                colindancias.CheckColinsNotInExports(dataRow);
            });
            colindancias.AddENBID();
            colinGrid.ItemsSource = colindancias.data.DefaultView;

            //Se calculan las candidatas para BlackListing y para Offset, que quedaran disponibles para la edicion manual del usuario en la interfaz grafica
            CandidatesBL candBL = new CandidatesBL(colindancias);
            candBLGrid.ItemsSource = candBL.data.DefaultView;
            CandidatesOFF candOFF = new CandidatesOFF(TA, colindancias, candBL);
            candOFFGrid.ItemsSource = candOFF.data.DefaultView;

            #if DEBUG
            globalWatch.Stop();
            Console.WriteLine("Global time: " + (double)globalWatch.ElapsedMilliseconds / 1000.0 + "s");
            #endif
        }
Esempio n. 2
0
        //nunca se puede acceder a elementos de la interfaz directamente desde este metodo, acceder a la interfaz desde otro thread
        //bloquea la aplicacion
        private void BackGround_Work(object sender, DoWorkEventArgs e)
        {
#if DEBUG
            int porc       = 0;
            var totalTimer = new Stopwatch();
            totalTimer.Start();
            var timer = new Stopwatch();
            timer.Start();
#endif
            bgwBlnOffArgument args    = (bgwBlnOffArgument)e.Argument;
            bgwBlnOffResult   results = new bgwBlnOffResult();

            if (args.BLnOffEnabled)
            {
                //Se crean objetos que contienen las tablas de datos que se necesitan en esta herramienta
                Colindancias colindancias = new Colindancias();
                RSLTE31      R31          = new RSLTE31(args.lnBtsInputs, args.pathR31);
                R31.completeR31(args.pathSRAN, args.pathFL18, args.pathSRAN2, args.srandividio, args.conFL18);

#if DEBUG
                timer.Stop();
                Console.WriteLine("Completar consulta31: " + timer.Elapsed.ToString(@"m\:ss\.fff"));
                timer.Reset();
                timer.Start();
#endif

                TimingAdvance TA = new TimingAdvance(args.lnBtsInputs, args.pathTA);

#if DEBUG
                timer.Stop();
                Console.WriteLine("Sacar Timing Advance: " + timer.Elapsed.ToString(@"m\:ss\.fff"));
                timer.Reset();
                timer.Start();
#endif
                Exports export = new Exports(TA.GetColumn("LNCEL name"), args.pathSRAN, args.pathFL18, args.pathSRAN2, args.srandividio, args.conFL18);
#if DEBUG
                timer.Stop();
                Console.WriteLine("Sacar Exports: " + timer.Elapsed.ToString(@"m\:ss\.fff"));
                timer.Reset();
                timer.Start();
                porc = 5;
                worker.ReportProgress(porc);
#endif

                foreach (DataRow dataRow in export.data.Rows)
                {
                    colindancias.CheckColin(dataRow, R31);
                }
                int a = 0;

                foreach (DataRow dataRow in R31.NotInExports())
                {
                    colindancias.CheckColinsNotInExports(dataRow);
                }
                colindancias.AddENBID();

                if (args.rellenarLabel)
                {
                    colindancias.rellenarLabelUnknown(args.pathSRAN, args.pathSRAN2, args.srandividio);
                }



                porc = 15;
                worker.ReportProgress(porc);

                //Dibujar tablas
                DataView dv = colindancias.data.DefaultView;
                dv.Sort                 = "[HO errores SR] DESC";
                colindancias.data       = dv.ToTable();
                results.colindancias    = colindancias.data;
                results.siteCoordErrors = colindancias.GetSiteCoordErr();

                porc = 25;


#if DEBUG
                timer.Stop();
                Console.WriteLine("Calcular Colindancias: " + timer.Elapsed.ToString(@"m\:ss\.fff"));
                timer.Reset();
                timer.Start();
#endif

                //Se calculan las candidatas para BlackListing y para Offset, que quedaran disponibles para la edicion manual del usuario en la interfaz grafica
                CandidatesBL candBL = new CandidatesBL(colindancias);
                dv             = candBL.data.DefaultView;
                dv.Sort        = "[HO errores SR] DESC";
                candBL.data    = dv.ToTable();
                results.candBl = candBL.data;
                porc           = 50;
#if DEBUG
                timer.Stop();
                Console.WriteLine("Calcular candidatas de blacklisting: " + timer.Elapsed.ToString(@"m\:ss\.fff"));
                timer.Reset();
                timer.Start();
#endif

                CandidatesOFF candOFF = new CandidatesOFF(TA, colindancias, candBL);
                dv              = candOFF.data.DefaultView;
                dv.Sort         = "[HO errores SR] DESC";
                candOFF.data    = dv.ToTable();
                results.candOff = candOFF.data;

                porc = 75;
                worker.ReportProgress(porc);

#if DEBUG
                timer.Stop();
                Console.WriteLine("Calcular candidatas de offset: " + timer.Elapsed.ToString(@"m\:ss\.fff"));
                timer.Reset();
                timer.Start();
#endif
            }
            if (args.prevAnalisysEnabled)
            {
                NIR48H nir = new NIR48H(args.lnBtsInputs, args.pathNIR48);
                results.error       = nir.errors;
                results.nirPlotData = nir.data;
#if DEBUG
                timer.Stop();
                Console.WriteLine("Analisis Previo: " + timer.Elapsed.ToString(@"m\:ss\.fff"));
#endif
            }
            e.Result = results;

            porc = 100;
            worker.ReportProgress(porc);
#if DEBUG
            timer.Stop();
            totalTimer.Stop();
            Console.WriteLine("Tiempo Total: " + totalTimer.Elapsed.ToString(@"m\:ss\.fff"));
#endif
        }