protected RFCatalogEntry() { Metadata = new RFMetadata(); Version = 0; UpdateTime = new DateTimeOffset(DateTime.Now); IsValid = true; }
public static RFDocument Create(RFCatalogKey key, object content, RFMetadata metadata = null) { return(new RFDocument { Key = key, Content = content, Type = content.GetType().FullName, Metadata = metadata }); }
public override RFCatalogKeyMetadata GetKeyMetadata(RFCatalogKey key) { var keyType = key.GetType().FullName; var keyString = key.ToString(); var keyHash = RFStringHelpers.QuickHash(keyString); //Log.Debug(this, "GetKeyMetadata {0}", keyType); try { var dataTable = new DataTable(); using (var connection = new SqlConnection(_connectionString)) { connection.Open(); using (var getCommand = CreateCommand("[RIFF].[GetKeyMetadata]", connection)) { getCommand.CommandType = CommandType.StoredProcedure; getCommand.Parameters.AddWithValue("@KeyType", keyType); getCommand.Parameters.AddWithValue("@SerializedKey", keyString); getCommand.Parameters.AddWithValue("@KeyHash", keyHash); using (var reader = getCommand.ExecuteReader(System.Data.CommandBehavior.SingleResult)) { dataTable.Load(reader); } } } if (dataTable != null && dataTable.Rows != null && dataTable.Rows.Count > 0) { var dataRow = dataTable.Rows[0]; return(new RFCatalogKeyMetadata { ContentType = dataRow["ContentType"].ToString(), KeyType = dataRow["KeyType"].ToString(), Key = RFXMLSerializer.DeserializeContract(dataRow["KeyType"].ToString(), dataRow["SerializedKey"].ToString()) as RFCatalogKey, KeyReference = (long)dataRow["CatalogKeyID"], Metadata = RFMetadata.Deserialize(dataRow["Metadata"].ToString()), UpdateTime = (DateTimeOffset)dataRow["UpdateTime"], IsValid = (bool)dataRow["IsValid"], DataSize = (long)dataRow["DataSize"] }); } } catch (Exception ex) { Log.Exception(this, "Error retrieving key metadata", ex); } return(null); }
protected RFCatalogEntry ExtractEntry(RFStoreType storeType, Dictionary <string, object> dataRow, bool ignoreContent) { RFCatalogEntry entry = null; switch (storeType) { case RFStoreType.Document: entry = ExtractDocument(dataRow, ignoreContent); break; default: throw new Exception(String.Format("Unrecognized store type {0}", storeType)); } // common fields var type = dataRow["KeyType"].ToString(); entry.Key = (RFCatalogKey)RFXMLSerializer.DeserializeContract(type, dataRow["SerializedKey"].ToString()); entry.Metadata = RFMetadata.Deserialize(dataRow["Metadata"].ToString()) ?? new RFMetadata(); entry.UpdateTime = (DateTimeOffset)dataRow["UpdateTime"]; entry.Version = (int)dataRow["Version"]; entry.IsValid = (bool)dataRow["IsValid"]; return(entry); }
public override List <RFCatalogKeyMetadata> SearchKeys(Type t, DateTime?startTime = null, DateTime?endTime = null, int limitResults = 0, RFDate?valueDate = null, bool latestOnly = false) { var keys = new List <RFCatalogKeyMetadata>(); var keyType = t.FullName; var retrieveAllKeys = t.Equals(typeof(RFCatalogKey)); if (limitResults == 0) { limitResults = _maxResults; } // the current query does not support snapshot-in-time, need to extend KeysLatestView to // take in a ValueDate param if (valueDate != null) { latestOnly = false; } //Log.Debug(this, "GetKeyMetadata {0}", keyType); try { var dataTable = new DataTable(); using (var connection = new SqlConnection(_connectionString)) { connection.Open(); using (var getCommand = CreateCommand("[RIFF].[SearchKeys]", connection)) { getCommand.CommandType = CommandType.StoredProcedure; getCommand.Parameters.AddWithValue("@LimitResults", limitResults); if (retrieveAllKeys) { getCommand.Parameters.AddWithValue("@KeyType", DBNull.Value); } else { getCommand.Parameters.AddWithValue("@KeyType", keyType); } if (startTime.HasValue) { getCommand.Parameters.AddWithValue("@StartTime", startTime); } if (endTime.HasValue) { getCommand.Parameters.AddWithValue("@EndTime", startTime); } if (valueDate.HasValue) { getCommand.Parameters.AddWithValue("@GraphInstanceDate", valueDate.Value.ToYMD()); } if (latestOnly) { getCommand.Parameters.AddWithValue("@LatestInstanceOnly", true); getCommand.Parameters.AddWithValue("@ExcludeFiles", true); } using (var reader = getCommand.ExecuteReader(System.Data.CommandBehavior.SingleResult)) { dataTable.Load(reader); } } } if (dataTable != null && dataTable.Rows != null && dataTable.Rows.Count > 0) { foreach (DataRow dataRow in dataTable.Rows) { try { keys.Add(new RFCatalogKeyMetadata { ContentType = dataRow["ContentType"].ToString(), KeyType = dataRow["KeyType"].ToString(), Key = RFXMLSerializer.DeserializeContract(dataRow["KeyType"].ToString(), dataRow["SerializedKey"].ToString()) as RFCatalogKey, KeyReference = (long)dataRow["CatalogKeyID"], Metadata = RFMetadata.Deserialize(dataRow["Metadata"].ToString()), UpdateTime = (DateTimeOffset)dataRow["UpdateTime"], IsValid = (bool)dataRow["IsValid"], DataSize = (long)dataRow["DataSize"], Instance = (dataRow["GraphInstanceName"] != DBNull.Value && dataRow["GraphInstanceDate"] != DBNull.Value) ? new RFGraphInstance { Name = dataRow["GraphInstanceName"].ToString(), ValueDate = new RFDate((int)dataRow["GraphInstanceDate"]) } : null }); } catch (Exception ex) { Log.Exception(this, ex, "Error deserializing key metadata {0}", dataRow["SerializedKey"].ToString()); } } } } catch (Exception ex) { Log.Exception(this, "Error retrieving key metadata", ex); } return(keys); }