private FeedEntry BuildFeedEntry(CorrelatedResSyncInfo correlation, IFeedEntryEntityWrapper wrapper) { // create a new empty Feed Entry //ISyncSourceResourceFeedEntry feedEntry = FeedComponentFactory.Create<ISyncSourceResourceFeedEntry>(); // get resource payload container from data store FeedEntry feedEntry = wrapper.GetSyncSourceFeedEntry(correlation); // create and set SyncState feedEntry.SyncState = new SyncState(); feedEntry.SyncState.EndPoint = correlation.ResSyncInfo.EndPoint; feedEntry.SyncState.Tick = (correlation.ResSyncInfo.Tick > 0) ? correlation.ResSyncInfo.Tick : 1; feedEntry.SyncState.Stamp = correlation.ResSyncInfo.ModifiedStamp; // set the id tag feedEntry.Id = feedEntry.Uri; // set the title tag feedEntry.Title = String.Format("{0}: {1}", _parentPerformer._requestContext.ResourceKind.ToString(), feedEntry.Key); // set the updated tag feedEntry.Updated = correlation.ResSyncInfo.ModifiedStamp.ToLocalTime(); // set resource dependent links (self, edit, schema, template, post, service) feedEntry.Links.AddRange(LinkFactory.CreateEntryLinks(_parentPerformer._requestContext, feedEntry)); return(feedEntry); }
public void Read(string id) { Feed <FeedEntry> result = new Feed <FeedEntry>(); //result.Updated = GetRandomDate(); result.Url = _request.Uri.ToString(); result.Author.Name = "Northwind Adapter"; string resource = TrimApostophes(id); if (resource != null) { _request.Response.FeedEntry = _wrapper.GetFeedEntry(resource); if (_request.Response.FeedEntry != null && !_request.Response.FeedEntry.IsDeleted && isActive(_request.Response.FeedEntry)) { _request.Response.FeedEntry.Title = _request.Response.FeedEntry.ToString(); } else { throw new DiagnosesException(Severity.Error, resource + " not found", DiagnosisCode.DatasetNotFound); } } else { result.Category.Scheme = "http://schemas.sage.com/sdata/categories"; result.Category.Term = "collection"; result.Category.Label = "Resource Collection"; string[] ids = _wrapper.GetFeed(); long start = Math.Max(0, _request.Uri.StartIndex - 1); //Startindex is 1-based long max = _request.Uri.Count == null ? ids.Length : Math.Min((long)_request.Uri.Count + start, (long)ids.Length); long entryCount = _request.Uri.Count == null ? DEFAULT_COUNT : (long)_request.Uri.Count; _request.Uri.Count = entryCount; for (long i = start; result.Entries.Count < entryCount && i < ids.Length; i++) { string entryId = ids[i]; FeedEntry entry = _wrapper.GetFeedEntry(entryId); if (entry != null) { entry.Title = entry.ToString(); entry.Links.AddRange(LinkFactory.CreateEntryLinks(_context, entry)); entry.Updated = DateTime.Now; result.Entries.Add(entry); } } result.Title = result.Entries.Count + " " + _context.ResourceKind.ToString(); HandlePaging(_request, result, ids); //FeedLink link = new FeedLink(_request.Uri.AppendPath("$schema").ToString(), LinkType.Schema, MediaType.Xml, "Schema"); FeedLink[] links = LinkFactory.CreateFeedLinks(_context, _request.Uri.ToString()); result.Links.AddRange(links); result.Updated = DateTime.Now; _request.Response.Feed = result; } }
private FeedEntry BuildFeedEntry(SdataTransactionResult transactionResult, IFeedEntryEntityWrapper wrapper) { // Create result feed entry FeedEntry feedEntry; if (null != transactionResult.Diagnosis) { /* set diagnosis */ feedEntry = new FeedEntry(); feedEntry.Diagnoses = new Diagnoses(); feedEntry.Diagnoses.Add(transactionResult.Diagnosis); } else { /* get and the resource payload */ // Get resource data feedEntry = wrapper.GetSyncTargetFeedEntry(transactionResult); // set id tag feedEntry.Id = feedEntry.Uri; // set title tag feedEntry.Title = String.Format("{0}: {1}", _parentPerformer._requestContext.ResourceKind.ToString(), feedEntry.Key); // set resource dependent links (self, edit, schema, template, post, service) feedEntry.Links.AddRange(LinkFactory.CreateEntryLinks(_parentPerformer._requestContext, feedEntry)); } // set updated feedEntry.Updated = DateTime.Now.ToLocalTime(); feedEntry.HttpStatusCode = transactionResult.HttpStatus; feedEntry.HttpMessage = transactionResult.HttpMessage;; if (transactionResult.HttpMethod == HttpMethod.PUT) { feedEntry.HttpMethod = "PUT"; } else if (transactionResult.HttpMethod == HttpMethod.POST) { feedEntry.HttpMethod = "POST"; } else { feedEntry.HttpMethod = "DELETE"; } feedEntry.HttpLocation = transactionResult.Location; return(feedEntry); }
protected FeedEntry BuildFeedEntryForCorrelation(CorrelatedResSyncInfo corrResSyncInfo, IFeedEntryEntityWrapper wrapper) { FeedEntry feedEntry; #region Payload if (null != wrapper) { // Get resource data feedEntry = wrapper.GetFeedEntry(corrResSyncInfo.LocalId); } else { // Create an empty payload container feedEntry = new FeedEntry(); feedEntry.IsDeleted = false; feedEntry.Key = corrResSyncInfo.LocalId; } if (feedEntry != null) { // modify url and set uuid as we are requesting linked resources here. feedEntry.Uri = string.Format("{0}{1}('{2}')", _requestContext.DatasetLink, _requestContext.ResourceKind.ToString(), corrResSyncInfo.LocalId); feedEntry.UUID = corrResSyncInfo.ResSyncInfo.Uuid; #endregion // set id tag feedEntry.Id = feedEntry.Uri; // set title tag feedEntry.Title = string.Format("{0}('{1}') : {2}", _requestContext.ResourceKind.ToString(), corrResSyncInfo.LocalId, corrResSyncInfo.ResSyncInfo.Uuid); feedEntry.Updated = corrResSyncInfo.ResSyncInfo.ModifiedStamp.ToLocalTime(); // set resource dependent links (self, edit, schema, template, post, service) feedEntry.Links.AddRange(LinkFactory.CreateEntryLinks(_requestContext, feedEntry)); } return(feedEntry); }