Exemple #1
0
        private static void ConvertValues(QueryInstance instance)
        {
            var element = (JsonElement)instance.Value;

            switch (element.ValueKind)
            {
            case JsonValueKind.String:
                instance.Value = element.GetString();
                break;

            case JsonValueKind.Number:
                instance.Value = element.GetDouble();
                break;

            case JsonValueKind.False:
            case JsonValueKind.True:
                instance.Value = element.GetBoolean();
                break;

            case JsonValueKind.Null:
                instance.Value = null;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemple #2
0
        public void ArgumentsParser()
        {
            var query    = "link  gl https://google.com  ";
            var instance = new QueryInstance(query);

            instance.FirstSearch.Should().Be("link");
            instance.SecondToEndSearch.Should().Be("gl https://google.com");
        }
 /// <summary>
 /// Serializes QueryInstance to an XML stream.
 /// </summary>
 /// <param name="writer">XML stream to write.</param>
 /// <param name="queryInstance">QueryInstance.</param>
 /// <returns>XML stream with the QueryInstance.</returns>
 public static XmlWriter Serialize(XmlWriter writer, QueryInstance queryInstance)
 {
     writer.WriteStartElement(DTD.Request.QueryRequest.TagQueryInstance);
     if (queryInstance.Oid is Oids.AlternateKey)
     {
         XMLAlternateKeySerializer.Serialize(writer, queryInstance.GetAlternateKey());
     }
     else
     {
         XMLAdaptorOIDSerializer.Serialize(writer, queryInstance.Oid);
     }
     writer.WriteEndElement();
     return(writer);
 }
Exemple #4
0
        private Expression <Func <T, bool> > GetFilter <T>(QueryInstance instance, LambdaExpression fieldPart)
        {
            if (instance == null)
            {
                return(null);
            }

            Expression right      = Expression.Constant(Convert.ChangeType(instance.Value, fieldPart.Body.Type));
            var        left       = fieldPart.Body;
            var        parameters = fieldPart.Parameters;

            Expression middlePart;

            if (instance.Value is string str && !DateTime.TryParse(str, out _))
            {
                if (instance.Comp != null)
                {
                    if (
                        Filter.StringComparisons.Contains(instance.Comp) &&
                        ComparisonExpressions.ExpressionFactories.TryGetValue(instance.Comp, out var factory))
                    {
                        middlePart = factory(left, right);
                    }
                    else
                    {
                        throw new ArgumentException(
                                  $"String value filter comparison types can be :[{string.Join(",", Filter.StringComparisons.Select(s => s))}]");
                    }
                }
                else
                {
                    middlePart =
                        ComparisonExpressions.ExpressionFactories
                        [Filter.ComparisonMap[Filter.Comparison.Contains]](left, right);
                }
            }
 /// <summary>
 /// Serializes QueryInstance to an XML stream.
 /// </summary>
 /// <param name="writer">XML stream to write.</param>
 /// <param name="queryInstance">QueryInstance.</param>
 /// <returns>XML stream with the QueryInstance.</returns>
 public static XmlWriter Serialize(XmlWriter writer, QueryInstance queryInstance)
 {
     writer.WriteStartElement(DTD.Request.QueryRequest.TagQueryInstance);
     if (queryInstance.Oid is Oids.AlternateKey)
     {
         XMLAlternateKeySerializer.Serialize(writer, queryInstance.GetAlternateKey());
     }
     else
     {
         XMLAdaptorOIDSerializer.Serialize(writer, queryInstance.Oid);
     }
     writer.WriteEndElement();
     return writer;
 }
Exemple #6
0
 internal ComplexBoolExpression(QueryInstance ins)
 {
     this.Sequeces = new ExpressionSequences();
     this.Onwer    = ins;
 }
Exemple #7
0
 public BoolExpresstionFacotry(QueryInstance ins)
 {
     this.Ins = ins;
 }
 public QueryWrapperFilterInstance CreateQueryWrapperFilter <T>(QueryInstance <T> query)
     where T : Query
 {
     return(new QueryWrapperFilterInstance(this.Engine.Object.InstancePrototype, new QueryWrapperFilter(query.Query)));
 }
 public SimpleBoolExpression(CompareCol col, CompareOp op, object value, String str, QueryInstance owner, string pramName)
 {
     Col        = col;
     Op         = op;
     Value      = value;
     ValueStr   = str;
     this.Onwer = owner
     ;
     this.ParamName = pramName;
 }