/// <summary> /// takes an existing atomentry object and either copies it into this feed collection, /// or moves it by creating a source element and copying it in here if the value is actually /// already part of a collection /// </summary> /// <param name="value"></param> /// <returns></returns> public AtomEntry CopyOrMove(AtomEntry value) { if (value != null) { if (value.Feed == null) { value.setFeed(this.feed); } else { if (this.feed != null && value.Feed == this.feed) { // same object, already in here. throw new ArgumentException("The entry is already part of this collection"); } // now we need to see if this is the same feed. If not, copy if (AtomFeed.IsFeedIdentical(value.Feed, this.feed) == false) { AtomEntry newEntry = AtomEntry.ImportFromFeed(value); newEntry.setFeed(this.feed); value = newEntry; } } value.ProtocolMajor = this.feed.ProtocolMajor; value.ProtocolMinor = this.feed.ProtocolMinor; } base.Add(value); return(value); }
///////////////////////////////////////////////////////////////////////////// #endregion #region Editing APIs ////////////////////////////////////////////////////////////////////// /// <summary>uses the set service to insert a new entry. </summary> /// <param name="newEntry">the atomEntry to insert into the feed</param> /// <returns>the entry as echoed back from the server. The entry is NOT added /// to the feeds collection</returns> ////////////////////////////////////////////////////////////////////// public TEntry Insert <TEntry>(TEntry newEntry) where TEntry : AtomEntry { //Tracing.Assert(newEntry != null, "newEntry should not be null"); if (newEntry == null) { throw new ArgumentNullException("newEntry"); } AtomEntry echoedEntry = null; if (newEntry.Feed == this) { // same object, already in here. throw new ArgumentException("The entry is already part of this colleciton"); } // now we need to see if this is the same feed. If not, copy if (newEntry.Feed == null) { newEntry.setFeed(this); } else if (AtomFeed.IsFeedIdentical(newEntry.Feed, this) == false) { newEntry = AtomEntry.ImportFromFeed(newEntry) as TEntry; newEntry.setFeed(this); } if (this.Service != null) { echoedEntry = Service.Insert(this, newEntry); } return(echoedEntry as TEntry); }