コード例 #1
0
        public override string GetSqlFilter()
        {
            if (Selection.AllSelected)
            {
                return(null);
            }

            StringBuilder sb    = new StringBuilder("(");
            bool          first = true;

            //QueryListNode or = new QueryListNode (Keyword.Or);
            foreach (object o in GetSelectedObjects())
            {
                if (o != select_all_item)
                {
                    string     sql = null;
                    QueryValue qv  = QueryValue.CreateFromStringValue(o.ToString(), field);
                    //QueryListNode and = new QueryListNode (Keyword.And, or);
                    if (qv != null)
                    {
                        if (qv is IntegerQueryValue)
                        {
                            /*QueryTermNode term = new QueryTermNode ();
                             * term.Field = field;
                             * field.ToSql (IntegerQueryValue.GreaterThanEqual, qv);
                             * field.ToSql (IntegerQueryValue.GreaterThanEqual, qv);*/
                        }
                        else if (qv is StringQueryValue)
                        {
                            // TODO this might need fixing
                            //sql = field.ToSql (StringQueryValue.Equal, qv, true);
                            sql = field.ToSql(StringQueryValue.Equal, qv);
                        }
                    }
                    else
                    {
                        // TODO this might need fixing
                        //sql = field.ToSql (NullQueryValue.IsNullOrEmpty, NullQueryValue.Instance, true);
                        sql = field.ToSql(NullQueryValue.IsNullOrEmpty, NullQueryValue.Instance);
                    }

                    if (sql != null)
                    {
                        if (first)
                        {
                            first = false;
                        }
                        else
                        {
                            sb.Append(" OR ");
                        }
                        sb.Append(sql);
                    }
                }
            }
            sb.Append(")");
            return(first ? null : sb.ToString());
        }
コード例 #2
0
        [Test] // http://bugzilla.gnome.org/show_bug.cgi?id=612152
        public void EscapeUri()
        {
            QueryValue val = new ExactUriStringQueryValue();

            val.ParseUserQuery("space 3quotes`'\"underscore_percentage%slash/backslash\\");

            Assert.AreEqual(
                @"(CoreTracks.Uri IS NOT NULL AND CoreTracks.Uri LIKE '%space\%203quotes\%60''\%22underscore\_percentage\%25slash/backslash\%5C%' ESCAPE '\')",
                UriField.ToSql(StringQueryValue.Contains, val)
                );
        }
コード例 #3
0
        [Test] // http://bugzilla.gnome.org/show_bug.cgi?id=570312
        public void EscapeSqliteWildcards1()
        {
            QueryValue val = new StringQueryValue();

            val.ParseUserQuery("100% Techno");

            Assert.AreEqual(
                "(CoreAlbums.TitleLowered IS NOT NULL AND CoreAlbums.TitleLowered LIKE '%100 techno%' ESCAPE '\\')",
                AlbumField.ToSql(StringQueryValue.Contains, val)
                );
        }
コード例 #4
0
        public void CustomFormatParenthesisBugFixed()
        {
            QueryValue val = new StringQueryValue();

            val.ParseUserQuery("mp3");

            Assert.AreEqual(
                "(CoreTracks.MimeType LIKE '%mp3%' ESCAPE '\\' OR CoreTracks.Uri LIKE '%mp3%' ESCAPE '\\')",
                MimeTypeField.ToSql(StringQueryValue.Contains, val)
                );
        }
コード例 #5
0
        public void EscapeSingleQuotes()
        {
            QueryValue val = new StringQueryValue();

            val.ParseUserQuery("Kelli O'Hara");

            Assert.AreEqual(
                "(CoreArtists.NameLowered IS NOT NULL AND CoreArtists.NameLowered LIKE '%kelli ohara%' ESCAPE '\\')",
                ArtistField.ToSql(StringQueryValue.Contains, val)
                );
        }