public Func<object[], object> CreateDelegate(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (dataStrategy is SimpleTransaction) return null; if (binder.Name.Equals("FindBy") || binder.Name.Equals("find_by")) { if (args.Length == 0) throw new ArgumentException("FindBy requires arguments."); if (args.Length == 1) { if (ReferenceEquals(args[0], null)) throw new ArgumentException("FindBy does not accept unnamed null argument."); if (args[0].GetType().Namespace == null) return null; } } var criteriaDictionary = CreateCriteriaDictionary(binder, args); if (criteriaDictionary == null) return null; var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteriaDictionary); try { var adapter = dataStrategy.GetAdapter(); var func = adapter.OptimizingDelegateFactory.CreateFindOneDelegate(adapter, table.GetQualifiedName(), criteriaExpression); return a => { var data = func(a); return (data != null && data.Count > 0) ? new SimpleRecord(data, table.GetQualifiedName(), dataStrategy) : null; }; } catch (NotImplementedException) { return null; } }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var criteria = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), MethodNameParser.ParseFromBinder(binder, args)); return new SimpleQuery(dataStrategy.Adapter, table.GetQualifiedName()).Where(criteria); //var data = dataStrategy.Find(table.GetQualifiedName(), criteria); //return CreateSimpleResultSet(table, dataStrategy, data); }
public Func<object[], object> CreateDelegate(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (dataStrategy is SimpleTransaction) return null; var criteriaDictionary = CreateCriteriaDictionary(binder, args); if (criteriaDictionary == null) return null; var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteriaDictionary); try { var adapter = dataStrategy.GetAdapter(); var func = adapter.OptimizingDelegateFactory.CreateFindOneDelegate(adapter, table.GetQualifiedName(), criteriaExpression); return a => { var data = func(a); return (data != null && data.Count > 0) ? new SimpleRecord(data, table.GetQualifiedName(), dataStrategy) : null; }; } catch (NotImplementedException) { return null; } }
public Func<object[], object> CreateDelegate(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (dataStrategy is SimpleTransaction) return null; if (binder.Name.Equals("FindBy") || binder.Name.Equals("find_by")) { ArgumentHelper.CheckFindArgs(args, binder); if (args.Length == 1 && args[0].IsAnonymous()) return null; } var criteriaDictionary = ArgumentHelper.CreateCriteriaDictionary(binder, args, "FindBy", "find_by"); if (criteriaDictionary == null) return null; var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteriaDictionary); try { var adapter = dataStrategy.GetAdapter(); var func = adapter.OptimizingDelegateFactory.CreateFindOneDelegate(adapter, table.GetQualifiedName(), criteriaExpression); return a => { var data = func(a); return (data != null && data.Count > 0) ? new SimpleRecord(data, table.GetQualifiedName(), dataStrategy) : null; }; } catch (NotImplementedException) { return null; } }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), CreateCriteriaDictionary(binder, args)); var data = dataStrategy.Run.FindOne(table.GetQualifiedName(), criteriaExpression); return data != null ? new SimpleRecord(data, table.GetQualifiedName(), dataStrategy) : null; }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var result = dataStrategy.Run.Get(table.GetName(), args); if (result == null || result.Count == 0) return null; return binder.Name.Equals("get", StringComparison.OrdinalIgnoreCase) ? new SimpleRecord(result, table.GetQualifiedName(), dataStrategy) : result.First().Value; }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var criteria = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), MethodNameParser.ParseFromBinder(binder, args)); var data = dataStrategy.Find(table.GetQualifiedName(), criteria); return new SimpleResultSet(data != null ? data.Select(dict => new SimpleRecord(dict, table.GetQualifiedName(), dataStrategy)) : Enumerable.Empty<SimpleRecord>()); }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The data strategy.</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var criteriaDictionary = ArgumentHelper.CreateCriteriaDictionary(binder, args, "ExistsBy", "exists_by", "AnyBy", "any_by"); if (criteriaDictionary == null) return null; var criteria = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteriaDictionary); return new SimpleQuery(dataStrategy, table.GetQualifiedName()).Where(criteria).Exists(); }
protected override void loadData() { var table = new DynamicTable( new EwfTableColumn( "Email", Unit.Percentage( 50 ) ), new EwfTableColumn( "Role", Unit.Percentage( 50 ) ) ); table.AddActionLink( new ActionButtonSetup( "Create User", new EwfLink( new EditUser.Info( es.info, null ) ) ) ); foreach( var user in UserManagementStatics.GetUsers() ) table.AddTextRow( new RowSetup { ClickScript = ClickScript.CreateRedirectScript( new EditUser.Info( es.info, user.UserId ) ) }, user.Email, user.Role.Name ); ph.AddControlsReturnThis( table ); }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The database or transaction</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (args.Length == 1 && args[0] is SimpleExpression) { return new SimpleQuery(dataStrategy, table.GetQualifiedName()).Where((SimpleExpression)args[0]); } throw new BadExpressionException("FindAll only accepts a criteria expression."); }
public void Find_Each_Accepts_Action_Argument() { var table = new DynamicTable("Users"); var result = table.FindEach(x => { }); }
private static SimpleExpression GetCriteriaExpression(InvokeMemberBinder binder, object[] args, DynamicTable table) { var criteria = binder.Name.Equals("delete", StringComparison.InvariantCultureIgnoreCase) ? binder.NamedArgumentsToDictionary(args) : MethodNameParser.ParseFromBinder(binder, args); return ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteria); }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The database or transaction</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (args.Length == 1 && args[0] is SimpleExpression) { return new SimpleQuery(dataStrategy, table.GetQualifiedName()).Where((SimpleExpression)args[0]); } return null; }
private static object UpdateUsingKeys(DataStrategy dataStrategy, DynamicTable table, object[] args) { var record = ObjectToDictionary(args[0]); var list = record as IList<IDictionary<string, object>>; if (list != null) return dataStrategy.UpdateMany(table.GetQualifiedName(), list); var dict = record as IDictionary<string, object>; return dataStrategy.Update(table.GetQualifiedName(), dict); }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The database (or transaction)</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (args.Length == 1 && args[0] is SimpleExpression) { var data = dataStrategy.Run.FindOne(table.GetQualifiedName(), (SimpleExpression)args[0]); return data != null ? new SimpleRecord(data, table.GetQualifiedName(), dataStrategy) : null; } throw new BadExpressionException("Find only accepts a criteria expression."); }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The database (or transaction)</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (args.Length == 1 && args[0] is SimpleExpression) { var data = dataStrategy.FindOne(table.GetQualifiedName(), (SimpleExpression)args[0]); return data != null ? new SimpleRecord(data, table.GetQualifiedName(), dataStrategy) : null; } return null; }
public static object TypeResult(object result, DynamicTable table, DataStrategy dataStrategy) { var dictionary = result as IDictionary<string, object>; if (dictionary != null) return dictionary.ToDynamicRecord(table.GetQualifiedName(), dataStrategy); var list = result as IEnumerable<IDictionary<string, object>>; if (list != null) return new SimpleResultSet(list.Select(d => d.ToDynamicRecord(table.GetQualifiedName(), dataStrategy))); return null; }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var criteria = args.OfType<SimpleExpression>().SingleOrDefault() ?? new SimpleEmptyExpression(); var data = binder.NamedArgumentsToDictionary(args).Where(kv=>!(kv.Value is SimpleExpression)).ToDictionary(); var updatedCount = dataStrategy.Update(table.GetQualifiedName(), data, criteria); return updatedCount.ResultSetFromModifiedRowCount(); }
public void Paged_IsValid_Method_OnTable() { IDynamicTable table = new DynamicTable("Users"); var query = table.Paged(pageSize: 20, currentPage: 1); Assert.IsNotNull(query); Assert.AreEqual(query.PageSize, 20); Assert.AreEqual(query.CurrentPage, 1); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (args.Length != 1) throw new ArgumentException("Incorrect number of arguments to Update method."); var record = ObjectToDictionary(args[0]); var list = record as IList<IDictionary<string, object>>; if (list != null) return dataStrategy.UpdateMany(table.GetQualifiedName(), list); var dict = record as IDictionary<string, object>; return dataStrategy.Update(table.GetQualifiedName(), dict); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (args.Length != 1) throw new ArgumentException("Incorrect number of arguments to Update method."); var keyFieldNames = dataStrategy.Adapter.GetKeyFieldNames(table.GetQualifiedName()).ToArray(); if (keyFieldNames.Length == 0) { throw new NotSupportedException("Adapter does not support key-based update for this object."); } return UpdateByKeyFields(table.GetQualifiedName(), dataStrategy, args[0], keyFieldNames); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (args.Length == 0 || args.Length > 2) throw new ArgumentException("Incorrect number of arguments to Update method."); if (args.Length == 1) { return UpdateUsingKeys(dataStrategy, table, args); } return UpdateUsingOriginalValues(dataStrategy, table, args); }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The data strategy.</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var query = new SimpleQuery(dataStrategy.GetAdapter(), table.GetQualifiedName()); if (args.Length == 1 && args[0] is SimpleExpression) { query = query.Where((SimpleExpression)args[0]); } return query.Count(); }
public void PropertyShouldReturnDynamicReference() { //Arrange dynamic table = new DynamicTable("Test", null); // Act DynamicReference column = table.TestColumn; // Assert Assert.AreEqual("Test", column.Owner.Name); Assert.AreEqual("TestColumn", column.Name); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var result = DoInsert(binder, args, dataStrategy, table.GetQualifiedName()); var dictionary = result as IDictionary<string,object>; if (dictionary != null) return dictionary.ToDynamicRecord(table.GetQualifiedName(), dataStrategy); var list = result as IEnumerable<IDictionary<string, object>>; if (list != null) return list.Select(d => d.ToDynamicRecord(table.GetQualifiedName(), dataStrategy)); return null; }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { SimpleExpression criteriaExpression = null; if (args.Length == 1 && args[0] is SimpleExpression) { criteriaExpression = args[0] as SimpleExpression; } var columName = binder.Name.Substring(3); var data = dataStrategy.Max(table.GetQualifiedName(), columName, criteriaExpression); return data; }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The database or transaction</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (args.Length == 1 && args[0] is SimpleExpression) { var data = dataStrategy.Find(table.GetQualifiedName(), (SimpleExpression)args[0]); return new SimpleResultSet(data != null ? data.Select(dict => new SimpleRecord(dict, table.GetQualifiedName(), dataStrategy)) : Enumerable.Empty<SimpleRecord>()); } return null; }
public Func<object[], object> CreateDelegate(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var func = dataStrategy.GetAdapter().OptimizingDelegateFactory.CreateGetDelegate(dataStrategy.GetAdapter(), table.GetName(), args); return a => { var data = func(a); return (data != null && data.Count > 0) ? new SimpleRecord(data, table.GetQualifiedName(), dataStrategy) : null; }; }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The data strategy.</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (binder.Name.Equals("GetCountBy") || binder.Name.Equals("get_count_by")) { ArgumentHelper.CheckFindArgs(args, binder); } var criteriaDictionary = ArgumentHelper.CreateCriteriaDictionary(binder, args, "GetCountBy", "get_count_by"); var criteria = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteriaDictionary); return new SimpleQuery(dataStrategy, table.GetQualifiedName()).Where(criteria).Count(); }
public Func<object[], object> CreateDelegate(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), MethodNameParser.ParseFromBinder(binder, args)); try { var func = dataStrategy.Adapter.CreateFindOneDelegate(table.GetQualifiedName(), criteriaExpression); return a => new SimpleRecord(func(a), table.GetQualifiedName(), dataStrategy); } catch (NotImplementedException) { return null; } }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The data strategy.</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var query = new SimpleQuery(dataStrategy, table.GetQualifiedName()); if (args.Length == 1) { var expression = args[0] as SimpleExpression; if (expression != null) { return(query.Where(expression).Count()); } else { throw new BadExpressionException("GetCount expects an expression or no parameters."); } } else if (args.Length == 0) { return(query.Count()); } throw new ArgumentException("GetCount expects an expression or no parameters."); }
public void C31_first_request() { var hex = "8286 8441 0f77 7777 2e65 7861 6d70 6c65 2e63 6f6d"; var buffer = HexToBytes(hex); var offset = 0; var count = buffer.Length; var table = new DynamicTable(); var headers = new List <IndexedHeader>(); var decoder = new Decoder(table); decoder.HeaderDecoded += (sender, args) => { headers.Add(new IndexedHeader(args.Name, args.Value)); }; decoder.Decode(buffer, ref offset, ref count); headers[0].Name.Should().Be(":method"); headers[0].Value.Should().Be("GET"); headers[1].Name.Should().Be(":scheme"); headers[1].Value.Should().Be("http"); headers[2].Name.Should().Be(":path"); headers[2].Value.Should().Be("/"); headers[3].Name.Should().Be(":authority"); headers[3].Value.Should().Be("www.example.com"); }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The data strategy.</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var query = new SimpleQuery(dataStrategy, table.GetQualifiedName()); if (args.Length == 1) { var criteria = args[0] as SimpleExpression; if (criteria != null) { query = query.Where(criteria); } else { throw new BadExpressionException(binder.Name + " requires an expression."); } } else if (args.Length != 0) { throw new BadExpressionException(binder.Name + " requires an expression."); } return(query.Exists()); }
public TableSymbol MakeNullableIfPossible() { var symbol = new TableSymbol(); var compundTableColumns = new List <ISchemaColumn>(); foreach (var column in _fullTable.Columns) { compundTableColumns.Add(ConvertColumnToNullable(column)); } foreach (var item in _tables) { var dynamicTable = new DynamicTable(item.Value.Item2.Columns.Select(c => ConvertColumnToNullable(c)).ToArray()); symbol._tables.Add(item.Key, new Tuple <ISchema, ISchemaTable>(item.Value.Item1, dynamicTable)); symbol._orders.Add(item.Key); } symbol._fullTableName = symbol._orders.Aggregate((a, b) => a + b); symbol._fullTable = new DynamicTable(compundTableColumns.ToArray()); symbol._fullSchema = new TransitionSchema(symbol._fullTableName, symbol._fullTable); return(symbol); }
public DynamicTable ExecuteDynamicTable(SqlStatement sql) { var table = new DynamicTable(); ExecuteDataReader(sql, dr => { while (dr.Read()) { if (table.NeedInit) { for (int i = 0; i < dr.FieldCount; i++) { table.AddKey(dr.GetName(i), i); } table.NeedInit = false; } var row = table.NewRow(); var cols = new object[dr.FieldCount]; dr.GetValues(cols); row.AppendMemberRange(cols); } }); return(table); }
public static StatisticRow CreateTotalRow(Table output, int num, DynamicTable dynaTable, int maxWidth, int _baseColor, int _deltaColor) { StatisticRow sr = new StatisticRow(); sr.GroupLevel = -1; sr.GroupField = -1; sr.groupNum = num; sr.outputTable = output; sr.dynamicTable = dynaTable; sr.maxFieldWidth = maxWidth; sr.baseColor = _baseColor; int dh = (int)(((uint)(_deltaColor & 0x00FF0000)) >> 16); int ds = (int)(((uint)(_deltaColor & 0x0000FF00)) >> 8); int dl = (int)(((uint)(_deltaColor & 0x000000FF))); dh = dh > 127 ? 127 - dh : dh; ds = ds > 127 ? 127 - ds : ds; dl = dl > 127 ? 127 - dl : dl; sr.deltaH = dh; sr.deltaS = ds; sr.deltaL = dl; return(sr); }
public void DynamicTable_Resize_Success(int initialMaxSize, int finalMaxSize, int insertSize) { // This is purely to make it simple to perfectly reach our initial max size to test growing a full but non-wrapping buffer. Debug.Assert((insertSize % 64) == 0, $"{nameof(insertSize)} must be a multiple of 64 ({nameof(HeaderField)}.{nameof(HeaderField.RfcOverhead)} * 2)"); DynamicTable dynamicTable = new DynamicTable(maxSize: initialMaxSize); int insertedSize = 0; while (insertedSize != insertSize) { byte[] data = Encoding.ASCII.GetBytes($"header-{dynamicTable.Size}".PadRight(16, ' ')); Debug.Assert(data.Length == 16); dynamicTable.Insert(data, data); insertedSize += data.Length * 2 + HeaderField.RfcOverhead; } List <HeaderField> headers = new List <HeaderField>(); for (int i = 0; i < dynamicTable.Count; ++i) { headers.Add(dynamicTable[i]); } dynamicTable.Resize(finalMaxSize); int expectedCount = Math.Min(finalMaxSize / 64, headers.Count); Assert.Equal(expectedCount, dynamicTable.Count); for (int i = 0; i < dynamicTable.Count; ++i) { Assert.True(headers[i].Name.AsSpan().SequenceEqual(dynamicTable[i].Name)); Assert.True(headers[i].Value.AsSpan().SequenceEqual(dynamicTable[i].Value)); } }
public void Visit(SchemaFromNode node) { var schema = _provider.GetSchema(node.Schema); ISchemaTable table; if (_currentScope.Name != "Desc") { table = schema.GetTableByName(node.Method, _schemaFromArgs.ToArray()); } else { table = new DynamicTable(new ISchemaColumn[0]); } _schemaFromArgs.Clear(); AddAssembly(schema.GetType().Assembly); _queryAlias = StringHelpers.CreateAliasIfEmpty(node.Alias, _generatedAliases); _generatedAliases.Add(_queryAlias); var tableSymbol = new TableSymbol(_queryAlias, schema, table, !string.IsNullOrEmpty(node.Alias)); _currentScope.ScopeSymbolTable.AddSymbol(_queryAlias, tableSymbol); _currentScope[node.Id] = _queryAlias; var aliasedSchemaFromNode = new SchemaFromNode(node.Schema, node.Method, (ArgsListNode)Nodes.Pop(), _queryAlias); if (!InferredColumns.ContainsKey(aliasedSchemaFromNode)) { InferredColumns.Add(aliasedSchemaFromNode, table.Columns); } Nodes.Push(aliasedSchemaFromNode); }
private static object UpdateUsingOriginalValues(DataStrategy dataStrategy, DynamicTable table, object[] args) { var newValues = ObjectToDictionary(args[0]); var newValuesList = newValues as IList <IDictionary <string, object> >; if (newValuesList != null) { var originalValuesList = ObjectToDictionary(args[1]) as IList <IDictionary <string, object> >; if (originalValuesList == null) { throw new InvalidOperationException("Parameter type mismatch; both parameters to Update should be same type."); } return(dataStrategy.UpdateMany(table.GetQualifiedName(), newValuesList, originalValuesList)); } var newValuesDict = newValues as IDictionary <string, object>; var originalValuesDict = ObjectToDictionary(args[1]) as IDictionary <string, object>; if (originalValuesDict == null) { throw new InvalidOperationException("Parameter type mismatch; both parameters to Update should be same type."); } return(dataStrategy.Update(table.GetQualifiedName(), newValuesDict, originalValuesDict)); }
public HPackDecoderTest() { _dynamicTable = new DynamicTable(DynamicTableInitialMaxSize); _decoder = new HPackDecoder(DynamicTableInitialMaxSize, maxResponseHeadersLength: 4096, dynamicTable: _dynamicTable); }
/// <summary> /// Executes the command. /// </summary> /// <param name="database">The database.</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { return(new SimpleResultSet(dataStrategy.Find(table.GetQualifiedName(), null) .Select(dict => new SimpleRecord(dict, table.GetQualifiedName(), dataStrategy)))); }
internal override void SetParent(DynamicTable table) { SetLayout(table != null ? table.layout : null); }
private static SimpleExpression GetCriteriaExpression(InvokeMemberBinder binder, object[] args, DynamicTable table) { IDictionary <string, object> criteria; if (binder.Name.Equals("delete", StringComparison.InvariantCultureIgnoreCase)) { criteria = binder.NamedArgumentsToDictionary(args); if (criteria.Count == 0 && args.Length == 1) { criteria = args[0] as IDictionary <string, object> ?? args[0].ObjectToDictionary(); } } else { criteria = MethodNameParser.ParseFromBinder(binder, args); } if (criteria.Count == 0) { throw new InvalidOperationException("No criteria specified for Delete. To delete all data, use DeleteAll()."); } return(ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteria)); }
public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { object instance; JContainer container; if (reader.TokenType == JsonToken.Null) { return(null); } if (reader.TokenType == JsonToken.StartArray) { container = JArray.Load(reader); if (objectType == typeof(DynamicRow)) { var dynamicRow = new DynamicRow(); instance = dynamicRow; serializer.Populate(container.CreateReader(), dynamicRow.Items); } else if (objectType == typeof(DynamicItem)) { var dynamicTable = new DynamicTable(); instance = dynamicTable; serializer.Populate(container.CreateReader(), dynamicTable.Rows); } else { throw new EtoException("Invalid object graph"); } } else { container = JObject.Load(reader); if (container["$type"] == null) { if (container["Rows"] != null) { instance = new DynamicTable(); } else if (container["Control"] != null) { instance = new DynamicControl(); } else { throw new EtoException("Could not infer the type of object to create"); } serializer.Populate(container.CreateReader(), instance); } else { var type = Type.GetType((string)container ["$type"]); if (!typeof(DynamicItem).IsAssignableFrom(type)) { var dynamicControl = new DynamicControl(); dynamicControl.Control = serializer.Deserialize(container.CreateReader()) as Control; instance = dynamicControl; } else { instance = serializer.Deserialize(container.CreateReader()); } } } if (objectType == typeof(DynamicRow) && instance.GetType() != typeof(DynamicRow)) { var row = new DynamicRow(); row.Items.Add(instance as DynamicItem); return(row); } return(instance); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { SimpleExpression criteriaExpression = GetCriteriaExpression(binder, args, table); return(dataStrategy.Delete(table.GetQualifiedName(), criteriaExpression)); }
private void OnDynamicTableCapacity(int dynamicTableSize) { // Call Decoder to update the table size. DynamicTable.Resize(dynamicTableSize); _state = State.Ready; }
public HPackDecoderTest() { _dynamicTable = new DynamicTable(DynamicTableInitialMaxSize); _decoder = new HPackDecoder(DynamicTableInitialMaxSize, _dynamicTable); }
public void ExportAndImport_XML() { IDynamicTable table = new DynamicTable(DynamicTableType.Expandable); dynamic row; string xmlExport; string fileName = _assemblyDirectory + @"\CsvTest.xml"; //add values row = new ExpandoObject(); row.FirstName = "Hans"; row.LastName = "Mueller"; row.Age = 30; row.TimeStamp = new DateTime(2012, 12, 24, 1, 2, 3); table.AddRow(row); row = new ExpandoObject(); row.LastName = "Meier"; row.Street = "Main street"; table.AddRow(row); //compare Assert.AreEqual(2, table.Rows.Count); Assert.AreEqual(5, table.Columns.Count); //export xmlExport = table.AsXml(); using (StreamWriter writer = new StreamWriter(fileName)) { writer.Write(xmlExport); } //remove rows table.RemoveAllRows(); Assert.AreEqual(0, table.Rows.Count); Assert.AreEqual(5, table.Columns.Count); //import using (StreamReader reader = new StreamReader(fileName)) { table.FromXml(ReadFile(reader)); } //compare row = table.Rows[0]; Assert.AreEqual("Hans", row.FirstName); Assert.AreEqual("Mueller", row.LastName); Assert.AreEqual(30, row.Age); Assert.AreEqual(2012, row.TimeStamp.Year); Assert.AreEqual(12, row.TimeStamp.Month); Assert.AreEqual(24, row.TimeStamp.Day); Assert.AreEqual(1, row.TimeStamp.Hour); Assert.AreEqual(2, row.TimeStamp.Minute); Assert.AreEqual(3, row.TimeStamp.Second); Assert.AreEqual("", row.Street); row = table.Rows[1]; Assert.AreEqual("", row.FirstName); Assert.AreEqual("Meier", row.LastName); Assert.AreEqual(0, row.Age); Assert.AreEqual(0, row.TimeStamp.Ticks); Assert.AreEqual("Main street", row.Street); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { return(DoInsert(binder, args, dataStrategy, table.GetQualifiedName()).ToDynamicRecord(table.GetQualifiedName(), dataStrategy)); }
static void Main(string[] args) { var data = Generate(); DynamicTable.From(data).Write(); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { return(CreateSimpleQuery(table, binder, args, dataStrategy)); }
private static SimpleExpression GetCriteriaExpression(InvokeMemberBinder binder, object[] args, DynamicTable table) { var criteria = binder.Name.Equals("delete", StringComparison.InvariantCultureIgnoreCase) ? binder.NamedArgumentsToDictionary(args) : MethodNameParser.ParseFromBinder(binder, args); return(ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteria)); }
private static object CreateSimpleQuery(DynamicTable table, InvokeMemberBinder binder, object[] args, DataStrategy dataStrategy) { var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), MethodNameParser.ParseFromBinder(binder, args)); return(new SimpleQuery(dataStrategy, table.GetQualifiedName()).Where(criteriaExpression)); }
public QueryResult(string sqlstr, DynamicTable dynaTable, string virtualpath, int maxRecord) { HybridDictionary linkColNames = new HybridDictionary(true); DataAccessType datype = dynaTable.DAType; string connstr = dynaTable.ConnectionString; IDataAccess dataAccess = DataAccessFactory.Produce(datype, connstr); dataAccess.CommandTimeout = 600; DataTable dt = new DataTable("TABLE"); IDataReader myReader = dataAccess.ExecuteDataReader(sqlstr); try { int ct = myReader.FieldCount; for (int i = 0; i < ct; i++) { if (dt.Columns.IndexOf(myReader.GetName(i)) != -1) { dt.Columns.Remove(myReader.GetName(i)); } if (dynaTable[myReader.GetName(i)] == null) //不显示自增长列 { continue; } linkColNames[myReader.GetName(i)] = false; Type t = myReader.GetFieldType(i); if (t.IsArray) { dt.Columns.Add(myReader.GetName(i), typeof(string)); linkColNames[myReader.GetName(i)] = true; } else { dt.Columns.Add(myReader.GetName(i), t); } } int num = 0; while (myReader.Read() && num < maxRecord) { DataRow dr = dt.NewRow(); for (int i = 0; i < dt.Columns.Count; i++) { if (dynaTable[dt.Columns[i].ColumnName] == null) //不显示自增长列 { continue; } if (!(bool)linkColNames[dt.Columns[i].ColumnName]) { dr[dt.Columns[i].ColumnName] = myReader[dt.Columns[i].ColumnName]; } } dt.Rows.Add(dr); num++; } } finally { if (myReader != null) { myReader.Close(); } } for (int i = 0; i < dt.Columns.Count; i++) { if ((bool)linkColNames[dt.Columns[i].ColumnName]) { myReader = dataAccess.ExecuteDataReader(sqlstr, CommandBehavior.SequentialAccess); try { int rowI = 0; int colI = myReader.GetOrdinal(dt.Columns[i].ColumnName); while (myReader.Read() && rowI < maxRecord) { DataRow dr = dt.Rows[rowI]; if (myReader.GetFieldType(colI).IsArray) { if (!myReader.IsDBNull(colI)) { long size = myReader.GetBytes(colI, 0, null, 0, 0); if (size > 0) { byte[] content = new byte[size]; myReader.GetBytes(colI, 0, content, 0, (int)size); dr[dt.Columns[i].ColumnName] = FileField.Content(content, virtualpath); } else { dr[dt.Columns[i].ColumnName] = null; } } else { dr[dt.Columns[i].ColumnName] = null; } } else { dr[dt.Columns[i].ColumnName] = ""; } rowI++; } } finally { if (myReader != null) { myReader.Close(); } } } } dataTable = dt; }
public HPackDecoderTests() { _dynamicTable = new DynamicTable(DynamicTableInitialMaxSize); _decoder = new HPackDecoder(DynamicTableInitialMaxSize, MaxRequestHeaderFieldSize, _dynamicTable); }
private long _highestOpenedStreamId; // TODO lock to access //private volatile bool _haveSentGoAway; public Http3Connection(HttpConnectionContext context) { Context = context; DynamicTable = new DynamicTable(0); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { return(dataStrategy.GetAdapter().Get(table.GetName(), args)); }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The database or transaction.</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { return(new SimpleQuery(dataStrategy, table.GetQualifiedName())); }
public Func <object[], object> CreateDelegate(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { throw new NotImplementedException(); }
/// <summary> /// Executes the command. /// </summary> /// <param name="dataStrategy">The data strategy.</param> /// <param name="table"></param> /// <param name="binder">The binder from the <see cref="DynamicTable"/> method invocation.</param> /// <param name="args">The arguments from the <see cref="DynamicTable"/> method invocation.</param> /// <returns></returns> public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var criteria = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), MethodNameParser.ParseFromBinder(binder, args)); return(new SimpleQuery(dataStrategy.GetAdapter(), table.GetQualifiedName()).Where(criteria).Count()); }