public TraceableEntityDescriptor(Colosoft.Query.Record record, string idFieldName, string nameFieldName, string descriptionFieldName = null) { record.Require("record").NotNull(); idFieldName.Require("idFieldName").NotNull(); nameFieldName.Require("nameFieldName").NotNull(); var idFieldIndex = record.Descriptor.GetFieldPosition(idFieldName); var nameFieldIndex = record.Descriptor.GetFieldPosition(nameFieldName); var descriptionFieldIndex = record.Descriptor.GetFieldPosition(descriptionFieldName); Initialize(record, idFieldIndex, nameFieldIndex, descriptionFieldIndex); }
/// <summary> /// Inicializa a instancia. /// </summary> /// <param name="record"></param> /// <param name="idFieldIndex"></param> /// <param name="nameFieldIndex"></param> /// <param name="descriptionFieldIndex"></param> private void Initialize(Colosoft.Query.Record record, int idFieldIndex, int nameFieldIndex, int descriptionFieldIndex) { this.Id = record[idFieldIndex]; this.Name = record[nameFieldIndex]; if (descriptionFieldIndex >= 0) { this.Description = record[descriptionFieldIndex]; } if (record.Descriptor.Contains("ActivatedDate") && record.Descriptor.Contains("ExpiredDate")) { DateTimeOffset activatedDate = record["ActivatedDate"]; DateTimeOffset?expiredDate = record["ExpiredDate"]; IsExpired = expiredDate.HasValue && (ServerData.GetDateTimeOffSet() > expiredDate); IsActive = activatedDate < ServerData.GetDateTimeOffSet() && !IsExpired; } }
/// <summary> /// Carrega o próximo conjunto de dados do cache. /// </summary> /// <param name="data"></param> /// <param name="index"></param> /// <returns></returns> public bool LoadNext(ref System.Collections.Specialized.OrderedDictionary data, ref object index) { try { if (!_started) { Start(null); } Colosoft.Query.Record record = null; Colosoft.Query.IRecordKeyGenerator generator = null; while (true) { if (!_itemsLoader.MoveNext()) { _itemsLoader.Dispose(); _itemsLoader = null; _started = false; return(false); } record = _itemsLoader.Current; generator = _itemsLoader.CurrentGenerator; if (record == null || generator == null) { continue; } break; } var key = generator.GetKey(record); var values = new object[record.FieldCount]; for (var i = 0; i < record.FieldCount; i++) { values[i] = record.GetValue(i); } var cacheItem = new ProviderCacheItem(new CacheItemRecord(_itemsLoader.CurrentDataEntry.TypeName, values, record.Descriptor)); cacheItem.AbsoluteExpiration = DateTime.MaxValue; data.Add(key, cacheItem); return(true); } catch { throw; } }
public TraceableEntityDescriptor(Colosoft.Query.Record record, int idFieldIndex, int nameFieldIndex, int descriptionFieldIndex = -1) { record.Require("record").NotNull(); Initialize(record, idFieldIndex, nameFieldIndex, descriptionFieldIndex); }