예제 #1
0
        private void ExecuteWhenDirectoryScanned(FileScannerProcessEventArgs e)
        {
            //DBFolderInfo monitoredFolderInfo = null;
            //IList<DBFolderInfo> monitoredFolderInfos;
            //DBFolderInfo existFolder = DBCache.Folders.FirstOrDefault(folder => 0 == string.Compare(folder.Path, e.CurrentDir.FullName, true));
            //if (null == existFolder)
            //{
            //    monitoredFolderInfo = DBFolderInfo.Convert(e.CurrentDir);
            //    monitoredFolderInfos = new List<DBFolderInfo>() {
            //        monitoredFolderInfo
            //    };
            //    DBHelper.InsertFolders(monitoredFolderInfos);
            //}
            //else
            //{
            //    monitoredFolderInfo = existFolder;
            //    monitoredFolderInfos = new List<DBFolderInfo>() {
            //        monitoredFolderInfo
            //    };
            //    DBHelper.UpdateFolders(monitoredFolderInfos);
            //}

            //monitoredFolderInfo.IsScanned = true;
            //newMonitoredFolderInfos.Add(monitoredFolderInfo);

            DBFolderInfo existFolder = DBCache.Folders.FirstOrDefault(folder => 0 == string.Compare(folder.Path, e.CurrentDir.FullName, true));

            if (!existFolder.IsNull())
            {
                existFolder.IsScanned = true;
                DBHelper.UpdateFolders(new List <DBFolderInfo>()
                {
                    existFolder
                });
            }

            IList <DBFileInfo> filesToAdd     = new List <DBFileInfo>();
            IList <DBFileInfo> filesToUpgrade = new List <DBFileInfo>();

            foreach (ScannedFileInfo fileInfo in e.Files)
            {
                if (null == fileInfo || null == fileInfo.File)
                {
                    continue;
                }
                DBFileInfo newfile = DBFileInfo.Convert(fileInfo);
                //newfile.ParentID = monitoredFolderInfo.ID;
                DBFileInfo findFile = DBCache.Files.FirstOrDefault(file => 0 == string.Compare(fileInfo.File.FullName, file.Path));
                if (findFile.IsNull())
                {
                    filesToAdd.Add(newfile);
                }
                else
                {
                    filesToUpgrade.Add(findFile);
                }
            }
            //if (monitoredFolderInfo.ID == -1)
            //{
            //    int i = 0;
            //    ;
            //}
            DBHelper.InsertFiles(filesToAdd);
            DBHelper.UpdateFiles(filesToUpgrade);
        }