Пример #1
0
            protected static Record get_Record(IEnumerable <string> cols, SqlDataReader reader, bool pSetFieldNameToLower)
            {
                try
                {
                    var result = new Record();

                    foreach (var col in cols)
                    {
                        if (pSetFieldNameToLower)
                        {
                            result.Add(col.ToLower(), reader[col]);
                        }
                        else
                        {
                            result.Add(col, reader[col]);
                        }
                    }

                    return(result);
                }
                catch (Exception ex)
                {
                    throw new Exception("get_Record:" + Core.GetCommonErrorMessage(ex));
                }
            }
Пример #2
0
            protected static Record get_Record(SqlDataReader reader, bool pSetFieldNameToLower)
            {
                try
                {
                    var    result = new Record();
                    string field  = "";

                    for (var i = 0; i < reader.FieldCount; i++)
                    {
                        field = reader.GetName(i);
                        if (pSetFieldNameToLower)
                        {
                            result.Add(field.ToLower(), reader[field]);
                        }
                        else
                        {
                            result.Add(field, reader[field]);
                        }
                    }
                    return(result);
                }
                catch (Exception ex)
                {
                    throw new Exception("get_Record:" + Core.GetCommonErrorMessage(ex));
                }
            }
Пример #3
0
        public static void Main(string[] commandArgs)
        {
            try
            {
                var record = new Record();
                record.Add(new Property("title", "My Title"));
                record.Add(new Property("header", "My Header"));

                var link = new Link();
                link.Add(new Property("title", "My Title"));
                link.Add(new Property("href", "My #ref"));
                link.Add(new Property("header", "My Header"));
                link.Add(new Class("header"));
                link.Add(new Rel("header"));
                record.Add(link);

                var file = new ResourceRef();
                file.Add(new Property("title", "My Title"));
                file.Add(new Property("href", "My #ref"));
                file.Add(new Property("header", "My Header"));
                file.Add(new Class("header"));
                file.Add(new Rel("header"));
                record.Add(file);

                record.Add(new Property("__meta", Value.CreateObject(new
                {
                    Tables = new
                    {
                        Headers = new VName[] {
                            "Id",
                            "Name"
                        }
                    }
                })));


                var p1 = record.GetProperty <VArray>("__meta.tables.headers");
                record.SetProperty("__meta.tables.headers.id", new[] { 10 });
                var p2 = record.GetProperty <VArray>("__meta.tables.headers.id");

                var serializer = new MediaSerializer(MimeType.JsonSiren);
                var step1      = serializer.Serialize(record);

                var target = serializer.Deserialize(step1);
                var step2  = serializer.Serialize(record);


                Debug.WriteLine(Json.Beautify(step1));
                Debug.WriteLine(Json.Beautify(step2));
            }
            catch (Exception ex)
            {
                ex.Trace();
            }
        }
Пример #4
0
        protected virtual void CopyEntityColumnToRecord(string columnName, T entity, ref Record record)
        {
            //autopopulates a record
            //for this to work you must make sure that the parameter name required by the stored procedure is identical to the column name
            //defined in the enum member in each entity class
            object val = entity[columnName];

            //if (val != null)
            //{
            //    if (val is SimpleEntity) //if the column type is SimpleEntity, take the code
            //        val = ((SimpleEntity)val).Code;
            //    else if (val is Identifier)
            //        val = val.ToString();
            //    else if (val is PIdEntity)
            //    {
            //        PIdEntity pidEntity = (PIdEntity)val;
            //        if (pidEntity.PId.HasValue) val = pidEntity.PId.Value;
            //        else val = null;
            //    }
            //    else if (val is Entity) //if the column type is other Entity (it's not one of the basic types), throw an exception -> we don't know how to map it
            //        throw new CopyToRecordException(entity.GetType().Name, val.GetType().Name);
            //    else if (val is DateTime)
            //        val = DateTimeConverter.DateTimeToDbString((DateTime)val);
            //}
            record.Add(new DataElement(columnName, val));
        }
Пример #5
0
        public void Dig()
        {
            try
            {
                //初始化DnsClient,第一个参数为DNS服务器的IP,第二个参数为超时时间
                DnsClient dnsClient = new DnsClient(IPAddress.Parse(DnsServer), TimeOut);

                //解析域名。将域名请求发送至DNS服务器解析,参数为需要解析的域名
                DnsMessage dnsMessage = dnsClient.Resolve(DomainName.Parse(Domain));
                //TimeSpan = s.Elapsed;
                //若返回结果为空,或者存在错误,则该请求失败。
                if (dnsMessage == null || (dnsMessage.ReturnCode != ReturnCode.NoError && dnsMessage.ReturnCode != ReturnCode.NxDomain))
                {
                    IsSuccess = false;
                    return;
                }
                //循环遍历返回结果,将返回的IPV4记录添加到结果集List中。
                if (dnsMessage != null)
                {
                    foreach (DnsRecordBase dnsRecord in dnsMessage.AnswerRecords)
                    {
                        ARecord AR = dnsRecord as ARecord;
                        if (AR != null)
                        {
                            IsSuccess = true;
                            Record.Add(AR.Address.ToString());
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
        }
Пример #6
0
        /// <summary>
        /// An extension method to extract outputs from a record dictionary.
        /// </summary>
        /// <param name="dbDataParameters"> The target enumerable of data paramters. </param>
        /// <returns> A dictionary with record key/value pairs of OUTPUT data. </returns>
        public static IRecord GetOutputAsRecord(this IEnumerable <IDbDataParameter> dbDataParameters)
        {
            IRecord output;

            if ((object)dbDataParameters == null)
            {
                throw new ArgumentNullException("dbDataParameters");
            }

            output = new Record();

            foreach (IDbDataParameter dbDataParameter in dbDataParameters)
            {
                if (dbDataParameter.Direction != ParameterDirection.InputOutput &&
                    dbDataParameter.Direction != ParameterDirection.Output &&
                    dbDataParameter.Direction != ParameterDirection.ReturnValue)
                {
                    continue;
                }

                output.Add(dbDataParameter.ParameterName, dbDataParameter.Value);
            }

            return(output);
        }
Пример #7
0
        public void HandleDeath(Mobile m, bool killedBy)
        {
            Record.Add(new DuelRecord(m, killedBy));

            if (Record.Count > 12)
            {
                Record.RemoveAt(12);
            }
        }
Пример #8
0
        public void TestAdd()
        {
            // setup
            var record   = new Record();
            var expected = "test_value";

            record.Add(expected);

            // assert
            record[0].Is(expected);
        }
Пример #9
0
        public void TestAutoEnsureCapacity()
        {
            // setup
            var capacity  = 10;
            var record    = new Record(capacity);
            var testCases = createMockRecord(10);

            foreach (var tc in testCases)
            {
                record.Add(tc);
            }
        }
Пример #10
0
        public void Setting_Values_With_Add_Works()
        {
            Schema schema = new Schema();

            schema.Fields.Add(Field.New <int>("Id"));
            schema.Fields.Add(Field.New <string>("Name"));
            schema.Fields.Add(Field.New <bool>("IsMale"));
            schema.Fields.Add(Field.New <DateTime>("DateOfBirth"));

            Record record = new Record(schema);

            record.Add(15);
            record.Add("Max");
            record.Add(true);
            record.Add(new DateTime(1982, 11, 5));

            Assert.AreEqual(15, record[0]);
            Assert.AreEqual("Max", record[1]);
            Assert.AreEqual(true, record[2]);
            Assert.AreEqual(new DateTime(1982, 11, 5), record[3]);
        }
Пример #11
0
        protected override void CopyEntityColumnToRecord(string columnName, Boletim entity, ref Record record)
        {
            switch (columnName)
            {
            case Boletim.colIdAluno:
                record.Add(new DataElement(columnName, entity.Aluno.IdAluno));
                break;

            default:
                base.CopyEntityColumnToRecord(columnName, entity, ref record);
                break;
            }
        }
Пример #12
0
        protected override void CopyEntityColumnToRecord(string columnName, Validado entity, ref Record record)
        {
            switch (columnName)
            {
            case Validado.colIdAluno:
                record.Add(new DataElement(columnName, entity.Aluno.IdAluno));
                break;

            case Validado.colIdMov:
                record.Add(new DataElement(columnName, entity.Movimento.IdMov));
                break;

            case Movimento.colDtValor:
            case Aluno.colUsername:
            case Aluno.colNome:
                break;

            default:
                base.CopyEntityColumnToRecord(columnName, entity, ref record);
                break;
            }
        }
Пример #13
0
            public override RecordBuilder Add(string field)
            {
                if (Record.Count == Position)
                {
                    Record.Add(field);
                }
                else
                {
                    Record[Position] = field;
                }

                Position++;

                return(this);
            }
Пример #14
0
 public void CheckCycle(Type convertType)
 {
     if (!BuilderManager.ContainsBuilder(convertType))
     {
         if (Record.Contains(convertType))
         {
             throw new Exception("不允许循环引用");
         }
         else
         {
             Record.Add(convertType);
             BuilderManager.AddBuilder(convertType, this);
         }
     }
 }
Пример #15
0
        /// <summary>
        /// Create a Mock instance for testing.
        /// </summary>
        /// <param name="recordCnt">The number of pre-set elements</param>
        /// <returns>Record instance.</returns>
        private Record createMockRecord(int recordCnt = 0)
        {
            if (recordCnt == 0)
            {
                return(new Record());
            }

            var record = new Record();

            for (var i = 0; i < recordCnt; i++)
            {
                record.Add($"test{i}");
            }
            return(record);
        }
Пример #16
0
 public ShipParameterElement this[int i] {
     get {
         return(Record.ContainsKey(i) ? Record[i] : null);
     }
     set {
         if (!Record.ContainsKey(i))
         {
             Record.Add(i, value);
         }
         else
         {
             Record[i] = value;
         }
     }
 }
Пример #17
0
        /// <summary>
        /// 通过sql查询
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public List <Record> Query(string sql)
        {
            List <Record> list = new List <Record>();
            var           con  = Connection();

            try
            {
                if (con.code != 200)
                {
                    return(list);
                }
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                //执行ExecuteReader()返回一个MySqlDataReader对象
                MySqlDataReader reader = cmd.ExecuteReader();
                List <string>   st     = new List <string>();
                var             u      = 0;
                while (reader.Read())//初始索引是-1,执行读取下一行数据,返回值是bool
                {
                    if (reader.HasRows)
                    {
                        if (u++ == 0)
                        {
                            for (var i = 0; i < reader.FieldCount; i++)
                            {
                                st.Add(reader.GetName(i).ToLower());
                            }
                        }
                        var r = new Record();
                        foreach (var x in st)
                        {
                            r.Add(x, reader[x]?.ToString() ?? "");
                        }
                        list.Add(r);
                    }
                }
                reader.Close();
                return(list);
            }
            catch
            {
                return(list);
            }
            finally
            {
                Close();
            }
        }
Пример #18
0
 public RecordCollection ExecuteRecord(string SQLText)
 {
     RecordCollection rcc = new RecordCollection();
     using (IDataReader rd = ExecuteReader(SQLText))
     {
         while (rd.Read())
         {
             Record rc = new Record();
             for (int i = 0; i < rd.FieldCount; i++)
             {
                 rc.Add(rd.GetName(i), rd.GetValue(i));
             }
             rcc.Add(rc);
         }
     }
     return rcc;
 }
Пример #19
0
        public void AddRow(IEnumerable values)
        {
            var list = new ArrayList();

            list.Add(++Rowcount);
            foreach (var value in values)
            {
                list.Add(value);
            }

            var record = new Record();

            for (var ii = 0; ii < _columns.Count; ii++)
            {
                record.Add(new Property(_columns[ii].Name, list[ii]));
            }
            _records.Add(record);
        }
Пример #20
0
        private void PrecreateBaseRecords(IRecord record)
        {
            foreach (var i in this.Inheritances)
            {
                var baseModel  = (IModel)this.DbDomain.GetResource(i.BaseModel);
                var baseRecord = new Record();

                foreach (var f in baseModel.Fields)
                {
                    object fieldValue = null;
                    if (record.TryGetValue(f.Key, out fieldValue))
                    {
                        baseRecord.Add(f.Key, fieldValue);
                        record.Remove(f.Key);
                    }
                }
                var baseId = baseModel.CreateInternal(baseRecord);
                record[i.RelatedField] = baseId;
            }
        }
Пример #21
0
        /// <summary>
        /// 获得翻牌结果
        /// </summary>
        /// <param name="data"></param>
        public void GetCardsResult(ISFSObject data)
        {
            if (data == null)
            {
                return;
            }
            CardInfos = new List <CardsData>();
            TrendData newData     = new TrendData();
            int       zhuangScore = 0;
            int       xianScore   = 0;

            if (data.ContainsKey(ConstantData.KeyZhuang))
            {
                CardsData zhuangInfo = new CardsData(CardResultType.Zhuang, data.GetSFSObject(ConstantData.KeyZhuang));
                newData.ZhuangDui  = zhuangInfo.DoubleCard;
                newData.ZhuangTian = zhuangInfo.King;
                CardInfos.Add(zhuangInfo);
                zhuangScore = zhuangInfo.Result;
            }
            if (data.ContainsKey(ConstantData.KeyXian))
            {
                var xianInfo = new CardsData(CardResultType.Xian, data.GetSFSObject(ConstantData.KeyXian));
                newData.XianDui  = xianInfo.DoubleCard;
                newData.XianTian = xianInfo.King;
                CardInfos.Add(xianInfo);
                xianScore = xianInfo.Result;
            }
            if (zhuangScore == xianScore)
            {
                newData.Win = ConstantData.KeyBetEqual;
            }
            else
            {
                newData.Win = zhuangScore > xianScore ? ConstantData.KeyBetBanker : ConstantData.KeyBetLeisure;
            }
            if (Record == null)
            {
                Record = new List <TrendData>();
            }
            Record.Add(newData);
        }
Пример #22
0
		/// <summary>
		/// An extension method to extract outputs from a record dictionary.
		/// </summary>
		/// <param name="dbParameters"> The target enumerable of data paramters. </param>
		/// <returns> A dictionary with record key/value pairs of OUTPUT data. </returns>
		public static IRecord GetOutputAsRecord(this IEnumerable<DbParameter> dbParameters)
		{
			IRecord output;

			if ((object)dbParameters == null)
				throw new ArgumentNullException(nameof(dbParameters));

			output = new Record();

			foreach (DbParameter dbParameter in dbParameters)
			{
				if (dbParameter.Direction != ParameterDirection.InputOutput &&
					dbParameter.Direction != ParameterDirection.Output &&
					dbParameter.Direction != ParameterDirection.ReturnValue)
					continue;

				output.Add(dbParameter.ParameterName, dbParameter.Value);
			}

			return output;
		}
        public bool Merge(string line)
        {
            try
            {
                var elem = new ShipParameterElement(line);

                if (!Record.ContainsKey(elem.ShipID))
                {
                    Record.Add(elem.ShipID, elem);
                    return(true);
                }
                else
                {
                    return(Record[elem.ShipID].Merge(elem));
                }
            }
            catch (Exception)
            {
                return(false);
            }
        }
 protected override void LoadLine(string line)
 {
     Record.Add(new ResourceElement(line));
 }
Пример #25
0
        public static void Core(string packageName)
        {
            Console.WriteLine(I18N.Core("Install_CollectingPackageInfo"));

            //=================================================================pre-process
            //name is legal
            var packageDbConn = new Database();

            packageDbConn.Open();

            var reader = (from _i in packageDbConn.CoreDbContext.package
                          where _i.name == (packageName.Contains("@") ? packageName.Split('@', StringSplitOptions.None)[0] : packageName)
                          select _i).ToList();

            if (!reader.Any())
            {
                ConsoleAssistance.WriteLine(I18N.Core("General_NoMatchedPackage"), ConsoleColor.Red);
                return;
            }
            packageName = GetVersionNatrually(packageName, packageDbConn);

            //is installed ?
            var installFolder = new DirectoryInfo(Information.WorkPath.Enter("cache").Enter("installed").Path);

            if (installFolder.GetDirectories($"{packageName}").Any())
            {
                ConsoleAssistance.WriteLine(I18N.Core("Install_InstalledPackage"), ConsoleColor.Red);
                return;
            }

            //====================================================================get-info
            //get denpendency tree
            Console.WriteLine(I18N.Core("Install_BuildingDependencyTree"));
            var cache1 = GetPackageInfo(packageName, packageDbConn);

            if (!cache1.res)
            {
                ConsoleAssistance.WriteLine(I18N.Core("General_NetworkError"), ConsoleColor.Red);
                return;
            }

            //conflict detect
            Console.WriteLine(I18N.Core("Install_DetectConflict"));
            var cache2 = DetectConflict(cache1.topologyMap, packageDbConn);

            if (!cache2.status)
            {
                ConsoleAssistance.WriteLine(I18N.Core("Install_SelfConflict"), ConsoleColor.Red);
                return;
            }

            //sort dependency
            Console.WriteLine(I18N.Core("Install_SortingDependencyTree"));
            var cache1_1 = new Dictionary <string, List <string> >();

            foreach (var item in cache1.topologyMap.Keys)
            {
                var cache = new List <string>();
                foreach (var depItem in cache1.topologyMap[item].dependency.ToList())
                {
                    cache.Add(GetTopVersion(depItem, packageDbConn));
                }
                cache1_1.Add(item, cache);
            }
            var cache3 = KahnTopologySort(cache1_1);

            if (!cache3.status)
            {
                ConsoleAssistance.WriteLine(I18N.Core("Install_CloseLoop"), ConsoleColor.Red);
                return;
            }

            //remove installed package
            var realPackage = new List <string>(cache3.res);

            foreach (var item in installFolder.GetDirectories())
            {
                if (realPackage.Contains(item.Name))
                {
                    realPackage.Remove(item.Name);
                }
            }

            packageDbConn.Close();

            //sort removed package
            var sort_recorder = new Record();

            sort_recorder.Init();
            var realRemovedPackage = sort_recorder.SortPackage(cache2.res);

            sort_recorder.Save();
            //=======================================================================output

            ConsoleAssistance.WriteLine(I18N.Core("Install_InstallList"), ConsoleColor.Yellow);
            foreach (var item in realPackage)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("");

            ConsoleAssistance.WriteLine(I18N.Core("Install_RemoveList"), ConsoleColor.Yellow);
            if (realRemovedPackage.Count == 0)
            {
                ConsoleAssistance.WriteLine(I18N.Core("General_None"), ConsoleColor.Yellow);
            }
            foreach (var item in realRemovedPackage)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("");

            ConsoleAssistance.Write(I18N.Core("General_Continue"), ConsoleColor.Yellow);
            if (Console.ReadLine().ToUpper() != "Y")
            {
                ConsoleAssistance.WriteLine(I18N.Core("General_CancelOperation"), ConsoleColor.Red);
                return;
            }

            //============================================================================install
            //remove
            Console.WriteLine(I18N.Core("Install_RemovingSelectedPackage"));
            Remove.RealRemove(realRemovedPackage);

            //install
            Console.WriteLine(I18N.Core("Install_InstallingSelectedPackage"));
            //ready recorder
            var recorder = new Record();

            recorder.Init();

            var zipExtractor = new FastZip();

            foreach (var item in realPackage)
            {
                Console.WriteLine(I18N.Core("Install_InstallItem", item));
                //download
                var downloadRes = Download.DownloadPackage(item);
                Console.WriteLine(Download.JudgeDownloadResult(downloadRes));

                if (downloadRes != Download.DownloadResult.OK && downloadRes != Download.DownloadResult.ExistedLocalFile)
                {
                    ConsoleAssistance.WriteLine(I18N.Core("General_NetworkError"), ConsoleColor.Red);
                    return;
                }

                //remove decompress folder
                Directory.Delete(Information.WorkPath.Enter("cache").Enter("decompress").Path, true);
                Directory.CreateDirectory(Information.WorkPath.Enter("cache").Enter("decompress").Path);

                //decompress
                Console.WriteLine(I18N.Core("Install_ExtractItem", item));

                zipExtractor.ExtractZip(Information.WorkPath.Enter("cache").Enter("download").Enter(item + ".zip").Path, Information.WorkPath.Enter("cache").Enter("decompress").Path, "");

                Console.WriteLine(I18N.Core("Install_RunScriptItem", item));
                var cacheRes = ScriptInvoker.Core(Information.WorkPath.Enter("cache").Enter("decompress").Path, ScriptInvoker.InvokeMethod.Install, "");
                if (!cacheRes.status)
                {
                    ConsoleAssistance.WriteLine(I18N.Core("General_ScriptError"), ConsoleColor.Red);
                    ConsoleAssistance.WriteLine(cacheRes.desc, ConsoleColor.Red);
                    //save installed package info
                    recorder.Save();
                    return;
                }

                //record first and copy folders
                Console.WriteLine(I18N.Core("Install_RecordItem", item));
                recorder.Add(item);
                PackageAssistance.DirectoryCopy(Information.WorkPath.Enter("cache").Enter("decompress").Path, Information.WorkPath.Enter("cache").Enter("installed").Enter(item).Path, true);

                Console.WriteLine(I18N.Core("Install_Success", item));
            }

            //close recorder
            recorder.Save();

            ConsoleAssistance.WriteLine(I18N.Core("General_AllOperationDown"), ConsoleColor.Yellow);
        }
Пример #26
0
		public IEnumerable<IDictionary<string, object>> ExecuteRecords(bool schemaOnly, Type connectionType, string connectionString, bool transactional, IsolationLevel isolationLevel, CommandType commandType, string commandText, IEnumerable<DbParameter> commandParameters, Action<int> resultsetCallback = null)
		{
			DbTransaction dbTransaction;
			const bool OPEN = true;

			IList<IRecord> records;

			// force no preparation
			const bool COMMAND_PREPARE = false;

			// force provider default timeout
			object COMMAND_TIMEOUT = null; /*int?*/

			CommandBehavior commandBehavior;
			int resultsetIndex = 0;

			ReadOnlyCollection<DbColumn> dbColumns;
			DbColumn dbColumn;
			PropertyInfo[] propertyInfos;
			PropertyInfo propertyInfo;

			if ((object)connectionType == null)
				throw new ArgumentNullException(nameof(connectionType));

			if ((object)connectionString == null)
				throw new ArgumentNullException(nameof(connectionString));

			using (DbConnection dbConnection = (DbConnection)Activator.CreateInstance(connectionType))
			{
				if (OPEN)
				{
					dbConnection.ConnectionString = connectionString;
					dbConnection.Open();

					if (transactional)
						dbTransaction = dbConnection.BeginTransaction(isolationLevel);
					else
						dbTransaction = null;
				}

				using (DbCommand dbCommand = dbConnection.CreateCommand())
				{
					dbCommand.Transaction = dbTransaction;
					dbCommand.CommandType = commandType;
					dbCommand.CommandText = commandText;

					if ((object)COMMAND_TIMEOUT != null)
						dbCommand.CommandTimeout = (int)COMMAND_TIMEOUT;

					// add parameters
					if ((object)commandParameters != null)
					{
						foreach (DbParameter commandParameter in commandParameters)
						{
							if ((object)commandParameter.Value == null)
								commandParameter.Value = DBNull.Value;

							dbCommand.Parameters.Add(commandParameter);
						}
					}

					if (COMMAND_PREPARE)
						dbCommand.Prepare();

					records = new List<IRecord>();

					commandBehavior = schemaOnly ? CommandBehavior.SchemaOnly : CommandBehavior.Default;

					// wrap reader with proxy
					using (DbDataReader dbDataReader = new WrappedDbDataReader.__(dbCommand.ExecuteReader(commandBehavior)))
					{
						Record record;
						string key;
						object value;

						if (!schemaOnly)
						{
							do
							{
								if ((object)resultsetCallback != null)
									resultsetCallback(resultsetIndex++);

								while (dbDataReader.Read())
								{
									record = new Record();

									for (int columnIndex = 0; columnIndex < dbDataReader.FieldCount; columnIndex++)
									{
										key = dbDataReader.GetName(columnIndex);
										value = dbDataReader.GetValue(columnIndex);
										value = this.DataTypeFascade.ChangeType<object>(value);

										if (record.ContainsKey(key) || (key ?? string.Empty).Length == 0)
											key = string.Format("Column_{0:0000}", columnIndex);

										record.Add(key, value);
									}

									records.Add(record);
								}
							}
							while (dbDataReader.NextResult());
						}
						else
						{
							if (!dbDataReader.CanGetColumnSchema())
								throw new NotSupportedException(string.Format("The connection command type '{0}' does not support schema access.", dbDataReader.GetType().FullName));

							dbColumns = dbDataReader.GetColumnSchema();
							{
								if ((object)dbColumns != null)
								{
									for (int index = 0; index < dbColumns.Count; index++)
									{
										dbColumn = dbColumns[index];

										propertyInfos = dbColumn.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);

										record = new Record();
										record.Context = dbColumn;

										if ((object)propertyInfos != null)
										{
											for (int i = 0; i < propertyInfos.Length; i++)
											{
												propertyInfo = propertyInfos[i];

												if (propertyInfo.GetIndexParameters().Any())
													continue;

												key = propertyInfo.Name;
												value = propertyInfo.GetValue(dbColumn);
												value = value.ChangeType<object>();

												record.Add(key, value);
											}
										}
									}
								}
							}
						}
					}

					return records;
				}
			}
		}
Пример #27
0
 public ConverterBuilderAssistant(Type convertType, ConverterBuilderManager builderManager)
 {
     Record.Add(convertType);
     BuilderManager = builderManager;
 }
Пример #28
0
 public void Reset()
 {
     Record.Clear();
     Record.Add(NewRecord());
 }
Пример #29
0
		/// <summary>
		/// Execute a command against a data source, mapping the data reader GetSchemaTable() result to an enumerable of record dictionaries.
		/// This method perfoms LAZY LOADING/DEFERRED EXECUTION.
		/// Note that THE DATA READER WILL NOT BE DISPOSED UPON ENUMERATION OR FOREACH BRANCH OUT.
		/// </summary>
		/// <param name="dbDataReader"> The target data reader. </param>
		/// <param name="recordsAffectedCallback"> Executed when the output count of records affected is available to return (post enumeration). </param>
		/// <returns> An enumerable of record dictionary instances, containing key/value pairs of schema metadata. </returns>
		public IEnumerable<IRecord> GetSchemaRecordsFromReader(DbDataReader dbDataReader, Action<int> recordsAffectedCallback)
		{
			ReadOnlyCollection<DbColumn> dbColumns;
			DbColumn dbColumn;
			PropertyInfo[] propertyInfos;
			PropertyInfo propertyInfo;
			Record record;
			int recordsAffected;
			string key;
			object value;

			OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): enter", typeof(AdoNetStreamingFascade).Name));

			if ((object)dbDataReader == null)
				throw new ArgumentNullException(nameof(dbDataReader));

			OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): before yield", typeof(AdoNetStreamingFascade).Name));

			if (!dbDataReader.CanGetColumnSchema())
				throw new NotSupportedException(string.Format("The connection command type '{0}' does not support schema access.", dbDataReader.GetType().FullName));

			dbColumns = dbDataReader.GetColumnSchema();
			{
				OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): use table", typeof(AdoNetStreamingFascade).Name));

				if ((object)dbColumns != null)
				{
					for (int index = 0; index < dbColumns.Count; index++)
					{
						dbColumn = dbColumns[index];

						propertyInfos = dbColumn.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty);

						record = new Record();
						record.Context = dbColumn;

						if ((object)propertyInfos != null)
						{
							for (int i = 0; i < propertyInfos.Length; i++)
							{
								propertyInfo = propertyInfos[i];

								if (propertyInfo.GetIndexParameters().Any())
									continue;

								key = propertyInfo.Name;
								value = propertyInfo.GetValue(dbColumn);
								value = value.ChangeType<object>();

								record.Add(key, value);
							}
						}

						OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): on yield", typeof(AdoNetStreamingFascade).Name));

						yield return record; // LAZY PROCESSING INTENT HERE / DO NOT FORCE EAGER LOAD
					}
				}

				OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): dispose table", typeof(AdoNetStreamingFascade).Name));
			}

			OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): after yield", typeof(AdoNetStreamingFascade).Name));

			recordsAffected = dbDataReader.RecordsAffected;

			if ((object)recordsAffectedCallback != null)
				recordsAffectedCallback(recordsAffected);

			OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): leave", typeof(AdoNetStreamingFascade).Name));
		}
Пример #30
0
		/// <summary>
		/// Execute a command against a data source, mapping the data reader to an enumerable of record dictionaries.
		/// This method perfoms LAZY LOADING/DEFERRED EXECUTION.
		/// Note that THE DATA READER WILL NOT BE DISPOSED UPON ENUMERATION OR FOREACH BRANCH OUT.
		/// </summary>
		/// <param name="dbDataReader"> The target data reader. </param>
		/// <param name="recordsAffectedCallback"> Executed when the output count of records affected is available to return (post enumeration). </param>
		/// <returns> An enumerable of record dictionary instances, containing key/value pairs of data. </returns>
		public IEnumerable<IRecord> GetRecordsFromReader(DbDataReader dbDataReader, Action<int> recordsAffectedCallback)
		{
			IRecord record;
			int recordsAffected;
			int recordIndex = 0;
			string key;
			object value;

			OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetRecordsFromReader(...): enter", typeof(AdoNetStreamingFascade).Name));

			if ((object)dbDataReader == null)
				throw new ArgumentNullException(nameof(dbDataReader));

			OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetRecordsFromReader(...): before yield", typeof(AdoNetStreamingFascade).Name));

			while (dbDataReader.Read())
			{
				record = new Record();

				for (int columnIndex = 0; columnIndex < dbDataReader.FieldCount; columnIndex++)
				{
					key = dbDataReader.GetName(columnIndex);
					value = dbDataReader.GetValue(columnIndex).ChangeType<object>();

					if (record.ContainsKey(key) || (key ?? string.Empty).Length == 0)
						key = string.Format("Column_{0:0000}", columnIndex);

					record.Add(key, value);
				}

				OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetRecordsFromReader(...): on yield", typeof(AdoNetStreamingFascade).Name));

				yield return record; // LAZY PROCESSING INTENT HERE / DO NOT FORCE EAGER LOAD
			}

			OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetRecordsFromReader(...): after yield", typeof(AdoNetStreamingFascade).Name));

			recordsAffected = dbDataReader.RecordsAffected;

			if ((object)recordsAffectedCallback != null)
				recordsAffectedCallback(recordsAffected);

			OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetRecordsFromReader(...): leave", typeof(AdoNetStreamingFascade).Name));
		}
Пример #31
0
 public static void AddField <ResultType, InputType>(this Records.Records Records, System.String ResultFieldName, System.String InputFieldName, System.Func <InputType, ResultType> Action)
 {
     Records.Map(Record => Record.Add(ResultFieldName, Action(Record.Get <InputType>(InputFieldName))));
 }
Пример #32
0
    public static unsafe AsyncReply RecordParser(byte[] data, uint offset, uint length, DistributedConnection connection, uint[] requestSequence)
    {
        var reply = new AsyncReply <IRecord>();

        var classId = data.GetGuid(offset);

        offset += 16;
        length -= 16;


        var template = Warehouse.GetTemplateByClassId((Guid)classId, TemplateType.Record);

        var initRecord = (TypeTemplate template) =>
        {
            ListParser(data, offset, length, connection, requestSequence).Then(r =>
            {
                var ar = (object[])r;

                if (template.DefinedType != null)
                {
                    var record = Activator.CreateInstance(template.DefinedType) as IRecord;
                    for (var i = 0; i < template.Properties.Length; i++)
                    {
                        try
                        {
                            var v = Convert.ChangeType(ar[i], template.Properties[i].PropertyInfo.PropertyType);
                            template.Properties[i].PropertyInfo.SetValue(record, v);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex);
                        }
                    }

                    reply.Trigger(record);
                }
                else
                {
                    var record = new Record();

                    for (var i = 0; i < template.Properties.Length; i++)
                    {
                        record.Add(template.Properties[i].Name, ar[i]);
                    }

                    reply.Trigger(record);
                }
            });
        };

        if (template != null)
        {
            initRecord(template);
        }
        else
        {
            connection.GetTemplate((Guid)classId).Then(tmp =>
            {
                ListParser(data, offset, length, connection, requestSequence).Then(r =>
                {
                    if (tmp == null)
                    {
                        reply.TriggerError(new AsyncException(ErrorType.Management, (ushort)ExceptionCode.TemplateNotFound,
                                                              "Template not found for record."));
                    }
                    else
                    {
                        initRecord(tmp);
                    }
                });
            }).Error(x => reply.TriggerError(x));
        }

        return(reply);
    }
Пример #33
0
        private void CreateNewRecord(enmActionType actionType, long timeStamp, List <SchemaInstrument> schemaInstruments, string value)
        {
            var currentRecord = Record.Last();
            var milliseconds  = (timeStamp <= 0 ? DateTimeOffset.Now.ToUnixTimeMilliseconds() : timeStamp);
            var seconds       = (milliseconds / 1000);

            var previousRecord = Record.ElementAt(Record.Count == 1 ? 0 : Record.Count - 2);

            currentRecord.TimeDiff = (previousRecord.Time == 0 ? 0 : milliseconds - previousRecord.Time);
            currentRecord.Time     = milliseconds;

            if (!string.IsNullOrEmpty(value))
            {
                foreach (var instrument in schemaInstruments)
                {
                    currentRecord.Values[instrument.Key] = value;
                }
            }

            foreach (var formula in schemaFormulas)
            {
                formulaLib.ExecuteMethod(formula, Record);
            }

            var isNewRecord = false;
            var isCorrect   = false;

            if (this.unit == enmUnit.ticks)
            {
                isNewRecord = schemaInstruments.Exists(x => x.Key == isNewRecordEventColumnName);

                TempTimeValue += 1;
                if (TempTimeValue >= this.unitValue)
                {
                    isCorrect     = true;
                    TempTimeValue = 0;
                }
            }
            else if (this.unit == enmUnit.seconds)
            {
                isNewRecord = actionType == enmActionType.TimedEvent;
                isCorrect   = true;

                var temp = seconds; // DateTimeOffset.Now.ToUnixTimeSeconds();
                if ((temp - TempTimeValue) > this.unitValue || timeStamp != 0)
                {
                    isCorrect     = true;
                    TempTimeValue = seconds; // DateTimeOffset.Now.ToUnixTimeSeconds();
                }
            }

            if (isNewRecord && isCorrect)
            {
                foreach (var instrument in transformInstruments)
                {
                    formulaLib.TransformData(instrument, instruments, Record);
                }

                var regex = new Regex(Regex.Escape("X"));

                foreach (var column in columns)
                {
                    var temp = currentRecord.Values[column.Key];

                    if (string.IsNullOrEmpty(temp))
                    {
                        if (column.DataType == SchemaInstrument.enmDataType.@string)
                        {
                            currentRecord.Values[column.Key] = "-";
                        }
                        else
                        {
                            currentRecord.Values[column.Key] = "0";
                        }
                    }
                    else
                    {
                        currentRecord.Values["completed"] = regex.Replace(currentRecord.Values["completed"], "O", 1);
                    }
                }

                if (IGClient.StreamDisplay != enmContinuousDisplay.None && IGClient.StreamDisplay != enmContinuousDisplay.Subscription && IGClient.SchemaFilterName == schemaName)
                {
                    var message = BaseCodeLibrary.GetDatasetRecord(currentRecord, instruments, (IGClient.StreamDisplay == enmContinuousDisplay.DatasetAllColumns), (IGClient.StreamDisplay == enmContinuousDisplay.Prediction));

                    if (string.IsNullOrEmpty(Filter) || message.ToLower().Contains(Filter.ToLower()))
                    {
                        M(enmMessageType.Info, message);
                        //Console.Write($"\r{currentRecord.Values["offer"]}");
                    }
                }

                if (Record.Count > 0)
                {
                    var tempValues = new Dictionary <string, string>();
                    foreach (var instrument in schemaCaptures)
                    {
                        tempValues.Add(instrument.Key, currentRecord.Values[instrument.Key]);
                    }

                    currentRecord = NewRecord();

                    foreach (var tempValue in tempValues)
                    {
                        currentRecord.Values[tempValue.Key] = tempValue.Value;
                    }

                    Record.Add(currentRecord);
                }
            }
        }
Пример #34
0
/*
 *      void xlog(string s)
 *      {
 *          Console.Write(s);
 *          if (el != null) el.WriteEntry(s);
 *      }
 */

        public bool ImportFixed(StreamReader file, string format, StreamWriter log, string spname)
        {
            try
            {
                string[] fields = format.Split(';');
                while (!file.EndOfStream)
                {
                    string line      = file.ReadLine();
                    int    baseindex = 0;
                    Record r         = new Record();
                    r.valid = false;
                    foreach (string fs in fields)
                    {
                        string[] f     = fs.Split(',');
                        string   fname = f[1];
                        int      fsize = Convert.ToInt32(f[0]);
                        string   value = line.Substring(baseindex, fsize);
                        baseindex += fsize;
                        if (fname != "ignore")
                        {
                            int outint;
                            int.TryParse(value.Trim(), out outint);
                            if (fname == "valid" && outint == 1)
                            {
                                r.valid = true;
                                r.Add(fname, value);
                            }
                            else
                            {
                                r.Add(fname, value);
                            }
                        }
                    }
                    r.error      = "";
                    r.nomenclada = nomenclar(r);

                    if (!r.nomenclada)
                    {
                        if (r.error != "")
                        {
                            log.WriteLine(string.Format("{0},{1}", DateTime.Now, r.error));
                        }
                        if (!Insert(r, spname))
                        {
                            if (r.error != "")
                            {
                                log.WriteLine(string.Format("{0},{1}", DateTime.Now, r.error));
                            }
                        }
                        else
                        {
                            log.WriteLine(string.Format("{0},I-OK,{1}", DateTime.Now, r["custcode"]));
                        }
                    }
                    else
                    {
                        if (!Insert(r, spname))
                        {
                            if (r.error != "")
                            {
                                log.WriteLine(string.Format("{0},{1}", DateTime.Now, r.error));
                            }
                        }
                        else
                        {
                            log.WriteLine(string.Format("{0},NI-OK,{1}", DateTime.Now, r["custcode"]));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                log.WriteLine(String.Format("Excepcion procesando archivo:{0}", e.ToString()));
                return(false);
            }
            return(true);
        }
Пример #35
0
        /// <summary>
        /// Parses a dictinary &lt;content&gt; element and returns a record
        /// object containing the parsed values.
        /// </summary>
        /// <param name="element">An XML element.</param>
        /// <returns>The record.</returns>
        internal Record ParseDict(XmlElement element) 
        {
            Trace.Assert(element.Name.Equals("s:dict"));
            if (element.FirstChild == null) 
            {
                return null;
            }

            List<XmlElement> children = GetChildElements(element);

            int count = children.Count;
            if (count == 0) 
            {
                return null;
            }

            Record result = new Record();
            foreach (XmlElement child in children) 
            {
                Trace.Assert(child.Name.Equals("s:key"));
                string key = child.GetAttribute("name");
                object value = this.ParseValue(child);
                if (value != null) 
                {
                    result.Add(key, value);
                }
            }
            return result;
        }
Пример #36
0
 public static void AddField <Type>(this Records.Records Records, System.String FieldName, Type FieldValue)
 {
     Records.Map(Record => Record.Add(FieldName, FieldValue));
 }
Пример #37
0
        /// <summary>
        /// Execute a command against a data source, mapping the data reader GetSchemaTable() result to an enumerable of record dictionaries.
        /// This method perfoms LAZY LOADING/DEFERRED EXECUTION.
        /// Note that THE DATA READER WILL NOT BE DISPOSED UPON ENUMERATION OR FOREACH BRANCH OUT.
        /// </summary>
        /// <param name="dataReader"> The target data reader. </param>
        /// <param name="recordsAffectedCallback"> Executed when the output count of records affected is available to return (post enumeration). </param>
        /// <returns> An enumerable of record dictionary instances, containing key/value pairs of schema metadata. </returns>
        public IEnumerable<IRecord> GetSchemaRecordsFromReader(IDataReader dataReader, Action<int> recordsAffectedCallback)
        {
            IRecord record;
            int recordsAffected;
            string key;
            object value;

            OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): enter", typeof(AdoNetYieldingFascade).Name));

            if ((object)dataReader == null)
                throw new ArgumentNullException("dataReader");

            OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): before yield", typeof(AdoNetYieldingFascade).Name));

            using (DataTable dataTable = dataReader.GetSchemaTable())
            {
                OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): use table", typeof(AdoNetYieldingFascade).Name));

                if ((object)dataTable != null)
                {
                    foreach (DataRow dataRow in dataTable.Rows)
                    {
                        record = new Record();

                        for (int index = 0; index < dataTable.Columns.Count; index++)
                        {
                            key = dataTable.Columns[index].ColumnName;
                            value = dataRow[index].ChangeType<object>();

                            record.Add(key, value);
                        }

                        OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): on yield", typeof(AdoNetYieldingFascade).Name));

                        yield return record; // LAZY PROCESSING INTENT HERE / DO NOT FORCE EAGER LOAD
                    }
                }

                OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): dispose table", typeof(AdoNetYieldingFascade).Name));
            }

            OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): after yield", typeof(AdoNetYieldingFascade).Name));

            recordsAffected = dataReader.RecordsAffected;

            if ((object)recordsAffectedCallback != null)
                recordsAffectedCallback(recordsAffected);

            OnlyWhen._PROFILE_ThenPrint(string.Format("{0}::GetSchemaRecordsFromReader(...): leave", typeof(AdoNetYieldingFascade).Name));
        }