コード例 #1
0
        public SearchFilter(DatabaseAccess.MatchFilters type, Bitmap icon)
        {
            Type  = type;
            Label = type.ToString();

            MemoryStream stream = new MemoryStream();

            icon.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
            Icon = BitmapFrame.Create(stream);
        }
コード例 #2
0
ファイル: DatabaseSearcher.cs プロジェクト: nicoawalker/Filer
        private void _SearchFiles(SearchResult resultContainer)
        {
            Debug.Assert(resultContainer != null);

            DatabaseAccess.MatchFilters activeFilter = m_activeSearchFilter != null ? m_activeSearchFilter.Type : DatabaseAccess.MatchFilters.Any;

            if (resultContainer.SearchTerm == null || resultContainer.SearchTerm.Length <= 1)
            {
                return;
            }

            List <RawFileData>     rawResults       = new List <RawFileData>();
            List <DBPredicate>     searchPredicates = new List <DBPredicate>();
            List <Common.FileInfo> convertedData    = new List <Common.FileInfo>();

            try
            {
                switch (activeFilter)
                {
                case DatabaseAccess.MatchFilters.Any:
                {
                    if (resultContainer.WildcardSearch == true)
                    {
                        searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, "%" + resultContainer.SearchTerm + "%"));
                        searchPredicates.Add(new DBPredicate("tags", DBOperator.LIKE, "%" + resultContainer.SearchTerm + "%"));
                    }
                    else
                    {
                        searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, resultContainer.SearchTerm + "%"));
                        searchPredicates.Add(new DBPredicate("tags", DBOperator.LIKE, resultContainer.SearchTerm + "%"));
                    }
                    rawResults = m_database.Select <RawFileData>("FileCache", searchPredicates, new RawFileDataCreator(), DBConjunction.OR);
                    break;
                }

                case DatabaseAccess.MatchFilters.Files:
                {
                    if (resultContainer.WildcardSearch == true)
                    {
                        searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, "%" + resultContainer.SearchTerm + "%"));
                    }
                    else
                    {
                        searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, resultContainer.SearchTerm + "%"));
                    }
                    searchPredicates.Add(new DBPredicate("type", DBOperator.EQUALS, "1"));

                    rawResults = m_database.Select <RawFileData>("FileCache", searchPredicates, new RawFileDataCreator(), DBConjunction.AND);
                    break;
                }

                case DatabaseAccess.MatchFilters.Folders:
                {
                    if (resultContainer.WildcardSearch == true)
                    {
                        searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, "%" + resultContainer.SearchTerm + "%"));
                    }
                    else
                    {
                        searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, resultContainer.SearchTerm + "%"));
                    }
                    searchPredicates.Add(new DBPredicate("type", DBOperator.EQUALS, "0"));

                    rawResults = m_database.Select <RawFileData>("FileCache", searchPredicates, new RawFileDataCreator(), DBConjunction.AND);
                    break;
                }

                case DatabaseAccess.MatchFilters.Tags:
                {
                    break;
                }

                default: break;
                }
            }
            catch (Exception crap)
            {
                m_settings.SessionLog += crap.Message + "\n";
                return;
            }

            if (rawResults.Count == 0)
            {
                return;
            }

            //take the retrieved raw data and convert it into the proper form
            for (int i = rawResults.Count - 1; i >= 0; i--)
            {
                Common.FileInfo info = new Common.FileInfo(rawResults[i], Properties.Resources.file, Properties.Resources.folder);
                info.CalculateWeight(resultContainer.SearchTerm);
                convertedData.Add(info);
                rawResults.RemoveAt(i);
            }

            /*sort the results in descending order based on relevancy weight*/
            convertedData.Sort((a, b) => - 1 * a.Weight.CompareTo(b.Weight));

            //remove all invalid files from the results list and store the results in the container
            resultContainer.InvalidResults = _ValidateFiles(convertedData);
            resultContainer.ValidResults   = convertedData;
        }