예제 #1
0
        public static void QueryInsertQuery(ICRUDDataStore store)
        {
            var query = new Query("CRUD.Patient.List")
            {
                new Query.Param("LN", "%loff")
            };
            var result = store.Load(query);

            Assert.AreEqual(1, result.Count);
            var rowset = result[0];

            Assert.AreEqual(0, rowset.Count);

            var row = new DynamicRow(rowset.Schema);

            row["ssn"]        = "999-88-9012";
            row["First_Name"] = "Jack";
            row["Last_Name"]  = "Kozloff";
            row["DOB"]        = new DateTime(1980, 1, 12);

            Assert.IsNull(row.Validate());

            store.Insert(row);


            result = store.Load(query);

            Assert.AreEqual(1, result.Count);
            rowset = result[0];

            Assert.AreEqual(1, rowset.Count);
            Assert.AreEqual("Jack", rowset[0]["First_Name"]);
        }
예제 #2
0
파일: Rowsets.cs 프로젝트: filmor/nfx
        public void BuildUsingAdHockSchema()
        {
            var schema = new Schema("TEZT",
                                    new Schema.FieldDef("ID", typeof(int), new List <FieldAttribute> {
                new FieldAttribute(required: true, key: true)
            }),
                                    new Schema.FieldDef("Description", typeof(string), new List <FieldAttribute> {
                new FieldAttribute(required: true)
            })
                                    );

            var tbl = new Rowset(schema);

            for (var i = 0; i < 1000; i++)
            {
                var row = new DynamicRow(tbl.Schema);

                row["ID"]          = i;
                row["Description"] = "Item-{0}".Args(i);

                tbl.Insert(row);
            }

            Assert.AreEqual(1000, tbl.Count);

            var match = tbl.FindByKey(178);

            Assert.IsNotNull(match);
            Assert.AreEqual("Item-178", match["Description"]);
        }
예제 #3
0
파일: DropDown.cs 프로젝트: anthrax3/AForm
        public void initDDL()
        {
            //template.Bindings["Value"];
            //template.Bindings["Key"];

            string tableName        = this["Table"].GetValue <string>();
            string displayFieldName = this["DisplayField"].GetValue <string>();

            valueFieldName = this["ValueField"].GetValue <string>();

            SelectCriteria sc = new SelectCriteria();

            sc.fields = new System.Collections.ArrayList();
            sc.fields.Add(displayFieldName);
            sc.fields.Add(valueFieldName);

            myRows = DynamicRow.FindRows(tableName, sc);

            foreach (DynamicRow row in myRows)
            {
                ctl.Items.Add(row[displayFieldName].AsObject());
            }

            ctl.SelectedIndexChanged += new EventHandler(ctl_SelectedIndexChanged);
        }
예제 #4
0
        public void T_09_DynamicRow()
        {
            var schema = new Schema("Dynamic Schema",
                                    new Schema.FieldDef("ID", typeof(int), new List <FieldAttribute> {
                new FieldAttribute(required: true, key: true)
            }),
                                    new Schema.FieldDef("Description", typeof(string), new List <FieldAttribute> {
                new FieldAttribute(required: true)
            })
                                    );

            var row = new DynamicRow(schema);

            row["ID"]          = 123;
            row["Description"] = "T-90 Tank";

            var rc = new RowConverter();

            var doc = rc.RowToBSONDocument(row, "A");

            Console.WriteLine(doc.ToString());

            var row2 = new DynamicRow(schema);

            rc.BSONDocumentToRow(doc, row2, "A");

            Assert.AreEqual(123, row2["ID"]);
            Assert.AreEqual("T-90 Tank", row2["Description"]);
        }
예제 #5
0
파일: SchemaEQU.cs 프로젝트: filmor/nfx
        public void DynamicRows()
        {
            var tbl = new Table(Schema.GetForTypedRow(typeof(Person)));


            var row = new DynamicRow(tbl.Schema);

            row["ID"]           = "POP1";
            row["FirstName"]    = "Oleg";
            row["LastName"]     = "Popov-1";
            row["DOB"]          = new DateTime(1953, 12, 10);
            row["YearsInSpace"] = 12;

            tbl.Insert(row);


            var ser = new SlimSerializer();

            using (var ms = new MemoryStream())
            {
                ser.Serialize(ms, tbl);

                ms.Position = 0;

                var tbl2 = ser.Deserialize(ms) as Table;

                Assert.IsNotNull(tbl2);
                Assert.IsFalse(object.ReferenceEquals(tbl, tbl2));

                Assert.IsFalse(object.ReferenceEquals(tbl.Schema, tbl2.Schema));

                Assert.IsTrue(tbl.Schema.IsEquivalentTo(tbl2.Schema));
            }
        }
예제 #6
0
        public static void GetSchemaAndTestVariousTypes(ICRUDDataStore store)
        {
            var schema = store.GetSchema(new Query("CRUD.Types.Load"));

            var row = new DynamicRow(schema);

            row["GDID"]        = new GDID(0, 145);
            row["SCREEN_NAME"] = "User1";
            row["STRING_NAME"] = "Some user 1";
            row["CHAR_NAME"]   = "Some user 2";
            row["BOOL_CHAR"]   = 'T';
            row["BOOL_BOOL"]   = true;

            row["AMOUNT"] = 145670.23m;

            row["DOB"] = new DateTime(1980, 12, 1);

            store.Insert(row);

            var row2 = store.LoadOneRow(new Query("CRUD.Types.Load", new GDID(0, 145)));

            Assert.NotNull(row2);
            Assert.AreEqual(145, row2["GDID"]);
            Assert.AreEqual("User1", row2["Screen_Name"]);
            Assert.AreEqual("Some user 1", row2["String_Name"]);
            Assert.AreEqual("Some user 2", row2["Char_Name"]);

            Assert.AreEqual(true, row2["BOOL_Char"].AsBool());
            Assert.AreEqual(true, row2["BOOL_BOOL"].AsBool());

            Assert.AreEqual(145670.23m, row2["Amount"]);

            Assert.AreEqual(1980, row2["DOB"].AsDateTime().Year);
        }
예제 #7
0
파일: TestLogic.cs 프로젝트: zhabis/nfx
        public static void ASYNC_QueryInsertQuery(ICRUDDataStore store)
        {
            var query = new Query("CRUD.Patient.List")
            {
                new Query.Param("LN", "%loff")
            };
            var task = store.LoadAsync(query);

            Aver.AreEqual(1, task.Result.Count);
            var rowset = task.Result[0];

            Aver.AreEqual(0, rowset.Count);

            var row = new DynamicRow(rowset.Schema);

            row["ssn"]        = "999-88-9012";
            row["First_Name"] = "Jack";
            row["Last_Name"]  = "Kozloff";
            row["DOB"]        = new DateTime(1980, 1, 12);

            Aver.IsNull(row.Validate());

            store.InsertAsync(row).Wait();


            task = store.LoadAsync(query);

            Aver.AreEqual(1, task.Result.Count);
            rowset = task.Result[0];

            Aver.AreEqual(1, rowset.Count);
            Aver.AreObjectsEqual("Jack", rowset[0]["First_Name"]);
        }
예제 #8
0
파일: RowCopyFields.cs 프로젝트: zhabis/nfx
        public void CopyFields_ExtendedDynamicRow_To_DynamicRow()
        {
            var schema    = Schema.GetForTypedRow(typeof(Person));
            var fieldDefs = schema.FieldDefs.ToList();

            fieldDefs.Add(new Schema.FieldDef("Info", typeof(string), new QuerySource.ColumnDef("Info")));
            fieldDefs.Add(new Schema.FieldDef("Count", typeof(long), new QuerySource.ColumnDef("Info")));
            var extendedSchema = new Schema("sname", fieldDefs.ToArray());

            var from = new DynamicRow(extendedSchema);

            from["FirstName"]  = "Ivan";
            from["Amount"]     = 10;
            from["DOB"]        = new DateTime(1990, 2, 16);
            from["GoodPerson"] = true;
            from["Info"]       = "extended info";
            from["Count"]      = long.MaxValue;

            var to = new DynamicRow(schema);

            from.CopyFields(to);

            Aver.AreObjectsEqual(to["FirstName"], from["FirstName"]);
            Aver.AreObjectsEqual(to["Amount"], from["Amount"]);
            Aver.AreObjectsEqual(to["DOB"], from["DOB"]);
            Aver.AreObjectsEqual(to["GoodPerson"], from["GoodPerson"]);
        }
예제 #9
0
        public virtual string SerializeDbData(Func <string, bool> tableNamePredicate = null)
        {
            var tables = this.DbInspector.GetTables(true, tableNamePredicate);


            var dbData =
                new DynamicRow(); // it is strange to store entire data in 'dynamic' 'row', but why to invent new dynamic ancestor?

            using (var command = this.Connection.CreateCommand())
            {
                foreach (var table in tables)
                {
                    var sql = this.Cruder.ScriptBuilder.BuildSelectAllScript(table);
                    command.CommandText = sql;

                    var rows = DbUtils
                               .GetCommandRows(command);

                    dbData.SetValue(table.Name, rows);
                }
            }

            var json = JsonConvert.SerializeObject(dbData, Formatting.Indented);

            return(json);
        }
예제 #10
0
파일: RowCopyFields.cs 프로젝트: zhabis/nfx
        public void CopyFields_DynamicRow_To_Amorphous_IncludeAmorphous()
        {
            var schema = Schema.GetForTypedRow(typeof(Person));
            var from   = new DynamicRow(schema);

            from["FirstName"]  = "Ivan";
            from["Amount"]     = 10;
            from["DOB"]        = new DateTime(1990, 2, 16);
            from["GoodPerson"] = true;

            var to = new AmorphousDynamicRow(Schema.GetForTypedRow(typeof(Empty)));

            to.AmorphousData["field1"]    = 123;
            to.AmorphousData["FirstName"] = "John";

            from.CopyFields(to, true);

            Aver.AreEqual(0, to.Schema.FieldCount);
            Aver.AreEqual(12, to.AmorphousData.Count);
            Aver.AreObjectsEqual(123, to.AmorphousData["field1"]);
            Aver.AreObjectsEqual(from["FirstName"], to.AmorphousData["FirstName"]);
            Aver.AreObjectsEqual(from["Amount"], to.AmorphousData["Amount"]);
            Aver.AreObjectsEqual(from["DOB"], to.AmorphousData["DOB"]);
            Aver.AreObjectsEqual(from["GoodPerson"], to.AmorphousData["GoodPerson"]);
        }
예제 #11
0
        public void InsertRow_RowWithEnums_Inserts()
        {
            // Arrange
            var foo = new DynamicRow(new
            {
                id          = 1,
                name        = "Vasya",
                enum_int32  = (ushort)1,
                enum_string = UserRole.Admin,
            });

            // Act
            _cruder.GetTableValuesConverter("foo").SetColumnConverter("enum_int32", new EnumValueConverter <Town>(EnumValueConverterBehaviour.Integer));
            _cruder.GetTableValuesConverter("foo").SetColumnConverter("enum_string", new EnumValueConverter <UserRole>(EnumValueConverterBehaviour.String));

            _cruder.InsertRow("foo", foo);

            // Assert
            using (var command = this.Connection.CreateCommand())
            {
                command.CommandText = @"SELECT [id], [name], [enum_int32], [enum_string] FROM [foo] WHERE [id] = 1";

                var row = DbUtils.GetCommandRows(command).Single();

                Assert.That(row.id, Is.EqualTo(1));
                Assert.That(row.name, Is.EqualTo("Vasya"));
                Assert.That(row.enum_int32, Is.EqualTo(1));
                Assert.That(row.enum_string, Is.EqualTo(UserRole.Admin.ToString()));
            }
        }
예제 #12
0
        public static void GetSchemaAndTestFullGDID(ICRUDDataStore store)
        {
            var schema = store.GetSchema(new Query("CRUD.FullGDID.Load"));

            var row = new DynamicRow(schema);

            var key = new GDID(179, 1, 1234567890);

            Console.WriteLine(key.Bytes.ToDumpString(DumpFormat.Hex));

            row["GDID"] = new GDID(179, 1, 1234567890);
            Console.WriteLine(((byte[])row["GDID"]).ToDumpString(DumpFormat.Hex));

            row["VARGDID"]     = new GDID(12, 9, 9876543210);
            row["STRING_NAME"] = "DA DA DA!";

            store.Insert(row);

            var row2 = store.LoadOneRow(new Query("CRUD.FullGDID.Load", key, typeof(FullGDID))) as FullGDID;

            Assert.NotNull(row2);
            Assert.AreEqual(key, row2.GDID);
            Assert.AreEqual(new GDID(12, 9, 9876543210), row2.VARGDID);
            Assert.AreEqual("DA DA DA!", row2["String_Name"]);
        }
예제 #13
0
파일: RowCopyFields.cs 프로젝트: zhabis/nfx
        public void CopyFields_DynamicRow()
        {
            var from = new DynamicRow(Schema.GetForTypedRow(typeof(Person)));

            from["FirstName"]        = "Ivan";
            from["LastName"]         = "Petrov";
            from["Amount"]           = 10;
            from["Classification"]   = "class1";
            from["Description"]      = null;
            from["DOB"]              = new DateTime(1990, 2, 16);
            from["GoodPerson"]       = true;
            from["ID"]               = "abc";
            from["LuckRatio"]        = 12345.6789D;
            from["YearsInSpace"]     = 20;
            from["YearsWithCompany"] = null;

            var to = new DynamicRow(Schema.GetForTypedRow(typeof(Person)));

            to["Description"]      = "descr";
            to["YearsWithCompany"] = 30;

            from.CopyFields(to);

            Aver.AreObjectsEqual(to["FirstName"], from["FirstName"]);
            Aver.AreObjectsEqual(to["LastName"], from["LastName"]);
            Aver.AreObjectsEqual(to["Amount"], from["Amount"]);
            Aver.AreObjectsEqual(to["Classification"], from["Classification"]);
            Aver.AreObjectsEqual(to["Description"], from["Description"]);
            Aver.AreObjectsEqual(to["DOB"], from["DOB"]);
            Aver.AreObjectsEqual(to["GoodPerson"], from["GoodPerson"]);
            Aver.AreObjectsEqual(to["ID"], from["ID"]);
            Aver.AreObjectsEqual(to["LuckRatio"], from["LuckRatio"]);
            Aver.AreObjectsEqual(to["YearsInSpace"], from["YearsInSpace"]);
            Aver.AreObjectsEqual(to["YearsWithCompany"], from["YearsWithCompany"]);
        }
예제 #14
0
파일: Rowsets.cs 프로젝트: filmor/nfx
        public void PopulateAndFindKey_DynamicRows()
        {
            var tbl = new Rowset(Schema.GetForTypedRow(typeof(Person)));

            for (var i = 0; i < 1000; i++)
            {
                var row = new DynamicRow(tbl.Schema);

                row["ID"]           = "POP{0}".Args(i);
                row["FirstName"]    = "Oleg";
                row["LastName"]     = "Popov-{0}".Args(i);
                row["DOB"]          = new DateTime(1953, 12, 10);
                row["YearsInSpace"] = 12;

                tbl.Insert(row);
            }

            Assert.AreEqual(1000, tbl.Count);

            var match1 = tbl.FindByKey("POP35");

            Assert.IsNotNull(match1);
            Assert.AreEqual("Popov-35", match1["LastName"]);

            var match2 = tbl.FindByKey("POP36") as DynamicRow;

            Assert.IsNotNull(match2);
            Assert.AreEqual("Popov-36", match2["LastName"]);

            var match3 = tbl.FindByKey("DoesNotExist");

            Assert.IsNull(match3);
        }
예제 #15
0
        public void InferSchema()
        {
            var doc = new BSONDocument();

            doc.Set(new BSONStringElement("FullName", "Alex Bobby"));
            doc.Set(new BSONInt32Element("Age", 123));
            doc.Set(new BSONBooleanElement("IsGood", true));

            var c = new RowConverter();

            var schema = c.InferSchemaFromBSONDocument(doc);

            Assert.AreEqual(3, schema.FieldCount);

            Assert.AreEqual(0, schema["FullName"].Order);
            Assert.AreEqual(1, schema["Age"].Order);
            Assert.AreEqual(2, schema["IsGood"].Order);

            Assert.AreEqual(typeof(object), schema["FullName"].NonNullableType);
            Assert.AreEqual(typeof(object), schema["Age"].NonNullableType);
            Assert.AreEqual(typeof(object), schema["IsGood"].NonNullableType);

            var row = new DynamicRow(schema);

            c.BSONDocumentToRow(doc, row, null);

            Assert.AreEqual("Alex Bobby", row[0]);
            Assert.AreEqual(123, row[1]);
            Assert.AreEqual(true, row[2]);

            Assert.AreEqual("Alex Bobby", row["FullName"]);
            Assert.AreEqual(123, row["Age"]);
            Assert.AreEqual(true, row["IsGood"]);
        }
예제 #16
0
        public void Validate_Error_ValueList()
        {
            var person = new DynamicRow(Schema.GetForTypedRow(typeof(Person)));

            person["ID"]             = "POP1";
            person["FirstName"]      = "Oleg";
            person["LastName"]       = "Popov";
            person["DOB"]            = new DateTime(1981, 2, 12);
            person["YearsInSpace"]   = 45;
            person["Amount"]         = 100;
            person["Description"]    = "0123";
            person["Classification"] = "INVALID";

            var error = person.Validate();

            Console.WriteLine(error);
            Assert.IsInstanceOf(typeof(CRUDFieldValidationException), error);
            Assert.AreEqual("Classification", ((CRUDFieldValidationException)error).FieldName);
            Assert.IsTrue(error.Message.Contains("not in list of permitted values"));

            person["Classification"] = "good";
            Assert.IsNull(person.Validate());
            person["Classification"] = "bad";
            Assert.IsNull(person.Validate());
            person["Classification"] = "ugly";
            Assert.IsNull(person.Validate());
        }
예제 #17
0
        public void Equality()
        {
            var person1 = new DynamicRow(Schema.GetForTypedRow(typeof(Person)));

            person1["ID"]           = "POP1";
            person1["FirstName"]    = "Oleg";
            person1["LastName"]     = "Popov";
            person1["DOB"]          = new DateTime(1981, 2, 12);
            person1["YearsInSpace"] = 45;
            person1["Amount"]       = 100;
            person1["Description"]  = "Wanted to go to the moon";

            var person2 = new DynamicRow(Schema.GetForTypedRow(typeof(Person)));

            person2["ID"]           = "POP1";
            person2["FirstName"]    = "Egor";
            person2["LastName"]     = "Pedorov";
            person2["DOB"]          = new DateTime(1982, 5, 2);
            person2["YearsInSpace"] = 4;
            person2["Amount"]       = 1000000;

            Assert.IsTrue(person1.Equals(person2));

            person2["ID"] = "POP2";

            Assert.IsFalse(person1.Equals(person2));
        }
예제 #18
0
        public void Slim_SerializeTable_DynamicRows()
        {
            var tbl = new Table(Schema.GetForTypedRow(typeof(Person)));

            for (var i = 0; i < 1000; i++)
            {
                var row = new DynamicRow(tbl.Schema);

                row["ID"]           = "POP{0}".Args(i);
                row["FirstName"]    = "Oleg";
                row["LastName"]     = "Popov-{0}".Args(i);
                row["DOB"]          = new DateTime(1953, 12, 10);
                row["YearsInSpace"] = 12;

                tbl.Insert(row);
            }

            var ser = new SlimSerializer();

            using (var ms = new MemoryStream())
            {
                ser.Serialize(ms, tbl);
                Console.WriteLine("{0} rows took {1} bytes".Args(tbl.Count, ms.Position));
                ms.Position = 0;

                var tbl2 = ser.Deserialize(ms) as Table;

                Assert.IsNotNull(tbl2);
                Assert.IsFalse(object.ReferenceEquals(tbl, tbl2));

                Assert.AreEqual(1000, tbl2.Count);
                Assert.IsTrue(tbl.SequenceEqual(tbl2));
            }
        }
예제 #19
0
        public void FindIndexByKey_DynamicRows()
        {
            var tbl = new Table(Schema.GetForTypedRow(typeof(Person)));

            for (var i = 0; i < 10; i++)
            {
                var row = new DynamicRow(tbl.Schema);

                row["ID"]           = "POP{0}".Args(i);
                row["FirstName"]    = "Oleg";
                row["LastName"]     = "DynamicPopov-{0}".Args(i);
                row["DOB"]          = new DateTime(1953, 12, 10);
                row["YearsInSpace"] = 12;

                tbl.Insert(row);
            }

            Assert.AreEqual(10, tbl.Count);

            var idx1 = tbl.FindIndexByKey("POP5");

            Assert.AreEqual(5, idx1);

            var idx2 = tbl.FindIndexByKey("POP6");

            Assert.AreEqual(6, idx2);

            var idx3 = tbl.FindIndexByKey("DoesNotExist");

            Assert.AreEqual(-1, idx3);
        }
예제 #20
0
        public BrushSection()
        {
            var layout = new DynamicLayout {
                DefaultSpacing = new Size(5, 5), Padding = new Padding(10)
            };

            // defaults
            ScaleX         = 100f;
            ScaleY         = 100f;
            Center         = new PointF(110, 60);
            GradientOrigin = new PointF(150, 90);
            Radius         = new SizeF(100f, 50f);
            StartPoint     = new PointF(50, 50);
            EndPoint       = new PointF(100, 100);
            Angle          = 0;
            Opacity        = 1f;

            drawable = new Drawable {
                Size = new Size(450, 400)
            };

            drawable.Paint += (sender, pe) => Draw(pe.Graphics);

            if ((Platform.SupportedFeatures & PlatformFeatures.DrawableWithTransparentContent) == 0)
            {
                layout.AddSeparateRow(null, BrushControl(), UseBackgroundColorControl(), CreateModeControl(), null);
            }
            else
            {
                layout.AddSeparateRow(null, BrushControl(), UseBackgroundColorControl(), WithContent(), CreateModeControl(), null);
            }
            if (Platform.Supports <NumericStepper>())
            {
                matrixRow = layout.AddSeparateRow(null, new Label {
                    Text = "Rot"
                }, RotationControl(), new Label {
                    Text = "Sx"
                }, ScaleXControl(), new Label {
                    Text = "Sy"
                }, ScaleYControl(), new Label {
                    Text = "Ox"
                }, OffsetXControl(), new Label {
                    Text = "Oy"
                }, OffsetYControl(), null);
                matrixRow.Table.Visible = false;
            }
            gradientRow = layout.AddSeparateRow(null, GradientWrapControl(), null);
            gradientRow.Table.Visible = false;
            radialRow        = layout.AddSeparateRow(null, "Center:", CenterControl(), "GradientOrigin:", GradientOriginControl(), null);
            radiusRow        = layout.AddSeparateRow(null, "Radius:", RadiusControl(), null);
            linearRow        = layout.AddSeparateRow(null, "Start:", StartPointControl(), "End:", EndPointControl(), null);
            angleRow         = layout.AddSeparateRow(null, "Angle:", AngleControl(), null);
            textureRow       = layout.AddSeparateRow(null, "Opacity:", CreateOpacityControl(), null);
            colorStartEndRow = layout.AddSeparateRow(null, "Start:", CreateStartColor(), "End:", CreateEndColor(), null);
            layout.AddSeparateRow(null, drawable, null);
            layout.Add(null);

            this.Content = layout;
        }
예제 #21
0
        public static void CurrentBindDynamicRow(
			this DbDataReader reader, 
			List<DynamicColumn> columns,
			ref DynamicRow row)
        {
            if(null == reader) { return; }
            if(columns.IsNullOrEmpty()) { return; }

            var dbValues = new object[columns.Count];
            reader.GetValues(dbValues);

            var flatValues = new List<Any>();
            var values = new List<Any>();
            var hashCodes = new List<Any>();
            var dbNulls = new List<string>();
            var columnIndex = -1;

            foreach(var column in columns) {
                columnIndex++;
                var value = dbValues[columnIndex];
                if(DBNull.Value == value) {
                    dbNulls.Add(column.BaseColumnName);
                    value = null;
                }
                flatValues.SafeAdd(column.ColumnName, value);
                flatValues.SafeAdd(column.BaseColumnName, value);
                values.Add(column.BaseColumnName, value);

                if(null != value) {
                    int hashCode = value.GetHashCode();
                    hashCodes.Add(
                        column.BaseColumnName, hashCode
                    );
                }
            }

            row.__ReturnAny = true;
            row.__DatabaseFirst = true;
            row.__DynamicColumns = columns;
            row.__FlatValues = flatValues;
            row.__DynamicValues = values;
            row.__DynamicOriginalValues = values;
            row.__OriginalHashCodes = hashCodes;
            row.__DynamicDbNulls = dbNulls;
            row.__OriginalHashCode = row.GetHashCode();

            if(dbNulls.Any()) {
                foreach(var dbNull in dbNulls) {
                    hashCodes.Add(
                        dbNull,
                        row.__OriginalHashCode
                    );
                }
            }
            row.__OriginalHashCodes = hashCodes;
        }
예제 #22
0
        public static DynamicRow GetValues(this ControllerBase ctrl)
        {
            var result = new DynamicRow();

            foreach (var o in ctrl.Bag)
            {
                result.SetMember(o.Key, o.Value);
            }
            return(result);
        }
예제 #23
0
        private static DynamicRow GetRow(IDataReader dr)
        {
            var row = new DynamicRow();

            for (int i = 0; i < dr.FieldCount; i++)
            {
                row.SetMember(dr.GetName(i), dr.GetValue(i));
            }
            return(row);
        }
예제 #24
0
파일: RowFeeder.cs 프로젝트: anthrax3/AForm
        public void FeedRow(int id)
        {
            row = DynamicRow.FindRow <int>("TABLE1", id);
            string form = this["Form"].GetValue <string>("");

            foreach (string name in row.FieldNames)
            {
                blockWeb[form][name].AttachEndPoint(row.GetFieldValue(name));
            }
        }
예제 #25
0
        public void CantSetValuesExplicitly()
        {
            var map = new Dictionary <string, int> {
                { "A", 0 },
                { "B", 1 }
            };
            var     obj = new object[] { "Xyz", 25 };
            dynamic row = new DynamicRow(obj, map);

            Assert.Throws <InvalidOperationException>(() => row.B = "abc");
        }
예제 #26
0
        public Row ToRow()
        {
            var result = new DynamicRow(m_Schema);

            foreach (var field in this.Fields)
            {
                result[field.FieldName] = field.ValueAsObject;
            }

            return(result);
        }
예제 #27
0
        public void CantSetValuesExplicitly()
        {
            var map = new Dictionary<string, int> {
                { "A", 0 },
                { "B", 1 }
            };
            var obj = new object[] { "Xyz", 25 };
            dynamic row = new DynamicRow(obj, map);

            Assert.Throws<InvalidOperationException>(() => row.B = "abc");
        }
예제 #28
0
        public void CanGetValues()
        {
            var map = new Dictionary <string, int> {
                { "A", 0 },
                { "B", 1 }
            };
            var     obj = new object[] { "Xyz", 25 };
            dynamic row = new DynamicRow(obj, map);

            Assert.AreEqual("Xyz", row.A);
            Assert.AreEqual(25, row.B);
        }
예제 #29
0
        public void CanGetValues()
        {
            var map = new Dictionary<string, int> {
                { "A", 0 },
                { "B", 1 }
            };
            var obj = new object[] { "Xyz", 25 };
            dynamic row = new DynamicRow(obj, map);

            Assert.AreEqual("Xyz", row.A);
            Assert.AreEqual(25, row.B);
        }
예제 #30
0
        public TestDefinition DynamicRow_ControlArray()
        {
            DynRow1 = new DynamicRow(typeof(Gtk.Button), new object[] { "button" });

            TestDefinition info = new TestDefinition();

            info.testName   = "DynamicRow_ControlArray";
            info.testDesc   = "Test that sets a DynamicRow with a control type.";
            info.testWidget = DynRow1;

            return(info);
        }
예제 #31
0
        public TestDefinition DynamicRow_UpdatedArray()
        {
            DynRow3 = new DynamicRow(typeof(Gtk.Button), new object[] { "button" });

            TestDefinition info = new TestDefinition();

            info.testName     = "DynamicRow_UpdatedArray";
            info.testDesc     = "Test that sets a DynamicRow and on the button click, updates the set of control.";
            info.testWidget   = DynRow3;
            info.buttonClick1 = OnClickUpdateArray;

            return(info);
        }
예제 #32
0
        public void SetKey(ConnectorSysEventArgs eventArgs)
        {
            if (eventArgs.EndPointValue != null)
            {
                string table        = this["Table"].GetValue <string>();
                string displayField = this["DisplayField"].GetValue <string>();
                string pkField      = this["PKField"].GetValue <string>();

                //seelct displayField from targetTable where PK_ID = eventArgs.EndPointValue
                DynamicRow myRow = DynamicRow.FindRow <long>(table, (long)eventArgs.EndPointValue);
                ctl.Text = "pk=" + (eventArgs.EndPointValue.ToString()) + " value=" + myRow[displayField].fValue.ToString();
            }
        }
예제 #33
0
        public TestDefinition DynamicRow_ChangedMax()
        {
            DynRow2 = new DynamicRow(typeof(Gtk.Button), new object[] { "button" });
            DynRow2.UpdateMaxCount(12);

            TestDefinition info = new TestDefinition();

            info.testName   = "DynamicRow_ChangedMax";
            info.testDesc   = "Test that sets a DynamicRow with a larger number of controls.";
            info.testWidget = DynRow2;

            return(info);
        }
예제 #34
0
        public void ColumnDoesNotExist()
        {
            var map = new Dictionary<string, int> {
                { "A", 0 }
            };
            var obj = new object[] { "Xyz" };
            dynamic row = new DynamicRow(obj, map);

            Assert.AreEqual("Xyz", row.A);

            object dummy;
            Assert.AreEqual("Xyz", row.A);
            Assert.Throws<ColumnDoesNotExistException>(() => dummy = row.B);
        }
예제 #35
0
        public static List<dynamic>[] ToDynamics(
			this DbDataReader reader, int pageSize, int pageIndex)
        {
            var all = new List<List<dynamic>>();
            if(null == reader || !reader.HasRows) {
                return all.ToArray();
            }
            bool paging = pageSize > 0 && pageIndex > 0;

            do {
                var list = new List<dynamic>();
                int index = 0;
                var columns = reader.GetColumns();
                while(reader.Read()) {
                    index++;
                    if(paging) {
                        if((pageIndex - 1) * pageSize > index) {
                            continue;
                        }
                        if(pageIndex * pageSize > index) {
                            break;
                        }
                    }

                    DynamicRow row = new DynamicRow();
                    reader.CurrentBindDynamicRow(columns, ref row);
                    list.Add(row as dynamic);
                }
                all.Add(list);
            }
            while(reader.NextResult());

            return all.ToArray();
        }
예제 #36
0
        public static List<dynamic> ToDynamics(
			this DbDataReader reader, int pageSize, int pageIndex)
        {
            var list = new List<dynamic>();
            if(null == reader) { return list; }
            bool paging = pageSize > 0 && pageIndex > 0;
            int index = 0;

            var schema = reader.GetSchemaTable();
            var tableName = schema.TableName;

            var columns = new List<string>();
            for(int i = 0; i < reader.FieldCount; i++) {
                string s = reader.GetName(i);
                columns.Add(s);
            }

            var dbValues = new object[reader.FieldCount];
            while(reader.Read()) {
                index++;
                if(paging) {
                    if((pageIndex - 1) * pageSize > index) {
                        continue;
                    }
                    if(pageIndex * pageSize > index) {
                        break;
                    }
                }

                reader.GetValues(dbValues);

                //var row = schema.NewRow();
                var values = new List<Any>();
                var hashCodes = new List<Any>();
                var dbNulls = new List<string>();

                var columnIndex = -1;
                foreach(var column in columns) {
                    columnIndex++;
                    var value = dbValues[columnIndex];
                    if(DBNull.Value == value) {
                        dbNulls.Add(column);
                        value = null;
                    }
                    values.Add(column, value);

                    if(null != value) {
                        int hashCode = value.GetHashCode();
                        hashCodes.Add(column, hashCode);
                    }
                }

                var data = new DynamicRow() {
                    __ReturnAny = true,
                    __DatabaseFirst = true,
                    __TableName = tableName,
                    __Values = values,
                    __HashCodes = hashCodes,
                    __DbNulls = dbNulls,
                };
                data.__OriginalHashCode = data.GetHashCode();

                if(dbNulls.Any()) {
                    foreach(var dbNull in dbNulls) {
                        hashCodes.Add(
                            dbNull,
                            data.__OriginalHashCode
                        );
                    }
                }
                data.__HashCodes = hashCodes;

                list.Add(data as dynamic);
            }
            return list;
        }