AbsoluteUri IRepository <T> .ToUrn(AlphaDecimal key) { var file = GetFile(key); return(null == file ? null : RecordFile.Load(file).ToRecord <T>().Urn); }
AlphaDecimal? IRepository <T> .ToKey(AbsoluteUri urn) { var file = GetFile(urn); return(null == file ? null : RecordFile.Load(file).ToRecord <T>().Key); }
IRecord <T> IRepository <T> .Select(AlphaDecimal key) { var file = GetFile(key); return(null == file ? null : RecordFile.Load(file).ToRecord <T>()); }
IRecord <T> IRepository <T> .Select(AbsoluteUri urn) { var file = GetFile(urn); return(null == file ? null : RecordFile.Load(file).ToRecord <T>()); }
bool IRepository <T> .Match(AlphaDecimal key, EntityTag etag) { var file = GetFile(key); return(null != file && string.Equals(etag, RecordFile.Load(file).ToRecord <T>().Etag, StringComparison.OrdinalIgnoreCase)); }
IEnumerable <IRecord <T> > IRepository <T> .Query(XPathExpression expression) { if (null == expression) { throw new ArgumentNullException("expression"); } if (null == expression.Expression) { throw new ArgumentOutOfRangeException("expression"); } var files = FileRepositoryConfiguration .Directory() .GetFiles("*.record", SearchOption.AllDirectories); #if NET20 foreach (var file in files) { var obj = RecordFile.Load(file); if (string.IsNullOrEmpty(obj.Body)) { continue; } var selection = obj.ToXml().CreateNavigator().Select(expression.Expression); if (0 != selection.Count) { result.Add(obj.ToRecord <T>()); } } return(result); #else return((from file in files select RecordFile.Load(file) into obj where !string.IsNullOrEmpty(obj.Body) let navigator = obj.ToXml().CreateNavigator() let count = navigator.Select(expression.Expression).Count where 0 != count select obj.ToRecord <T>()).ToList()); #endif }