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(); } }
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); }
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; }
internal ComplexBoolExpression(QueryInstance ins) { this.Sequeces = new ExpressionSequences(); this.Onwer = ins; }
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; }