示例#1
0
        public static void Single(this DataColumn col, object value)
        {
            var inputTable = Interpreter.Context.TomScripting.GetManager(col.Table.TableName);
            var stock      = Interpreter.Context.Scope.Stock;

            long ownerId = stock.GetId(inputTable.Schema.OwnerIdColumn);

            using (TransactionScope trans = new TransactionScope())
            {
                object obj = value;
                if (col.DataType == typeof(double))
                {
                    obj = Convert.ToDouble(value, CultureInfo.InvariantCulture);
                }

                ScopedTable result = inputTable.Query(ownerId);

                DataRow row = result.NewRow();
                row[inputTable.Schema.OwnerIdColumn] = ownerId;
                row[col.ColumnName] = obj;

                result.AddOrUpdate(row, col.ColumnName);

                trans.Complete();
            }
        }
示例#2
0
        private void AddRow(ScopedTable table, long ownerId, string date, long origin, double value)
        {
            DataRow row = table.NewRow();

            row[table.Schema.OwnerIdColumn] = ownerId;
            row.SetDate(table.Schema, DateTime.Parse(date));
            row[table.Schema.OriginColumn] = origin;
            row["value"] = value;

            table.AddOrUpdate(row);
        }
示例#3
0
        public void AddOrUpdateWithDate()
        {
            TableSchema schema = new TableSchema("test1",
                                                 new DataColumn("stock_id", typeof(long)),
                                                 new DataColumn("date", typeof(string)),
                                                 new DataColumn("value", typeof(double)));

            DataTable t = schema.NewTempTable();

            ScopedTable table = new ScopedTable(schema, t, null);

            // initial row
            {
                DataRow row = table.NewRow();
                row["stock_id"] = 1;
                row.SetDate(schema, DateTime.Parse("2002-01-01 00:00"));
                row["value"] = 23.0d;

                table.AddOrUpdate(row);
            }

            // same id, same date => update
            {
                DataRow row = table.NewRow();
                row["stock_id"] = 1;
                row.SetDate(schema, DateTime.Parse("2002-01-01 00:00"));
                row["value"] = 42.0d;

                table.AddOrUpdate(row);
            }

            // same id, new date => add
            {
                DataRow row = table.NewRow();
                row["stock_id"] = 1;
                row.SetDate(schema, DateTime.Parse("2002-01-02 00:00"));
                row["value"] = 25.0d;

                table.AddOrUpdate(row);
            }

            // new stock_id, same date => add
            {
                DataRow row = table.NewRow();
                row["stock_id"] = 2;
                row.SetDate(schema, DateTime.Parse("2002-01-02 00:00"));
                row["value"] = 37.0d;

                table.AddOrUpdate(row);
            }

            var rows = table.Rows.ToList();

            Assert.AreEqual(3, rows.Count);

            Assert.AreEqual(1, rows[0][schema.OwnerIdColumn]);
            Assert.AreEqual(42.0d, rows[0]["value"]);

            Assert.AreEqual(1, rows[1][schema.OwnerIdColumn]);
            Assert.AreEqual(25.0d, rows[1]["value"]);

            Assert.AreEqual(2, rows[2][schema.OwnerIdColumn]);
            Assert.AreEqual(37.0d, rows[2]["value"]);
        }