예제 #1
0
        /// <summary>
        /// Loads the movie DB.
        /// </summary>
        private static void LoadMovieDB()
        {
            string path = Get.FileSystemPaths.PathDatabases + OutputName.MovieDb + Path.DirectorySeparatorChar;

            Directory.CreateDirectory(path);
            FileData[] files = FastDirectoryEnumerator.GetFiles(path, "*.movie.gz", SearchOption.TopDirectoryOnly);

            MovieDBFactory.MovieDatabase.Clear();

            foreach (FileData file in files)
            {
                string json = Gzip.Decompress(file.Path);

                var movieModel = JsonConvert.DeserializeObject(json, typeof(MovieModel)) as MovieModel;

                MovieDBFactory.MovieDatabase.Add(movieModel);

                string title = FileNaming.RemoveIllegalChars(movieModel.Title);

                string poster = path + title + ".poster.jpg";
                string fanart = path + title + ".fanart.jpg";

                if (File.Exists(poster))
                {
                    movieModel.SmallPoster = ImageHandler.LoadImage(poster);
                }

                if (File.Exists(fanart))
                {
                    movieModel.SmallFanart = ImageHandler.LoadImage(fanart);
                }
            }
        }
예제 #2
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                FileData[] fileData = FastDirectoryEnumerator.GetFiles(textBox1.Text, "*.msi", SearchOption.AllDirectories);
                filesCount = fileData.Count();
                ManualResetEvent[]    doneEvents = new ManualResetEvent[filesCount];
                LocateMsiWorkerArea[] locateMsiWorkerAreaArray = new LocateMsiWorkerArea[filesCount];
                ThreadPool.SetMaxThreads(Convert.ToInt32(numericUpDown1.Value), Convert.ToInt32(numericUpDown2.Value));

                for (int i = 0; i < filesCount; i++)
                {
                    doneEvents[i] = new ManualResetEvent(false);
                    LocateMsiWorkerArea locateMsiWorkerArea = new LocateMsiWorkerArea(fileData[i].Path, doneEvents[i]);
                    locateMsiWorkerArea.InstallGuid = this.ApplicationGuid;
                    locateMsiWorkerAreaArray[i]     = locateMsiWorkerArea;
                    ThreadPool.QueueUserWorkItem(locateMsiWorkerArea.ThreadPoolCallback, i);
                    locateMsiWorkerArea.Completed += locateMsiWorkerArea_Completed;
                }

                /*var res = from c in class1Array.AsParallel().WithDegreeOfParallelism(5)
                 *        where c.Result
                 *        select c.MSIPath;*/
                List <ManualResetEvent[]> listDoneEvent = new List <ManualResetEvent[]>();

                int lengthToSplit = 64; // 64 is maximun number of events allowed for Wait handle
                int arrayLength   = doneEvents.Length;

                for (int i = 0; i < arrayLength; i = i + lengthToSplit)
                {
                    ManualResetEvent[] val = new ManualResetEvent[lengthToSplit];

                    if (arrayLength < i + lengthToSplit)
                    {
                        lengthToSplit = arrayLength - i;
                    }
                    Array.Copy(doneEvents, i, val, 0, lengthToSplit);
                    listDoneEvent.Add(val.Where(x => x != null).ToArray());
                }
                foreach (ManualResetEvent[] item in listDoneEvent)
                {
                    WaitHandle.WaitAll(item);
                }
                for (int i = 0; i < filesCount; i++)
                {
                    if (locateMsiWorkerAreaArray[i].Result)
                    {
                        appMsis.Add(fileData[i].Path);
                    }
                }
            }
            catch (Exception exe)
            {
                DisplayError(exe);
            }
            finally
            {
            }
        }
예제 #3
0
 private void button17_Click(object sender, EventArgs e)
 {
     try
     {
         if (textBox14.Text == string.Empty)
         {
             MessageBox.Show("Please specify user name for the operations");
             return;
         }
         if (checkBox5.Checked == true)
         {
             if (Directory.Exists(textBox13.Text) == false)
             {
                 MessageBox.Show("Wrong directory to sync is not set");
                 return;
             }
             int        count = 0;
             FileData[] files = FastDirectoryEnumerator.GetFiles(textBox2.Text,
                                                                 "*.wrong",
                                                                 checkBox4.Checked == true ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
             for (int i = 0; i < files.Length; i++)
             {
                 try
                 {
                     File.Move(files[i].Path, textBox12.Text + "\\" + files[i].Name);
                     count++;
                 }
                 catch (Exception exx)
                 {
                     MessageBox.Show(exx.Message);
                 }
             }
             MessageBox.Show("Total wrong files moved to " + textBox12.Text + " are " + count);
         }
         int res = m_client.SyncFilesWithDataBase(textBox13.Text, checkBox4.Checked, textBox14.Text, 0);
         if (res == 0)
         {
             MessageBox.Show("Sync files is in progress");
         }
         else
         {
             while (m_syncFileEnded == false)
             {
                 Thread.Sleep(500);
             }
             m_syncFileEnded = false;
         }
     }
     catch (Exception err)
     {
         MessageBox.Show(err.Message);
     }
 }
예제 #4
0
        /// <summary>
        /// Loads the movie sets db.
        /// </summary>
        private static void LoadMovieSets()
        {
            string path = Get.FileSystemPaths.PathDatabases + OutputName.MovieSets + Path.DirectorySeparatorChar;

            Directory.CreateDirectory(path);

            FileData[] files = FastDirectoryEnumerator.GetFiles(path, "*.MovieSet.gz", SearchOption.TopDirectoryOnly);

            MovieSetManager.CurrentDatabase.Clear();

            foreach (FileData file in files)
            {
                string json = Gzip.Decompress(file.Path);
                var    set  = JsonConvert.DeserializeObject(json, typeof(MovieSetModel)) as MovieSetModel;

                MovieSetManager.CurrentDatabase.Add(set);
            }
        }
예제 #5
0
        void SyncFileThread(string DirectoryToSync, bool recoursive, string userName, int SyncBy)
        {
            try
            {
                int        count = 0;
                FileData[] files = FastDirectoryEnumerator.GetFiles(DirectoryToSync,
                                                                    "*.Bin",
                                                                    recoursive == true ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);

                ulong g360Index;
                using (UploadHistoryLogApi m = new UploadHistoryLogApi(_writeListDir, false))
                {
                    m.LoadLogToMemoryDic();
                    string fileToAdd = string.Empty;
                    Dictionary <string, bool> list = m.DicFileList;
                    for (int i = 0; i < files.Length; i++)
                    {
                        if (list.ContainsKey(files[i].Path) == false)
                        {
                            switch (SyncBy)
                            {
                            case 0:
                                q.AddFile(files[i].Path, m_startTime, files[i].CreationTime, out g360Index, userName);
                                break;

                            case 1:
                                q.AddFile(files[i].Path, m_startTime, files[i].LastAccesTime, out g360Index, userName);
                                break;

                            case 2:
                                q.AddFile(files[i].Path, m_startTime, files[i].LastWriteTime, out g360Index, userName);
                                break;
                            }
                            count++;
                        }
                    }
                }
                pCallback(133, m_clientIpAddress, count.ToString(), string.Empty, "ok", 0, DateTime.Now, 0, m_FileOwnerUserName);
            }
            catch (Exception err)
            {
                pCallback(133, m_clientIpAddress, "0", string.Empty, err.Message, 0, DateTime.Now, 0, m_FileOwnerUserName);
            }
        }
예제 #6
0
        /// <summary>
        /// Loads the TV DB db
        /// </summary>
        private static void LoadTvDB()
        {
            string path = Get.FileSystemPaths.PathDatabases + OutputName.TvDb + Path.DirectorySeparatorChar;

            Directory.CreateDirectory(path);

            FileData[] files = FastDirectoryEnumerator.GetFiles(path, "*.Series.gz", SearchOption.TopDirectoryOnly);

            TvDBFactory.TvDatabase.Clear();

            foreach (FileData file in files)
            {
                string json = Gzip.Decompress(file.Path);

                var series = JsonConvert.DeserializeObject(json, typeof(Series)) as Series;

                string title = FileNaming.RemoveIllegalChars(series.SeriesName);

                string poster = path + title + ".poster.jpg";
                string fanart = path + title + ".fanart.jpg";
                string banner = path + title + ".banner.jpg";

                if (File.Exists(poster))
                {
                    series.SmallPoster = ImageHandler.LoadImage(poster);
                }

                if (File.Exists(fanart))
                {
                    series.SmallFanart = ImageHandler.LoadImage(fanart);
                }

                if (File.Exists(banner))
                {
                    series.SmallBanner = ImageHandler.LoadImage(banner);
                }

                TvDBFactory.TvDatabase.Add(series.SeriesName, series);
            }

            TvDBFactory.GeneratePictureGallery();
            TvDBFactory.GenerateMasterSeriesList();
        }
예제 #7
0
        public MachineVersionInfo[] GetMachineVersionInfo(int fileLimit)
        {
            _eventLog.WriteEntry("GetMachineVersionInfo()..", EventLogEntryType.Information);
            _logger.Debug("GetMachineVersionInfo() 1");
            MachineVersionInfo[] machineVersionInfos = null;
            _logger.Debug("GetMachineVersionInfo() 2");
            try
            {
                _logger.Debug("GetMachineVersionInfo() 3");
                _retrievedSoftwareInfoFiles = FastDirectoryEnumerator.GetFiles(_machineSpecificDataPathUDM, "current_software*", SearchOption.AllDirectories, fileLimit);
                _logger.Debug("GetMachineVersionInfo() 4");
                machineVersionInfos = new MachineVersionInfo[_retrievedSoftwareInfoFiles.Length];
                _logger.Debug("GetMachineVersionInfo() 5");
            }
            catch (Exception ex)
            {
                _eventLog.WriteEntry(ex.ToString(), EventLogEntryType.Error);
                _logger.Error(ex.ToString());
                throw;
            }

            _logger.Debug(_retrievedSoftwareInfoFiles.Length + " files will be processed.");
            _eventLog.WriteEntry(_retrievedSoftwareInfoFiles.Length + " files will be processed.", EventLogEntryType.Information);

            for (int i = 0; i < _retrievedSoftwareInfoFiles.Length; i++)
            {
                try
                {
                    DateTime lastUpdatedAt;
                    int      majorVersionNumber;
                    int      minorVersionNumber;

                    string   contents          = File.ReadAllText(_retrievedSoftwareInfoFiles[i]);
                    string   machineGUID       = GetMachineGUIDFromPath(_retrievedSoftwareInfoFiles[i]);
                    string[] contentsArray     = contents.Split(new string[] { "||" }, StringSplitOptions.RemoveEmptyEntries);
                    string[] versionComponents = contentsArray[1].Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);

                    if (!DateTime.TryParse(contentsArray[0], out lastUpdatedAt))
                    {
                        continue;
                    }

                    if (!int.TryParse(versionComponents[0], out majorVersionNumber))
                    {
                        continue;
                    }

                    if (!int.TryParse(versionComponents[1], out minorVersionNumber))
                    {
                        continue;
                    }

                    machineVersionInfos[i] = new MachineVersionInfo(machineGUID, lastUpdatedAt, majorVersionNumber, minorVersionNumber);
                }
                catch (Exception ex)
                {
                    _eventLog.WriteEntry(ex.ToString(), EventLogEntryType.Error);
                }
            }

            _logger.Debug("Retrieved " + machineVersionInfos.Length + " version info data.");

            return(machineVersionInfos);
        }
        private void MoveFolder_UpdateTreeViewFolderBrowser(TreeViewFolderBrowser folderTreeView, string sourceDirectory, string targetDirectory, TreeNode targetNode)
        {
            if (sourceDirectory == targetDirectory)
            {
                return;                                     //Can't move into itself. No need for error message
            }
            try
            {
                using (new WaitCursor())
                {
                    FileData[] fileDatas = FastDirectoryEnumerator.GetFiles(sourceDirectory, "*.*", SearchOption.AllDirectories);

                    #region Move all folder and files
                    Logger.Trace("Move folder from:" + sourceDirectory + " to: " + targetDirectory);
                    System.IO.Directory.Move(sourceDirectory, targetDirectory);
                    #endregion

                    #region Clear ImageListView
                    ImageListViewHandler.ClearAllAndCaches(imageListView1);
                    #endregion

                    #region Update node tree
                    GlobalData.DoNotTrigger_TreeViewFolder_BeforeAndAfterSelect = true;
                    TreeViewFolderBrowserHandler.RefreshFolderWithName(folderTreeView, sourceDirectory, true);
                    TreeViewFolderBrowserHandler.RemoveFolderWithName(folderTreeView, sourceDirectory);
                    TreeViewFolderBrowserHandler.RefreshFolderWithName(folderTreeView, targetDirectory, true);
                    GlobalData.DoNotTrigger_TreeViewFolder_BeforeAndAfterSelect = false;
                    #endregion

                    #region Update database
                    foreach (FileData oldFileData in fileDatas)
                    {
                        string oldFilename     = Path.GetFileName(oldFileData.Path);
                        string newFullFilename = Path.Combine(targetDirectory, oldFilename);
                        Logger.Trace("Rename from:" + oldFileData.Path + " to: " + newFullFilename);

                        databaseAndCacheThumbnailPoster.Move(Path.GetDirectoryName(oldFileData.Path), Path.GetFileName(oldFileData.Path), Path.GetDirectoryName(newFullFilename), Path.GetFileName(newFullFilename));
                        databaseAndCacheMetadataExiftool.Move(Path.GetDirectoryName(oldFileData.Path), Path.GetFileName(oldFileData.Path), Path.GetDirectoryName(newFullFilename), Path.GetFileName(newFullFilename));
                    }
                    #endregion

                    DirectoryInfo directoryInfo        = new DirectoryInfo(sourceDirectory);
                    string        targetFullFolderName = targetDirectory + directoryInfo.Parent.Name;

                    GlobalData.DoNotTrigger_TreeViewFolder_BeforeAndAfterSelect = true;
                    treeViewFolderBrowser1.Populate(targetDirectory);
                    GlobalData.DoNotTrigger_TreeViewFolder_BeforeAndAfterSelect = false;
                }
                //----- Updated ImageListView with files ------
                ImageListView_FetchListOfMediaFiles_FromFolder_and_Aggregate(false, true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Error when move folder.");

                AddError(
                    sourceDirectory,
                    AddErrorFileSystemRegion, AddErrorFileSystemMoveFolder, sourceDirectory, targetDirectory,
                    "Issue: Failed moving directory.\r\n" +
                    "From Directory: " + sourceDirectory + "\r\n" +
                    "To Directory: " + targetDirectory + "\r\n" +
                    "Error message: " + ex.Message);
            }
        }
 private void InitStack()
 {
     _allFiles = FastDirectoryEnumerator.GetFiles(_rootPath, "*" + _formatter.FileExtension, SearchOption.AllDirectories);
 }