Esempio n. 1
0
        /// <summary>
        /// Odnajduje tylko pliki (bez folderów).
        /// </summary>
        public void InsertFilesToList(Regex regex, DateTime?dateFrom, DateTime?dateTo, long?sizeFrom, long?sizeTo, KeywordMatcher keywordMatcher, List <FileInDatabase> listCrc, List <FileInDatabase> listNoCrc)
        {
            foreach (FileInDatabase file in files)
            {
                if (regex.IsMatch(file.Name) &&
                    ((dateFrom == null) || ((file.CreationTime >= dateFrom) && (file.CreationTime <= dateTo))) &&
                    ((sizeFrom == null) || ((file.Length >= sizeFrom) && (file.Length <= sizeTo))) &&
                    (keywordMatcher.IsMatch(file.Keywords)))
                {
                    if (file.Crc == 0)
                    {
                        listNoCrc.Add(file);
                    }
                    else
                    {
                        listCrc.Add(file);
                    }
                }
            }

            foreach (IFolder folder in folders)
            {
                folder.InsertFilesToList(regex, dateFrom, dateTo, sizeFrom, sizeTo, keywordMatcher, listCrc, listNoCrc);
            }
        }
Esempio n. 2
0
        public void InsertFilesToList(Regex regex, DateTime?dateFrom, DateTime?dateTo, long?sizeFrom, long?sizeTo, KeywordMatcher keywordMatcher, List <ItemInDatabase> list)
        {
            if (!(owner is CompressedFile) && regex.IsMatch(Name) &&
                ((dateFrom == null) || ((owner.CreationTime >= dateFrom) && (owner.CreationTime <= dateTo))) &&
                (keywordMatcher.IsMatch(owner.Keywords)))
            {
                list.Add(owner);
            }

            foreach (FileInDatabase file in files)
            {
                if (regex.IsMatch(file.Name) &&
                    ((dateFrom == null) || ((file.CreationTime >= dateFrom) && (file.CreationTime <= dateTo))) &&
                    ((sizeFrom == null) || ((file.Length >= sizeFrom) && (file.Length <= sizeTo))) &&
                    (keywordMatcher.IsMatch(file.Keywords)))
                {
                    list.Add(file);
                }
            }

            foreach (IFolder folder in folders)
            {
                folder.InsertFilesToList(regex, dateFrom, dateTo, sizeFrom, sizeTo, keywordMatcher, list);
            }
        }
Esempio n. 3
0
        private void search(SearchEventArgs e, List <ItemInDatabase> list)
        {
            Cursor oldCursor = Cursor.Current;

            try
            {
                Cursor.Current = Cursors.WaitCursor;

                // usuwanie podtekstów ".*", gdy przed tekstem nie ma œrednika lub pocz¹tku tekstu, a za tekstem jest œrednik lub koniec tekstu
                int i = 0;
                while ((i = e.FileMask.IndexOf(".*", i, StringComparison.Ordinal)) > -1)
                {
                    // i > -1
                    if ((i > 0) && (e.FileMask[i - 1] != ';') && ((i == e.FileMask.Length - 2) || (e.FileMask[i + 2] == ';')))
                    {
                        e.FileMask = e.FileMask.Substring(0, i) + e.FileMask.Substring(i + 2);
                    }
                }

                Regex fileMaskRegex = new Regex(e.FileMask.ToRegex(e.TreatFileMaskAsWildcard), RegexOptions.Compiled | RegexOptions.IgnoreCase);

                KeywordMatcher keywordMatcher = new KeywordMatcher(e.Keywords, e.AllKeywordsNeeded, e.CaseSensitiveKeywords, e.TreatKeywordsAsWildcard);

                list.Clear();

                if (e.OnlyDuplicates)
                {
                    List <FileInDatabase> foundFilesCrc   = new List <FileInDatabase>();
                    List <FileInDatabase> foundFilesNoCrc = new List <FileInDatabase>();

                    foreach (DiscInDatabase disc in e.SearchInVolumes)
                    {
                        disc.InsertFilesToList(fileMaskRegex, e.DateFrom, e.DateTo, e.SizeFrom, e.SizeTo, keywordMatcher, foundFilesCrc, foundFilesNoCrc);
                    }

                    foundFilesCrc.Sort(new FileComparer(true));
                    FileComparer noCrcComparer = new FileComparer(false);
                    foundFilesNoCrc.Sort(noCrcComparer);
                    FileInDatabase lastFile = null; ulong lastCrc = 0;
                    foreach (FileInDatabase file in foundFilesCrc)
                    {
                        if (file.Hash != 0)
                        {
                            if (lastCrc != file.Hash)
                            {
                                lastCrc  = file.Hash;
                                lastFile = file;
                            }
                            else
                            {
                                if (lastFile != null)
                                { // lastFile dodajemy tylko raz
                                    insertSimilarToList(lastFile, foundFilesNoCrc, list, noCrcComparer);
                                    list.Add(lastFile);
                                    lastFile = null;
                                }
                                list.Add(file);
                                insertSimilarToList(file, foundFilesNoCrc, list, noCrcComparer);
                            }
                        }
                    }
                    lastFile = null; string lastKey = null;
                    foreach (FileInDatabase file in foundFilesNoCrc)
                    {
                        if (lastKey != file.NameLengthKey)
                        {
                            lastKey  = file.NameLengthKey;
                            lastFile = file;
                        }
                        else
                        {
                            if (lastFile != null)
                            { // lastFile dodajemy tylko raz
                                list.Add(lastFile);
                                lastFile = null;
                            }
                            list.Add(file);
                        }
                    }
                }
                else
                {
                    foreach (DiscInDatabase disc in e.SearchInVolumes)
                    {
                        disc.InsertFilesToList(fileMaskRegex, e.DateFrom, e.DateTo, e.SizeFrom, e.SizeTo, keywordMatcher, list /*, lvSearchResults*/);
                    }
                }
            }
            finally
            {
                Cursor.Current = oldCursor;
            }
        }
Esempio n. 4
0
 public void InsertFilesToList(Regex regex, DateTime?dateFrom, DateTime?dateTo, long?sizeFrom, long?sizeTo, KeywordMatcher keywordMatcher, List <ItemInDatabase> list)
 {
     folderImpl.InsertFilesToList(regex, dateFrom, dateTo, sizeFrom, sizeTo, keywordMatcher, list);
 }
Esempio n. 5
0
 void IFolder.InsertFilesToList(Regex regex, DateTime?dateFrom, DateTime?dateTo, long?sizeFrom, long?sizeTo, KeywordMatcher keywordMatcher, List <FileInDatabase> listCrc, List <FileInDatabase> listNoCrc)
 {
     folderImpl.InsertFilesToList(regex, dateFrom, dateTo, sizeFrom, sizeTo, keywordMatcher, listCrc, listNoCrc);
 }