コード例 #1
0
ファイル: DBFolder.cs プロジェクト: ckkwing/MediaCenter
        public IList <DBFolderInfo> GetMonitoredFolderList()
        {
            IList <DBFolderInfo> folderList = new List <DBFolderInfo>();
            string           sqlSelect      = "SELECT * FROM " + DataAccess.TABLE_NAME_MONITOREDFOLDER;
            SQLiteDataReader dr             = SqliteHelper.ExecuteReader(DataAccess.ConnectionStringProfile, CommandType.Text, sqlSelect, null);

            while (dr.Read())
            {
                if (dr.IsDBNull(1))
                {
                    continue;
                }
                int          id         = dr.GetInt32(0);
                string       path       = dr.GetString(1);
                string       name       = dr.GetString(2);
                int          iScanned   = dr.GetInt32(3);
                DBFolderInfo folderInfo = new DBFolderInfo()
                {
                    ID = id, Path = path, Name = name, IsScanned = (1 == iScanned) ? true : false
                };
                folderList.Add(folderInfo);
            }
            dr.Close();
            return(folderList);
        }
コード例 #2
0
        public static int InsertFolders(IList <IFolder> folders)
        {
            IList <DBFolderInfo> convertedFolders = new List <DBFolderInfo>();

            foreach (IFolder iFolder in folders)
            {
                DBFolderInfo newFolder = DBFolderInfo.Convert(iFolder);
                if (newFolder.IsNull())
                {
                    continue;
                }
                convertedFolders.Add(newFolder);
            }
            return(iMonitorFolder.InsertPatchFolders(convertedFolders));
        }
コード例 #3
0
        protected override bool JobRunning_Init()
        {
            this.eventAggregator = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance <IEventAggregator>();
            if (null == eventAggregator)
            {
                return(false);
            }
            fileScannerJob = Job as FileScannerJob;
            if (null == fileScannerJob)
            {
                return(false);
            }
            DataManager.Instance.FileScanner.Stop();

            IList <DBFolderInfo> existedFileList = DataManager.Instance.DBCache.Folders;

            needToRemovedPaths = existedFileList.Where(folder => !fileScannerJob.FoldersPath.Contains(folder.Path)).ToList();
            foreach (string path in fileScannerJob.FoldersPath)
            {
                if (string.IsNullOrEmpty(path))
                {
                    continue;
                }
                bool isExist = false;
                foreach (DBFolderInfo folder in existedFileList)
                {
                    if (0 == string.Compare(path, folder.Path, true))
                    {
                        isExist = true;
                        break;
                    }
                }
                if (!isExist)
                {
                    DirectoryInfo dir = new DirectoryInfo(path);
                    if (null != dir)
                    {
                        DBFolderInfo folder = DBFolderInfo.Convert(dir);
                        needToAddPaths.Add(folder);
                    }
                }
            }
            return(base.JobRunning_Init());
        }
コード例 #4
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);
        }
コード例 #5
0
 private void OnMonitoredFolderSelected(DBFolderInfo monitoredFolderInfo)
 {
     //this.eventAggregator.GetEvent<TagChangedEvent>().Publish(tag);
 }