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);
            }
예제 #2
0
        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);
        }