/// <summary> /// Constructs a <b>PublishException</b> for the given MvcRequest /// and PublishRecord, with the specified message. /// </summary> /// <param name="request">The <b>MvcRequest</b> in which the exception occurred.</param> /// <param name="publishRecord">The <b>PublishRecord</b> in use at the time /// the exception occurred.</param> /// <param name="message">The error message to return.</param> public PublishException( MvcRequest request, PublishRecord publishRecord, string message) : base(message) { this.request = request; this.publishRecord = publishRecord; }
/// <summary> /// Constructs a <b>PublishException</b> for the given TransitionContext /// and PublishRecord, with the specified message. /// </summary> /// <param name="context">The <b>TransitionContext</b> in which the exception occurred.</param> /// <param name="publishRecord">The <b>PublishRecord</b> in use at the time /// the exception occurred.</param> /// <param name="message">The error message to return.</param> public PublishException( TransitionContext context, PublishRecord publishRecord, string message) : base(message) { this.context = context; this.publishRecord = publishRecord; }
/// <summary> /// Constructs a <b>PublishedPageCollection</b> from the given data in XML /// format. /// </summary> /// <remarks> /// The format of the pagesXml parameter is: /// <pre> /// <PublishedPages> /// <Page startState="" publishedState="" key="" event="" path="" lastPublished="" /> /// ... /// </PublishedPages> /// </pre> /// </remarks> /// <param name="pagesXml">The <b>XmlDocument</b> containing the data to /// populate the new <b>PublishedPageCollection</b> with.</param> public PublishedPageCollection( XmlDocument pagesXml) { if ((pagesXml != null) && (pagesXml.DocumentElement != null)) { XmlNodeList pages = pagesXml.DocumentElement.SelectNodes("Page"); foreach (XmlNode pg in pages) { long startState = long.Parse(pg.Attributes["startState"].Value); long publishedState = long.Parse(pg.Attributes["publishedState"].Value); string key = pg.Attributes["key"].Value; string evnt = pg.Attributes["event"].Value; string path = pg.Attributes["path"].Value; string publisher = pg.Attributes["publisher"].Value; int hits = int.Parse(pg.Attributes["hits"].Value); DateTime? publishTime = DateTime.Parse(pg.Attributes["lastPublished"].Value); PublishRecord pageRec = new PublishRecord( key, startState, evnt, publishedState, path, publishTime, publisher); pageRec.HitCount = hits; Add(key, pageRec); } } }
/// <summary> /// Gets the <c>PublishRecord</c> for the target page of the given /// context. /// </summary> /// <param name="key"></param> /// <param name="context">The <c>TransitionContext</c> to get the <c>PublishRecord</c> for.</param> /// <param name="publisher">The <c>ContentPublisher</c></param> /// <param name="addIfNotPresent">If <b>true</b> adds a new <b>PublishRecord</b> /// to the internal collection for the given context.</param> /// <returns>The <c>PublishRecord</c> for the target page of the given context.</returns> internal PublishRecord GetPublishRecord( string key, TransitionContext context, IContentPublisher publisher, bool addIfNotPresent) { PublishRecord pubRec = this.publishedPages[key]; if ((pubRec == null) && addIfNotPresent) { pubRec = new PublishRecord(key, context.StartState.Id, context.StartEvent, context.EndState.Id, null, null, publisher.Name); this.publishedPages.Add(key, pubRec); } return pubRec; }
/// <summary> /// Determines if the published content referenced by the given PublishRecord is expired. /// </summary> /// <param name="publishRecord">The PublishRecord to determine the expiration of.</param> /// <returns><b>True</b> if the given PublishRecord is expired, <b>false</b> if not.</returns> public virtual bool IsExpired( PublishRecord publishRecord) { #if (PUBLISH_TRACE) string msg = "Checking " + publishRecord.Key; if (publishRecord.LastPublished.HasValue) { msg += string.Format(" LastPublished: {0}, pageExpireTime: {1}, expired = {2}.", publishRecord.LastPublished.Value, pageExpireTime, (publishRecord.LastPublished.Value.AddMinutes(pageExpireTime) < DateTime.Now)); } else { msg += " - no LastPublished time."; } LogManager.GetCurrentClassLogger().Debug(msg); #endif return (!publishRecord.LastPublished.HasValue || (publishRecord.LastPublished.Value.AddMinutes(pageExpireTime) < DateTime.Now)); }
/// <summary> /// Adds the given <b>PublishRecord</b> to the collection with the specified /// key. /// </summary> /// <param name="key">The key to add the <b>PublishRecord</b> under.</param> /// <param name="pubRec">The <b>PublishRecord</b> to add to the collection.</param> internal void Add( string key, PublishRecord pubRec) { if (!pageHash.ContainsKey(key)) { pageHash.Add(key, pubRec); } }
/// <summary> /// Determines if the published content for the given <b>PublishRecord</b> is expired. /// </summary> /// <param name="publishRecord">The <b>PublishRecord</b> to check the expiration for.</param> /// <returns><b>True</b> if the content is expired, <b>false</b> if not.</returns> public virtual bool IsExpired( PublishRecord publishRecord) { return this.contentPublisher.IsExpired(publishRecord); }