Esempio n. 1
0
        private void Insert(FileInfo pcb, string fechaModificacion)
        {
            // Si no existe genero un Hash que identifica el contenido del archivo.
            // mas adelante se compara el hash nuevo con el anterior para verificar
            // si se modifico alguna linea.
            string pcbContent = FilesHandler.ReadFile(pcb.FullName);
            string newHash    = PcbInfo.Hash(pcb.FullName);

            List <string> buildSegmentos = BuildSegment(pcbContent);
            int           totalBloques   = buildSegmentos.Count;
            string        segmentos      = string.Join(",", buildSegmentos.ToArray());

            PcbInfo pcbInfo = new PcbInfo();

            pcbInfo.programa          = pcb.Name;
            pcbInfo.bloques           = totalBloques;
            pcbInfo.segmentos         = segmentos;
            pcbInfo.hash              = newHash;
            pcbInfo.tipoMaquina       = aoi.aoiConfig.machineNameKey;
            pcbInfo.fechaModificacion = fechaModificacion;

            PcbInfo.Insert(pcbInfo);
        }
Esempio n. 2
0
        /// <summary>
        /// Verifica y actualiza si es necesario la informacion de todas las PCB de VTWIN y RNS
        /// </summary>
        public bool VerifyPcbFiles()
        {
            // Verifico archivos PCB
            IOrderedEnumerable <FileInfo> pcbList = FilesHandler.GetFiles("*.pcb", aoi.aoiConfig.dataProgPath);
            int  totalPcb = pcbList.Count();
            bool reload   = false;

            aoi.aoiWorker.SetProgressTotal(totalPcb);

            #region PCBLIST_FILES_DETECTED
            if (totalPcb > 0)
            {
                int countPcb = 0;
                foreach (FileInfo pcb in pcbList)
                {
                    //if (pcb.Name.Equals("NT1010E-M-BOT-SBAST-LR.pcb"))
                    //{
                    //    countPcb = 12344;
                    //}
                    countPcb++;

                    string fechaModificacion = pcb.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss");

                    // Verifico si existe el pcb en la base de datos.
                    PcbInfo pcbInfo = PcbInfo.list.Find(o =>
                                                        o.programa.Equals(pcb.Name) &&
                                                        o.tipoMaquina.Equals(aoi.aoiConfig.machineNameKey)
                                                        );

                    if (pcbInfo == null)
                    {
                        // Si no existe en DB, lo inserto
                        Insert(pcb, fechaModificacion);
                        reload = true;
                    }
                    else
                    {
                        string newHash = "";

                        // Si existe, verifico que la fecha sea diferente
                        if (!pcbInfo.fechaModificacion.Equals(fechaModificacion))
                        {
                            // Si la fecha de modificacion en SQL no es igual a la fecha de modificacion actual.
                            // Comparo HASH de archivo, contra el guardado en la DB
                            newHash = PcbInfo.Hash(pcb.FullName);

                            if (pcbInfo.hash.Equals(newHash))
                            {
                                // Si el hash es similar, no hay cambios en el archivo, solo cambia la fecha
                                UpdateDate(pcbInfo, fechaModificacion);
                                reload = true;
                            }
                            else
                            {
                                // Actualizo la informacion del PCB
                                Update(pcb, pcbInfo, newHash, fechaModificacion);
                                reload = true;
                            }
                        }
                    }

                    aoi.aoiWorker.SetProgressWorking(countPcb);
                } // END FOREACH
            }
            else
            {
                aoi.aoiLog.warning("No se encontraron archivos PCB en: " + aoi.aoiConfig.dataProgPath);
            }
            #endregion

            return(reload);
        }