Esempio n. 1
0
        private void BtnReAddAll_Click(object sender, RoutedEventArgs e)
        {
            SVR_Scan scan = Scanner.Instance.ActiveScan;

            if ((scan != null) && (Scanner.Instance.ActiveErrorFiles.Count > 0))
            {
                if (scan.GetScanStatus() == ScanStatus.Running)
                {
                    MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddMessage,
                                    Shoko.Commons.Properties.Resources.Integerity_ReaddTitle, MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    return;
                }
                if (scan.GetScanStatus() == ScanStatus.Finish)
                {
                    scan.Status = (int)ScanStatus.Standby;
                    RepoFactory.Scan.Save(scan);
                }
                List <ScanFile> files = Scanner.Instance.ActiveErrorFiles.ToList();
                Scanner.Instance.ActiveErrorFiles.Clear();
                files.ForEach(a => { a.Status = (int)ScanFileStatus.Waiting; });
                RepoFactory.ScanFile.Save(files);
                Scanner.Instance.Refresh();
            }
        }
        private void BtnAdd_Click(object sender, RoutedEventArgs e)
        {
            List <int> ids = new List <int>();

            foreach (CheckedImportFolder f in ImportFolders)
            {
                if (f.Checked)
                {
                    ids.Add(f.ImportFolderID);
                }
            }
            if (ids.Count == 0)
            {
                return;
            }
            SVR_Scan s = new SVR_Scan
            {
                Status        = (int)ScanStatus.Standby,
                CreationTIme  = DateTime.Now,
                ImportFolders = string.Join(",", ids.Select(a => a.ToString()))
            };

            RepoFactory.Scan.Save(s);
            SelectedScan      = s;
            this.DialogResult = true;
            this.Close();
        }
Esempio n. 3
0
        private void Add_Click(object sender, RoutedEventArgs e)
        {
            ScanFile item = (ScanFile)(sender as Button)?.DataContext;
            SVR_Scan scan = Scanner.Instance.ActiveScan;

            if (scan != null && item != null && scan.ScanID == item.ScanID)
            {
                if (scan.GetScanStatus() == ScanStatus.Running)
                {
                    MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddSingleMessage,
                                    Shoko.Commons.Properties.Resources.Integerity_ReaddSingleTitle, MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    return;
                }
                if (scan.GetScanStatus() == ScanStatus.Finish)
                {
                    scan.Status = (int)ScanStatus.Standby;
                    RepoFactory.Scan.Save(scan);
                }
                item.Status = (int)ScanFileStatus.Waiting;
                RepoFactory.ScanFile.Save(item);
                Scanner.Instance.ActiveErrorFiles.Remove(item);
                Scanner.Instance.Refresh();
            }
        }
        private void BtnDeleteAll_Click(object sender, RoutedEventArgs e)
        {
            SVR_Scan scan = Scanner.Instance.ActiveScan;

            if ((scan != null) && (Scanner.Instance.ActiveErrorFiles.Count > 0))
            {
                if (scan.GetScanStatus() == ScanStatus.Running)
                {
                    MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddMessage,
                                    Shoko.Commons.Properties.Resources.Integerity_ReaddTitle, MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    return;
                }
                if (scan.GetScanStatus() == ScanStatus.Finish)
                {
                    using (var upd = Repo.Instance.Scan.BeginAddOrUpdate(() => scan))
                    {
                        upd.Entity.Status = (int)ScanStatus.Standby;
                        scan = upd.Commit();
                    }
                }
                Scanner.Instance.DeleteAllErroredFiles();
                Scanner.Instance.Refresh();
            }
        }
        private void BtnReAddAll_Click(object sender, RoutedEventArgs e)
        {
            SVR_Scan scan = Scanner.Instance.ActiveScan;

            if ((scan != null) && (Scanner.Instance.ActiveErrorFiles.Count > 0))
            {
                if (scan.GetScanStatus() == ScanStatus.Running)
                {
                    MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddMessage,
                                    Shoko.Commons.Properties.Resources.Integerity_ReaddTitle, MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    return;
                }
                if (scan.GetScanStatus() == ScanStatus.Finish)
                {
                    using (var upd = Repo.Instance.Scan.BeginAddOrUpdate(() => scan))
                    {
                        upd.Entity.Status = (int)ScanStatus.Standby;
                        scan = upd.Commit();
                    }
                }
                List <ScanFile> files = Scanner.Instance.ActiveErrorFiles.ToList();
                Scanner.Instance.ActiveErrorFiles.Clear();

                using (var upd = Repo.Instance.ScanFile.BeginBatchUpdate(() => files))
                {
                    upd.ForEach(a => { a.Status = (int)ScanFileStatus.Waiting; });
                    upd.Commit();
                }
                Scanner.Instance.Refresh();
            }
        }
Esempio n. 6
0
        public ActionResult <Scan> AddScan(Scan scan)
        {
            if (scan.ScanID == 0)
            {
                SVR_Scan s = new SVR_Scan
                {
                    Status = scan.Status, ImportFolders = scan.ImportFolders, CreationTIme = DateTime.Now
                };
                RepoFactory.Scan.Save(s);
                scan = s;
            }
            List <ScanFile> files = scan.GetImportFolderList()
                                    .SelectMany(a => RepoFactory.VideoLocalPlace.GetByImportFolder(a))
                                    .Select(p => new { p, v = p.VideoLocal })
                                    .Select(t => new ScanFile
            {
                Hash                = t.v.ED2KHash,
                FileSize            = t.v.FileSize,
                FullName            = t.p.FullServerPath,
                ScanID              = scan.ScanID,
                Status              = (int)ScanFileStatus.Waiting,
                ImportFolderID      = t.p.ImportFolderID,
                VideoLocal_Place_ID = t.p.VideoLocal_Place_ID
            }).ToList();

            RepoFactory.ScanFile.Save(files);
            return(scan);
        }
Esempio n. 7
0
        public void Init()
        {
            Utils.MainThreadDispatch(() => { RepoFactory.Scan.GetAll().ForEach(a => Scans.Add(a)); });
            SVR_Scan runscan = Scans.FirstOrDefault(a => a.GetScanStatus() == ScanStatus.Running);

            if (runscan != null)
            {
                ActiveScan = runscan;
                StartScan();
            }
        }
Esempio n. 8
0
        public void Init()
        {
            Application.Current.Dispatcher.Invoke(() => { RepoFactory.Scan.GetAll().ForEach(a => Scans.Add(a)); });
            SVR_Scan runscan = Scans.FirstOrDefault(a => a.GetScanStatus() == ScanStatus.Running);

            if (runscan != null)
            {
                ActiveScan = runscan;
                StartScan();
            }
        }
Esempio n. 9
0
        private void BtnAddcheck_Click(object sender, RoutedEventArgs e)
        {
            ScanImportFolders frm = new ScanImportFolders();

            frm.Owner = GetTopParent();
            bool?result = frm.ShowDialog();

            if (result.HasValue && result.Value)
            {
                this.IsEnabled = false;
                Cursor         = Cursors.Wait;
                SVR_Scan              s   = (SVR_Scan)frm.SelectedScan;
                HashSet <int>         imp = new HashSet <int>(s.GetImportFolderList());
                List <SVR_VideoLocal> vl  = imp.SelectMany(a => RepoFactory.VideoLocal.GetByImportFolder(a))
                                            .Distinct()
                                            .ToList();
                List <ScanFile> files = new List <ScanFile>();
                foreach (SVR_VideoLocal v in vl)
                {
                    foreach (SVR_VideoLocal_Place p in v.Places.Where(a => imp.Contains(a.ImportFolderID)))
                    {
                        ScanFile sfile = new ScanFile();
                        sfile.Hash                = v.ED2KHash;
                        sfile.FileSize            = v.FileSize;
                        sfile.FullName            = p.FullServerPath;
                        sfile.ScanID              = s.ScanID;
                        sfile.Status              = (int)ScanFileStatus.Waiting;
                        sfile.ImportFolderID      = p.ImportFolderID;
                        sfile.VideoLocal_Place_ID = p.VideoLocal_Place_ID;
                        files.Add(sfile);
                    }
                }
                RepoFactory.ScanFile.Save(files);
                this.IsEnabled = true;
                Scanner.Instance.Scans.Add(s);
                comboProvider.SelectedItem = s;
                Cursor = Cursors.Arrow;
            }
        }
Esempio n. 10
0
        private void BtnDeleteAll_Click(object sender, RoutedEventArgs e)
        {
            SVR_Scan scan = Scanner.Instance.ActiveScan;

            if ((scan != null) && (Scanner.Instance.ActiveErrorFiles.Count > 0))
            {
                if (scan.GetScanStatus() == ScanStatus.Running)
                {
                    MessageBox.Show(Commons.Properties.Resources.Integerity_ReaddMessage,
                                    Commons.Properties.Resources.Integerity_ReaddTitle, MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    return;
                }
                if (scan.GetScanStatus() == ScanStatus.Finish)
                {
                    scan.Status = (int)ScanStatus.Standby;
                    RepoFactory.Scan.Save(scan);
                }
                Scanner.Instance.DeleteAllErroredFiles();
                Scanner.Instance.Refresh();
            }
        }
Esempio n. 11
0
        private void WorkerIntegrityScanner_DoWork(object sender, DoWorkEventArgs e)
        {
            if (RunScan != null && RunScan.GetScanStatus() != ScanStatus.Finish)
            {
                bool paused = ShokoService.CmdProcessorHasher.Paused;
                ShokoService.CmdProcessorHasher.Paused = true;
                SVR_Scan s = RunScan;
                s.Status = (int)ScanStatus.Running;
                RepoFactory.Scan.Save(s);
                Refresh();
                List <ScanFile> files = RepoFactory.ScanFile.GetWaiting(s.ScanID);
                int             cnt   = 0;
                foreach (ScanFile sf in files)
                {
                    try
                    {
                        if (!File.Exists(sf.FullName))
                        {
                            sf.Status = (int)ScanFileStatus.ErrorFileNotFound;
                        }
                        else
                        {
                            FileInfo f = new FileInfo(sf.FullName);
                            if (sf.FileSize != f.Length)
                            {
                                sf.Status = (int)ScanFileStatus.ErrorInvalidSize;
                            }
                            else
                            {
                                ShokoService.CmdProcessorHasher.QueueState = new QueueStateStruct()
                                {
                                    queueState  = QueueStateEnum.HashingFile,
                                    extraParams = new[] { sf.FullName }
                                };
                                Hashes hashes =
                                    FileHashHelper.GetHashInfo(sf.FullName, true, OnHashProgress, false, false, false);
                                if (string.IsNullOrEmpty(hashes.ED2K))
                                {
                                    sf.Status = (int)ScanFileStatus.ErrorMissingHash;
                                }
                                else
                                {
                                    sf.HashResult = hashes.ED2K;
                                    if (!sf.Hash.Equals(sf.HashResult, StringComparison.InvariantCultureIgnoreCase))
                                    {
                                        sf.Status = (int)ScanFileStatus.ErrorInvalidHash;
                                    }
                                    else
                                    {
                                        sf.Status = (int)ScanFileStatus.ProcessedOK;
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception)
                    {
                        sf.Status = (int)ScanFileStatus.ErrorIOError;
                    }
                    cnt++;
                    sf.CheckDate = DateTime.Now;
                    RepoFactory.ScanFile.Save(sf);
                    if (sf.Status > (int)ScanFileStatus.ProcessedOK)
                    {
                        Scanner.Instance.AddErrorScan(sf);
                    }
                    Refresh();

                    if (cancelIntegrityCheck)
                    {
                        break;
                    }
                }
                if (files.Any(a => a.GetScanFileStatus() == ScanFileStatus.Waiting))
                {
                    s.Status = (int)ScanStatus.Standby;
                }
                else
                {
                    s.Status = (int)ScanStatus.Finish;
                }
                RepoFactory.Scan.Save(s);
                Refresh();
                RunScan = null;
                ShokoService.CmdProcessorHasher.Paused = paused;
            }
        }