/// <summary> /// Container placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void ContainerPlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; switch (tagPlaceHolderValue) { case PlaceholderContainerA: // As this sample is non-refreshable hence we don't call GetRecursiveTemplateElementForContainer method( Sets the parentContainer from CustomXmlPart if refresh else saves the parentContainer markup to CustomXmlPart) tagValue = (openXmlElementDataContext.DataContext as Order).Id.ToString(); if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } foreach (var v in openXmlElementDataContext.Element.Elements()) { this.SetContentInPlaceholders(new OpenXmlElementDataContext() { Element = v, DataContext = openXmlElementDataContext.DataContext }); } break; } }
/// <summary> /// Clones the element and set content in placeholders. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> /// <returns>Clones the element and returns the cloned element</returns> protected SdtElement CloneElementAndSetContentInPlaceholders(OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null) { throw new ArgumentNullException("openXmlElementDataContext"); } if (openXmlElementDataContext.Element == null) { throw new ArgumentNullException("openXmlElementDataContext"); } SdtElement clonedSdtElement; if (openXmlElementDataContext.Element.Parent is Paragraph) { Paragraph clonedPara = openXmlElementDataContext.Element.Parent.InsertBeforeSelf(openXmlElementDataContext.Element.Parent.CloneNode(true) as Paragraph); clonedSdtElement = clonedPara.Descendants <SdtElement>().First(); } else { clonedSdtElement = openXmlElementDataContext.Element.InsertBeforeSelf(openXmlElementDataContext.Element.CloneNode(true) as SdtElement); } foreach (var v in clonedSdtElement.Elements()) { this.SetContentInPlaceholders(new OpenXmlElementDataContext { Element = v, DataContext = openXmlElementDataContext.DataContext }); } return(clonedSdtElement); }
/// <summary> /// Called when [place holder found]. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> private void OnPlaceHolderFound(OpenXmlElementDataContext openXmlElementDataContext) { string templateTagPart = string.Empty; string tagGuidPart = string.Empty; SdtElement element = openXmlElementDataContext.Element as SdtElement; GetTagValue(element, out templateTagPart, out tagGuidPart); if (this.generationInfo.PlaceHolderTagToTypeCollection.ContainsKey(templateTagPart)) { switch (this.generationInfo.PlaceHolderTagToTypeCollection[templateTagPart]) { case PlaceHolderType.None: break; case PlaceHolderType.NonRecursive: this.NonRecursivePlaceholderFound(templateTagPart, openXmlElementDataContext); break; case PlaceHolderType.Recursive: this.RecursivePlaceholderFound(templateTagPart, openXmlElementDataContext); break; case PlaceHolderType.Ignore: this.IgnorePlaceholderFound(templateTagPart, openXmlElementDataContext); break; case PlaceHolderType.Container: this.ContainerPlaceholderFound(templateTagPart, openXmlElementDataContext); break; } } }
/// <summary> /// Container placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void ContainerPlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; if (this.placeHolderNameToContentControlXmlMetadataCollection.ContainsKey(tagPlaceHolderValue)) { tagValue = GetNodeText(openXmlElementDataContext.DataContext, this.placeHolderNameToContentControlXmlMetadataCollection[tagPlaceHolderValue].ControlTagXPath); if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } foreach (var v in openXmlElementDataContext.Element.Elements()) { this.SetContentInPlaceholders(new OpenXmlElementDataContext() { Element = v, DataContext = openXmlElementDataContext.DataContext }); } } }
/// <summary> /// Container placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void ContainerPlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; string refTagValue = string.Empty; string refControlValue = string.Empty; XPathNavigator navigator = Parse(openXmlElementDataContext, tagPlaceHolderValue, ref refTagValue, ref refControlValue); if (navigator != null) { tagValue = navigator.GetAttribute(refTagValue, (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI); } if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } foreach (var v in openXmlElementDataContext.Element.Elements()) { this.SetContentInPlaceholders(new OpenXmlElementDataContext() { Element = v, DataContext = openXmlElementDataContext.DataContext }); } }
/// <summary> /// Non recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void NonRecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; // Reuse base class code and handle only tags unavailable in base class bool bubblePlaceHolder = true; switch (tagPlaceHolderValue) { case PhoneLabel: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as Phone).Label.ToString(); content = tagValue; break; case PhoneNumber: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as Phone).Number.ToString(); content = ((openXmlElementDataContext.DataContext) as Phone).Number; break; case MyName: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as MyAddress).Name.ToString(); content = ((openXmlElementDataContext.DataContext) as MyAddress).Name; break; case SignedDate: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as MyAddress).Date.ToString(); content = ((openXmlElementDataContext.DataContext) as MyAddress).Date.ToString(); break; } if (bubblePlaceHolder) { // Use base class code as tags are already defined in base class. base.NonRecursivePlaceholderFound(placeholderTag, openXmlElementDataContext); } else { // Set the tag for the content control if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } // Set the content for the content control this.SetContentOfContentControl(openXmlElementDataContext.Element as SdtElement, content); } }
/// <summary> /// Determines whether [is content control] [the specified open XML element data context]. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> /// <returns> /// <c>true</c> if [is content control] [the specified open XML element data context]; otherwise, <c>false</c>. /// </returns> private static bool IsContentControl(OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null) { return(false); } return(openXmlElementDataContext.Element is SdtBlock || openXmlElementDataContext.Element is SdtRun || openXmlElementDataContext.Element is SdtRow || openXmlElementDataContext.Element is SdtCell); }
/// <summary> /// Non recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void NonRecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; // Index is used to build XPath for controls that are bound to collection item int index = -1; // XPath to be used for data binding string xPath = string.Empty; switch (tagPlaceHolderValue) { case PlaceholderNonRecursiveA: tagValue = ((openXmlElementDataContext.DataContext) as Vendor).Id.ToString(); index = (this.GetDataContext() as Order).vendors.IndexOf((openXmlElementDataContext.DataContext) as Vendor); xPath = "/ns0:DocumentRootNode[1]/ns0:DataBoundControlsDataStore[1]/ns0:Data[1]/Order[1]/vendors[1]/Vendor[" + (index + 1).ToString() + "]/Name[1]"; break; case PlaceholderNonRecursiveB: tagValue = ((openXmlElementDataContext.DataContext) as Item).Id.ToString(); index = (this.GetDataContext() as Order).items.IndexOf((openXmlElementDataContext.DataContext) as Item); xPath = "/ns0:DocumentRootNode[1]/ns0:DataBoundControlsDataStore[1]/ns0:Data[1]/Order[1]/items[1]/Item[" + (index + 1).ToString() + "]/Name[1]"; break; case PlaceholderNonRecursiveC: tagValue = (this.GetDataContext() as Order).Id.ToString(); xPath = "/ns0:DocumentRootNode[1]/ns0:DataBoundControlsDataStore[1]/ns0:Data[1]/Order[1]/Name[1]"; break; case PlaceholderNonRecursiveD: tagValue = (this.GetDataContext() as Order).Id.ToString(); xPath = "/ns0:DocumentRootNode[1]/ns0:DataBoundControlsDataStore[1]/ns0:Data[1]/Order[1]/Description[1]"; break; } // Set the tag for the content control if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } // Set the data binding for content control if (!string.IsNullOrEmpty(xPath)) { this.SetDataBinding(xPath, (openXmlElementDataContext.Element) as SdtElement); } }
/// <summary> /// Container placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void ContainerPlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; if (this.placeHolderNameToContentControlXmlMetadataCollection.ContainsKey(tagPlaceHolderValue)) { if (!this.isRefreshable) { tagValue = GetNodeText(openXmlElementDataContext.DataContext, this.placeHolderNameToContentControlXmlMetadataCollection[tagPlaceHolderValue].ControlTagXPath); if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } foreach (var v in openXmlElementDataContext.Element.Elements()) { this.SetContentInPlaceholders(new OpenXmlElementDataContext() { Element = v, DataContext = openXmlElementDataContext.DataContext }); } } else { SdtElement parentContainer = openXmlElementDataContext.Element as SdtElement; // Sets the parentContainer from CustomXmlPart if refresh else saves the parentContainer markup to CustomXmlPart this.GetParentContainer(ref parentContainer, tagPlaceHolderValue); tagValue = GetNodeText(openXmlElementDataContext.DataContext, this.placeHolderNameToContentControlXmlMetadataCollection[tagPlaceHolderValue].ControlTagXPath); if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(parentContainer, GetFullTagValue(tagPlaceHolderValue, tagValue)); } foreach (var v in parentContainer.Elements()) { this.SetContentInPlaceholders(new OpenXmlElementDataContext() { Element = v, DataContext = openXmlElementDataContext.DataContext }); } } } }
/// <summary> /// Populates the other open XML elements. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> private void PopulateOtherOpenXmlElements(OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext.Element is OpenXmlCompositeElement && openXmlElementDataContext.Element.HasChildren) { List<OpenXmlElement> elements = openXmlElementDataContext.Element.Elements().ToList(); foreach (var element in elements) { if (element is OpenXmlCompositeElement) { this.SetContentInPlaceholders(new OpenXmlElementDataContext() { Element = element, DataContext = openXmlElementDataContext.DataContext }); } } } }
protected override void NonRecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; // Reuse base class code and handle only tags unavailable in base class //bool bubblePlaceHolder = true; switch (tagPlaceHolderValue) { case Title: //bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).Title.ToString(); content = tagValue; break; } //if (bubblePlaceHolder) //{ // // Use base class code as tags are already defined in base class. // base.NonRecursivePlaceholderFound(placeholderTag, openXmlElementDataContext); //} //else //{ // Set the tag for the content control if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } // Set the content for the content control this.SetContentOfContentControl(openXmlElementDataContext.Element as SdtElement, content); //} }
/// <summary> /// Sets the content in placeholders. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected void SetContentInPlaceholders(OpenXmlElementDataContext openXmlElementDataContext) { if (IsContentControl(openXmlElementDataContext)) { string templateTagPart; string tagGuidPart; SdtElement element = openXmlElementDataContext.Element as SdtElement; GetTagValue(element, out templateTagPart, out tagGuidPart); if (this.generationInfo.PlaceholderTagToTypeCollection.ContainsKey(templateTagPart)) { this.OnPlaceHolderFound(openXmlElementDataContext); } else { this.PopulateOtherOpenXmlElements(openXmlElementDataContext); } } else { this.PopulateOtherOpenXmlElements(openXmlElementDataContext); } }
/// <summary> /// Containers the placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void ContainerPlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; switch (tagPlaceHolderValue) { case PlaceholderContainerA: SdtElement parentContainer = openXmlElementDataContext.Element as SdtElement; // Sets the parentContainer from CustomXmlPart if refresh else saves the parentContainer markup to CustomXmlPart this.GetParentContainer(ref parentContainer, tagPlaceHolderValue); base.ContainerPlaceholderFound(placeholderTag, new OpenXmlElementDataContext() { Element = parentContainer, DataContext = openXmlElementDataContext.DataContext }); break; } }
/// <summary> /// Non recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void NonRecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; // Reuse base class code and handle only tags unavailable in base class bool bubblePlaceHolder = true; switch (tagPlaceHolderValue) { case DateRequest: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).DateRequest.ToString("dd/MM/yyyy"); content = tagValue; break; case UserRequest: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).UserRequest; content = tagValue; break; case TypeOfApproval: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).TypeOfApproval; content = tagValue; break; case Chief: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).Chief; content = tagValue; break; case ChiefStatus: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).ChiefStatus; content = tagValue; break; case ChiefComment: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).ChiefComment; content = tagValue; break; case Buyer: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).Buyer; content = tagValue; break; case BuyerStatus: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).BuyerStatus; content = tagValue; break; case BuyerComment: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).BuyerComment; content = tagValue; break; case Approver: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).Approver; content = tagValue; break; case ApproverStatus: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).ApproverStatus; content = tagValue; break; case ApproverComment: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).ApproverComment; content = tagValue; break; case Accountant: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).Accountant; content = tagValue; break; case AccountantStatus: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).AccountantStatus; content = tagValue; break; case AccountantComment: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).AccountantComment; content = tagValue; break; case Confirmer: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).Confirmer; content = tagValue; break; case ConfirmerStatus: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).ConfirmerStatus; content = tagValue; break; case ConfirmerComment: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).ConfirmerComment; content = tagValue; break; case PurchaseDetail_No: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PurchaseDetail).No; content = tagValue; break; case PurchaseDetail_Title: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PurchaseDetail).Title; content = tagValue; break; case PurchaseDetail_Description: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PurchaseDetail).Description; content = tagValue; break; case PurchaseDetail_Quantity: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PurchaseDetail).Quantity; content = tagValue; break; case PurchaseDetail_Price: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PurchaseDetail).Price; content = tagValue; break; case TotalPrice: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).TotalPrice; content = tagValue; break; case ReferencePurchase_No: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as ReferencePurchase).No; content = tagValue; break; case ReferencePurchase_Title: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as ReferencePurchase).Title; content = tagValue; break; case ReferencePurchase_DateRequest: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as ReferencePurchase).DateRequest.ToString("dd/MM/yyyy"); content = tagValue; break; case ReferencePurchase_UserRequest: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as ReferencePurchase).UserRequest; content = tagValue; break; case ReferencePurchase_DepartmentRequest: bubblePlaceHolder = false; tagValue = ((openXmlElementDataContext.DataContext) as ReferencePurchase).DepartmentRequest; content = tagValue; break; } if (bubblePlaceHolder) { // Use base class code as tags are already defined in base class. base.NonRecursivePlaceholderFound(placeholderTag, openXmlElementDataContext); } else { // Set the tag for the content control if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } // Set the content for the content control this.SetContentOfContentControl(openXmlElementDataContext.Element as SdtElement, content); } }
/// <summary> /// Recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void RecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); switch (tagPlaceHolderValue) { case PlaceholderRecursiveA: foreach (Vendor testB in ((openXmlElementDataContext.DataContext) as Order).vendors) { SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = testB }); } openXmlElementDataContext.Element.Remove(); break; case PlaceholderRecursiveB: foreach (Item testC in ((openXmlElementDataContext.DataContext) as Order).items) { SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = testC }); } openXmlElementDataContext.Element.Remove(); break; } }
/// <summary> /// Called when [place holder found]. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> private void OnPlaceHolderFound(OpenXmlElementDataContext openXmlElementDataContext, WordprocessingDocument document) { string templateTagPart = string.Empty; string tagGuidPart = string.Empty; SdtElement element = openXmlElementDataContext.Element as SdtElement; GetTagValue(element, out templateTagPart, out tagGuidPart); if (this.generationInfo.PlaceHolderTagToTypeCollection.ContainsKey(templateTagPart)) { switch (this.generationInfo.PlaceHolderTagToTypeCollection[templateTagPart]) { case PlaceHolderType.None: break; case PlaceHolderType.NonRecursive: this.NonRecursivePlaceholderFound(templateTagPart, openXmlElementDataContext, document); break; case PlaceHolderType.Recursive: this.RecursivePlaceholderFound(templateTagPart, openXmlElementDataContext, document); break; case PlaceHolderType.Ignore: this.IgnorePlaceholderFound(templateTagPart, openXmlElementDataContext, document); break; case PlaceHolderType.Container: this.ContainerPlaceholderFound(templateTagPart, openXmlElementDataContext, document); break; } } }
/// <summary> /// Sets the content in placeholders. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected void SetContentInPlaceholders(OpenXmlElementDataContext openXmlElementDataContext, WordprocessingDocument document) { if (IsContentControl(openXmlElementDataContext)) { string templateTagPart = string.Empty; string tagGuidPart = string.Empty; SdtElement element = openXmlElementDataContext.Element as SdtElement; GetTagValue(element, out templateTagPart, out tagGuidPart); if (this.generationInfo.PlaceHolderTagToTypeCollection.ContainsKey(templateTagPart)) { this.OnPlaceHolderFound(openXmlElementDataContext, document); } else { this.PopulateOtherOpenXmlElements(openXmlElementDataContext, document); } } else { this.PopulateOtherOpenXmlElements(openXmlElementDataContext, document); } }
/// <summary> /// Clones the element and set content in placeholders. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> /// <returns></returns> protected SdtElement CloneElementAndSetContentInPlaceholders(OpenXmlElementDataContext openXmlElementDataContext, WordprocessingDocument document) { if (openXmlElementDataContext == null) { throw new ArgumentNullException("openXmlElementDataContext"); } if (openXmlElementDataContext.Element == null) { throw new ArgumentNullException("openXmlElementDataContext.element"); } SdtElement clonedSdtElement = null; if (openXmlElementDataContext.Element.Parent != null && openXmlElementDataContext.Element.Parent is Paragraph) { Paragraph clonedPara = openXmlElementDataContext.Element.Parent.InsertBeforeSelf(openXmlElementDataContext.Element.Parent.CloneNode(true) as Paragraph); clonedSdtElement = clonedPara.Descendants<SdtElement>().First(); } else { clonedSdtElement = openXmlElementDataContext.Element.InsertBeforeSelf(openXmlElementDataContext.Element.CloneNode(true) as SdtElement); } foreach (var v in clonedSdtElement.Elements()) { this.SetContentInPlaceholders(new OpenXmlElementDataContext() { Element = v, DataContext = openXmlElementDataContext.DataContext }, document); } return clonedSdtElement; }
protected override void RecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue; string tagGuidPart; DocumentGenerator.GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); // Reuse base class code and handle only tags unavailable in base class bool bubblePlaceHolder = true; switch (tagPlaceHolderValue) { case BuildConfigurationSolutionContentControlRow: bubblePlaceHolder = false; foreach (BuildConfigurationSolution bcs in (openXmlElementDataContext.DataContext as BuildDetail).BuildConfigurationSolutions) { // SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext { Element = openXmlElementDataContext.Element, DataContext = bcs }); } openXmlElementDataContext.Element.Remove(); break; case BuildConfigurationContentControlRow: bubblePlaceHolder = false; foreach (BuildConfiguration bc in (openXmlElementDataContext.DataContext as BuildDetail).BuildConfigurations) { // SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext { Element = openXmlElementDataContext.Element, DataContext = bc }); } openXmlElementDataContext.Element.Remove(); break; case ChangesetContentControlRow: bubblePlaceHolder = false; foreach (Changeset cs in (openXmlElementDataContext.DataContext as BuildDetail).Changesets) { // SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext { Element = openXmlElementDataContext.Element, DataContext = cs }); } openXmlElementDataContext.Element.Remove(); break; case ChangesetChangeContentControlRow: bubblePlaceHolder = false; foreach (ChangesetChangeDetail ccd in (openXmlElementDataContext.DataContext as BuildDetail).ChangesetChangeDetails) { // SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext { Element = openXmlElementDataContext.Element, DataContext = ccd }); } openXmlElementDataContext.Element.Remove(); break; case ChangesetChangeServerPaths: bubblePlaceHolder = false; foreach (var ccsp in (openXmlElementDataContext.DataContext as ChangesetChangeDetail).ChangesetChangeServerPaths) { // SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext { Element = openXmlElementDataContext.Element, DataContext = ccsp }); } openXmlElementDataContext.Element.Remove(); break; case WorkItemContentControlRow: bubblePlaceHolder = false; foreach (WorkItem wi in (openXmlElementDataContext.DataContext as BuildDetail).WorkItems) { // SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext { Element = openXmlElementDataContext.Element, DataContext = wi }); } openXmlElementDataContext.Element.Remove(); break; case TestResultPassedItemDetailContentControlRow: bubblePlaceHolder = false; foreach (TestResultPassedItem trpi in (openXmlElementDataContext.DataContext as BuildDetail).TestResultPassedItems) { // SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext { Element = openXmlElementDataContext.Element, DataContext = trpi }); } openXmlElementDataContext.Element.Remove(); break; case TestResultFailedItemDetailContentControlRow: bubblePlaceHolder = false; foreach (TestResultFailedItem trfi in (openXmlElementDataContext.DataContext as BuildDetail).TestResultFailedItems) { // SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext { Element = openXmlElementDataContext.Element, DataContext = trfi }); } openXmlElementDataContext.Element.Remove(); break; case TestResultInconclusiveItemDetailContentControlRow: bubblePlaceHolder = false; foreach (TestResultInconclusiveItem trii in (openXmlElementDataContext.DataContext as BuildDetail).TestResultInconclusiveItems) { // SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext { Element = openXmlElementDataContext.Element, DataContext = trii }); } openXmlElementDataContext.Element.Remove(); break; } if (bubblePlaceHolder) { // Use base class code as tags are already defined in base class. // base. this.RecursivePlaceholderFound(placeholderTag, openXmlElementDataContext); } }
protected override void NonRecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue; string tagGuidPart; DocumentGenerator.GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; // Reuse base class code and handle only tags unavailable in base class bool bubblePlaceHolder = true; switch (tagPlaceHolderValue) { case DocumentCreatedOn: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).DocumentDetail.CreatedOn; content = (openXmlElementDataContext.DataContext as BuildDetail).DocumentDetail.CreatedOn; break; case DocumentCreatedBy: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).DocumentDetail.CreatedBy; content = (openXmlElementDataContext.DataContext as BuildDetail).DocumentDetail.CreatedBy; break; case BuildNumber: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildNumber; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildNumber; break; case BuildReason: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildReason; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildReason; break; case BuildQuality: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildQuality; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildQuality; break; case BuildRequestedBy: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildRequestedBy; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildRequestedBy; break; case BuildDefinitionName: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildDefinition; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildDefinition; break; case BuildTeamProject: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildTeamProject; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildTeamProject; break; case BuildTotalExecutionTimeInSeconds: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildTotalExecutionTimeInSeconds; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildTotalExecutionTimeInSeconds; break; case BuildController: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildController; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildController; break; case BuildUri: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildUri.ToString(); content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildUri.ToString(); break; case BuildSourceGetVersion: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildSourceGetVersion; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildSourceGetVersion; break; case BuildShelvesetName: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildShelvesetName; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildShelvesetName; break; case BuildLabelName: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLabelName; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLabelName; break; case BuildLogLocation: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLogLocation; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLogLocation; break; case BuildDropLocation: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildDropLocation; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildDropLocation; break; case BuildLastModifiedBy: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLastChangedBy; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLastChangedBy; break; case BuildLastModifiedOn: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLastChangedOn; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLastChangedOn; break; case BuildLastModifiedNoOfDaysAgo: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLastModifiedNoOfDaysAgo; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildLastModifiedNoOfDaysAgo; break; case BuildCompletedNoOfDaysAgo: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildCompletedNoOfDaysAgo; content = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildCompletedNoOfDaysAgo; break; case BuildRootNodeSolutionServerPath: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildConfigurationSolution).BuildRootNodeSolutionServerPath; content = (openXmlElementDataContext.DataContext as BuildConfigurationSolution).BuildRootNodeSolutionServerPath; break; case BuildRootNodeErrorCount: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildConfigurationSolution).BuildRootNodeErrorCount; content = (openXmlElementDataContext.DataContext as BuildConfigurationSolution).BuildRootNodeErrorCount; break; case BuildRootNodeWarningCount: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildConfigurationSolution).BuildRootNodeWarningCount; content = (openXmlElementDataContext.DataContext as BuildConfigurationSolution).BuildRootNodeWarningCount; break; case BuildRootNodeLogFile: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildConfigurationSolution).BuildRootNodeLogFile; content = (openXmlElementDataContext.DataContext as BuildConfigurationSolution).BuildRootNodeLogFile; break; case BuildPlatform: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildConfiguration).BuildConfigPlatform; content = (openXmlElementDataContext.DataContext as BuildConfiguration).BuildConfigPlatform; break; case BuildFlavor: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildConfiguration).BuildConfigFlavor; content = (openXmlElementDataContext.DataContext as BuildConfiguration).BuildConfigFlavor; break; case BuildConfigTotalErrors: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildConfiguration).BuildConfigTotalErrors; content = (openXmlElementDataContext.DataContext as BuildConfiguration).BuildConfigTotalErrors; break; case BuildConfigTotalWarnings: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildConfiguration).BuildConfigTotalWarnings; content = (openXmlElementDataContext.DataContext as BuildConfiguration).BuildConfigTotalWarnings; break; case ChangesetId: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as Changeset).ChangesetId; content = (openXmlElementDataContext.DataContext as Changeset).ChangesetId; break; case ChangesetComment: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as Changeset).ChangesetComment; content = (openXmlElementDataContext.DataContext as Changeset).ChangesetComment; break; case ChangesetCommittedBy: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as Changeset).ChangesetCommittedBy; content = (openXmlElementDataContext.DataContext as Changeset).ChangesetCommittedBy; break; case ChangesetCommittedOn: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as Changeset).ChangesetCommittedOn; content = (openXmlElementDataContext.DataContext as Changeset).ChangesetCommittedOn; break; case ChangesetTotalCount: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).ChangesetTotalCount; content = (openXmlElementDataContext.DataContext as BuildDetail).ChangesetTotalCount; break; case ChangesetChangeId: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as ChangesetChangeDetail).ChangesetChangeId; content = (openXmlElementDataContext.DataContext as ChangesetChangeDetail).ChangesetChangeId; break; case ChangesetChangeServerPath: bubblePlaceHolder = false; tagValue = openXmlElementDataContext.DataContext as string; content = openXmlElementDataContext.DataContext as string; break; case WorkItemId: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as WorkItem).WorkItemId; content = (openXmlElementDataContext.DataContext as WorkItem).WorkItemId; break; case WorkItemTitle: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as WorkItem).WorkItemTitle; content = (openXmlElementDataContext.DataContext as WorkItem).WorkItemTitle; break; case WorkItemType: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as WorkItem).WorkItemType; content = (openXmlElementDataContext.DataContext as WorkItem).WorkItemType; break; case WorkItemState: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as WorkItem).WorkItemState; content = (openXmlElementDataContext.DataContext as WorkItem).WorkItemState; break; case WorkItemAssignedTo: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as WorkItem).WorkItemAssignedTo; content = (openXmlElementDataContext.DataContext as WorkItem).WorkItemAssignedTo; break; case WorkItemIteration: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as WorkItem).WorkItemIterationPath; content = (openXmlElementDataContext.DataContext as WorkItem).WorkItemIterationPath; break; case WorkItemAreaPath: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as WorkItem).WorkItemAreaPath; content = (openXmlElementDataContext.DataContext as WorkItem).WorkItemAreaPath; break; case WorkItemIntroduction: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).WorkItemIntroduction; content = (openXmlElementDataContext.DataContext as BuildDetail).WorkItemIntroduction; break; case TestResultId: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultId; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultId; break; case TestResultTitle: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTitle; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTitle; break; case TestResultStatus: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultStatus; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultStatus; break; case TestResultTotalTest: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTest; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTest; break; case TestResultTotalTestCompleted: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestCompleted; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestCompleted; break; case TestResultTotalTestPassed: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestPassed; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestPassed; break; case TestResultTotalTestFailed: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestFailed; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestFailed; break; case TestResultTotalTestPassRate: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestPassRate; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestPassRate; break; case TestResultTotalTestInconclusive: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestInconclusive; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultTotalTestInconclusive; break; case TestResultIsAutomated: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultIsAutomated; content = (openXmlElementDataContext.DataContext as BuildDetail).TestResult.TestResultIsAutomated; break; case TestResultPassedListTitle: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as TestResultPassedItem).TestResultPassedListTitle; content = (openXmlElementDataContext.DataContext as TestResultPassedItem).TestResultPassedListTitle; break; case TestResultPassedListStatus: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as TestResultPassedItem).TestResultPassedListStatus; content = (openXmlElementDataContext.DataContext as TestResultPassedItem).TestResultPassedListStatus; break; case TestResultFailedListTitle: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as TestResultFailedItem).TestResultFailedListTitle; content = (openXmlElementDataContext.DataContext as TestResultFailedItem).TestResultFailedListTitle; break; case TestResultFailedListReason: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as TestResultFailedItem).TestResultFailedListReason; content = (openXmlElementDataContext.DataContext as TestResultFailedItem).TestResultFailedListReason; break; case TestResultInconclusiveListTitle: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as TestResultInconclusiveItem).TestResultInconclusiveListTitle; content = (openXmlElementDataContext.DataContext as TestResultInconclusiveItem).TestResultInconclusiveListTitle; break; case TestResultInconclusiveListStatus: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as TestResultInconclusiveItem).TestResultInconclusiveListStatus; content = (openXmlElementDataContext.DataContext as TestResultInconclusiveItem).TestResultInconclusiveListStatus; break; } if (bubblePlaceHolder) { // Use base class code as tags are already defined in base class. // base. this.NonRecursivePlaceholderFound(placeholderTag, openXmlElementDataContext); } else { // Set the tag for the content control if (!string.IsNullOrEmpty(tagValue)) { DocumentGenerator.SetTagValue(openXmlElementDataContext.Element as SdtElement, DocumentGenerator.GetFullTagValue(tagPlaceHolderValue, tagValue)); } // Set the content for the content control DocumentGenerator.SetContentOfContentControl(openXmlElementDataContext.Element as SdtElement, content); } }
/// <summary> /// Non recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void NonRecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; string refTagValue = string.Empty; string refControlValue = string.Empty; XPathNavigator navigator = Parse(openXmlElementDataContext, tagPlaceHolderValue, ref refTagValue, ref refControlValue); if (navigator != null) { tagValue = navigator.GetAttribute(refTagValue, (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI); content = navigator.GetAttribute(refControlValue, (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI); } // Set the tag for the content control if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } // Set text without data binding this.SetContentOfContentControl(openXmlElementDataContext.Element as SdtElement, content); }
/// <summary> /// Image placeholder found. /// </summary> /// <param name="placeholderTag">The image placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected abstract void PictureContainerPlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext);
/// <summary> /// Recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected abstract void RecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext);
/// <summary> /// Recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void RecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string refTagValue = string.Empty; string refControlValue = string.Empty; XPathNavigator navigator = Parse(openXmlElementDataContext, tagPlaceHolderValue, ref refTagValue, ref refControlValue); if (navigator != null) { XPathNodeIterator nodeIterator = navigator.SelectDescendants("field", (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI, false); while (nodeIterator.MoveNext()) { XmlDocument e = new XmlDocument(); e.LoadXml(nodeIterator.Current.OuterXml); SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = e.DocumentElement }); } } openXmlElementDataContext.Element.Remove(); }
/// <summary> /// Parses the specified open XML element data context. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> /// <param name="tagPlaceHolderValue">The tag place holder value.</param> /// <param name="refTagValue">The ref tag value.</param> /// <param name="refControlValue">The ref control value.</param> /// <returns></returns> private XPathNavigator Parse(OpenXmlElementDataContext openXmlElementDataContext, string tagPlaceHolderValue, ref string refTagValue, ref string refControlValue) { XPathNavigator contentControlsNavigator = (this.GetDataContext() as XmlNode).CreateNavigator(); XPathNodeIterator contentControlsIterator = contentControlsNavigator.SelectDescendants("contentControl", (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI, true); while (contentControlsIterator.MoveNext()) { string contentControlTagAttr = contentControlsIterator.Current.GetAttribute("tag", (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI); refControlValue = contentControlsIterator.Current.GetAttribute("refControlValue", (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI); refTagValue = contentControlsIterator.Current.GetAttribute("refTagValue", (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI); if ((!string.IsNullOrEmpty(contentControlTagAttr)) && contentControlTagAttr == tagPlaceHolderValue) { XPathNavigator navigator = (openXmlElementDataContext.DataContext as XmlNode).CreateNavigator(); XPathNodeIterator iterator = navigator.SelectDescendants("field", (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI, true); while (iterator.MoveNext()) { string attr = iterator.Current.GetAttribute("contentControlTagREFS", (openXmlElementDataContext.DataContext as XmlNode).NamespaceURI); if (!string.IsNullOrEmpty(attr)) { if ((new List<string>(attr.Split(' '))).Contains(contentControlTagAttr)) { return iterator.Current; } } } break; } } return null; }
/// <summary> /// Recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void RecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); // Reuse base class code and handle only tags unavailable in base class bool bubblePlaceHolder = true; switch (tagPlaceHolderValue) { case PurchaseDetail: bubblePlaceHolder = false; foreach (PurchaseDetail purchaseDetail in ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).PurchaseDetails) { SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = purchaseDetail }); } openXmlElementDataContext.Element.Remove(); break; case ReferencePurchase: bubblePlaceHolder = false; foreach (ReferencePurchase referencePurchase in ((openXmlElementDataContext.DataContext) as PhieuMuaHangDataContext).ReferencePurchases) { SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = referencePurchase }); } openXmlElementDataContext.Element.Remove(); break; } if (bubblePlaceHolder) { // Use base class code as tags are already defined in base class. base.RecursivePlaceholderFound(placeholderTag, openXmlElementDataContext); } }
/// <summary> /// Ignore placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void IgnorePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { }
/// <summary> /// Container placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected abstract void ContainerPlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext, WordprocessingDocument document);
/// <summary> /// Picture container placeholder found. /// </summary> /// <param name="placeholderTag">The picture container placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void PictureContainerPlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue; string tagGuidPart; DocumentGenerator.GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; // Reuse base class code and handle only tags unavailable in base class bool bubblePlaceHolder = true; switch (tagPlaceHolderValue) { case BuildState: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildState; switch (tagValue.ToUpper()) { case "SUCCEEDED": content = @"Graphics\Succeeded.JPG"; break; case "PARTIALLYSUCCEEDED": content = @"Graphics\PartiallySucceeded.PNG"; break; case "FAILED": content = @"Graphics\Failed.JPG"; break; case "STOPPED": content = @"Graphics\Stopped.PNG"; break; default: content = @"Graphics\NotStarted.JPG"; break; } break; case BuildRetainIndefinitely: bubblePlaceHolder = false; tagValue = (openXmlElementDataContext.DataContext as BuildDetail).Build.BuildRetainIndefinitely; switch (tagValue.ToUpper()) { case "TRUE": content = @"Graphics\Lock.PNG"; break; case "FALSE": content = @"Graphics\Unlock.PNG"; break; } break; case CheckInInformationImg: bubblePlaceHolder = false; content = @"Graphics\Changeset.PNG"; break; case TestResultDetailsImage: bubblePlaceHolder = false; content = @"Graphics\TestSuite.Png"; break; } if (bubblePlaceHolder) { // Use base class code as tags are already defined in base class. // base. this.NonRecursivePlaceholderFound(placeholderTag, openXmlElementDataContext); } else { // Set the tag for the content control if (!string.IsNullOrEmpty(tagValue)) { DocumentGenerator.SetTagValue(openXmlElementDataContext.Element as SdtElement, DocumentGenerator.GetFullTagValue(tagPlaceHolderValue, tagValue)); } // Set the content for the content control DocumentGenerator.SetContentOfContentControl(openXmlElementDataContext.Element as SdtElement, content); } }
protected override void IgnorePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext, WordprocessingDocument document) { throw new NotImplementedException(); }
/// <summary> /// Recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void RecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); // Reuse base class code and handle only tags unavailable in base class bool bubblePlaceHolder = true; switch (tagPlaceHolderValue) { case VendorDetailRow: bubblePlaceHolder = false; foreach (Vendor testB in ((openXmlElementDataContext.DataContext) as Order).vendors) { SdtElement clonedElement = this.CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = testB }); } openXmlElementDataContext.Element.Remove(); break; } if (bubblePlaceHolder) { // Use base class code as tags are already defined in base class. base.RecursivePlaceholderFound(placeholderTag, openXmlElementDataContext); } }
/// <summary> /// Non recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void NonRecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext, WordprocessingDocument document) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue; string tagGuidPart; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); var content = string.Empty; if (openXmlElementDataContext.DataContext is FinalRTReport) { var row = openXmlElementDataContext.DataContext as FinalRTReport; switch (tagPlaceHolderValue) { case FPNo: content = row.FixedPattern.FPNo; break; case CustomerName: content = row.FixedPattern.Customer.CustomerName; break; case CustomerAddress: content = row.FixedPattern.Customer.Address; break; case CustomerEmail: content = row.FixedPattern.Customer.Email; break; case CustomerPhone: content = row.FixedPattern.Customer.PhoneNo; break; case ReportNo: content = row.ReportNo; break; case Description: content = row.FixedPattern.Description; break; case Coverage: content = row.Coverage.CoverageName; break; case ProcedureRef: content = row.ProcedureRef; break; case Source: content = row.Source; break; case SourceSize: content = row.SourceSize; break; case Strength: content = row.Strength; break; case Specification: content = row.Specifications; break; case DrawingNo: content = row.DrawingNo; break; case LeadScreen: content = row.LeadScreen; break; case HeatNo: content = row.HeatNo; break; case Date: content = row.ReportDate; break; case Film: content = row.Film; break; case RTNo: content = row.RTNo; break; case DateOfTest: content = row.DateOfTest; break; case Evaluation: content = row.EvaluationAsPer; break; case Viewing: content = row.Viewing; break; case Acceptance: content = row.AcceptanceAsPer; break; case TotalArea: content = row.TotalArea; break; case TotalFilmCount: content = row.TotalFilmCount; break; case ExposedTotalArea: content = row.ExposedTotalArea; break; case RetakeTotalArea: content = row.RetakeTotalArea; break; case Result: content = row.Status.Status; break; case Logo: //get the company logo var logo = row.GetCompanyLogo(); SetLogo(openXmlElementDataContext.Element as SdtElement, logo, document); break; case CustomerLogo: var customerLogo = row.GetCustomerLogo(); SetLogo(openXmlElementDataContext.Element as SdtElement, customerLogo, document); break; case ReportTypeNo: content = row.ReportTypeNo; break; } } else if (openXmlElementDataContext.DataContext is FinalRTReportRow) { var reportRow = openXmlElementDataContext.DataContext as FinalRTReportRow; switch (tagPlaceHolderValue) { case SlNo: content = reportRow.SlNo.ToString(); break; case Technique: content = reportRow.Technique; break; case LocationSegment: content = reportRow.LocationAndSegment; break; case Location: content = reportRow.Location; break; case Segment: content = reportRow.Segment; break; case Thickness: content = reportRow.ThicknessRange.ToString(); break; case SFD: content = reportRow.SFD.ToString(); break; case Designation: content = reportRow.Designation; break; case Sensitivity: content = reportRow.Sensitivity; break; case Density: content = reportRow.Density; break; case FilmSize: content = reportRow.FilmSizeWithCount; break; case Observation: content = reportRow.Observations; break; case Finding: content = reportRow.Findings; break; case Classification: content = reportRow.Classifications; break; case Remarks: content = reportRow.RemarkText; break; } } else if (openXmlElementDataContext.DataContext is KeyValuePair<String, float>) { var keyvalue = (KeyValuePair<String, float>)openXmlElementDataContext.DataContext; switch (tagPlaceHolderValue) { case Isotope: content = keyvalue.Key; break; case Area: content = keyvalue.Value.ToString(); break; } } //just avoid replacing the logo with blank text if (tagPlaceHolderValue != Logo && tagPlaceHolderValue != CustomerLogo) { // Set the content for the content control SetContentOfContentControl(openXmlElementDataContext.Element as SdtElement, content); } }
/// <summary> /// Recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected abstract void RecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext, WordprocessingDocument document);
/// <summary> /// Recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void RecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext, WordprocessingDocument document) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue; string tagGuidPart; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); switch (tagPlaceHolderValue) { case RGReportRow: foreach (var row in ((FinalRTReport) (openXmlElementDataContext.DataContext)).FinalRTReportRows) { CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = row }, document); } openXmlElementDataContext.Element.Remove(); break; case IsotopeCollection: case AreaCollection: foreach (var pair in ((FinalRTReport) (openXmlElementDataContext.DataContext)).EnergyAreas) { CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = pair }, document); } openXmlElementDataContext.Element.Remove(); break; case ExposedIsotopeCollection: case ExposedAreaCollection: foreach (var pair in ((FinalRTReport)(openXmlElementDataContext.DataContext)).ExposedEnergyAreas) { CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = pair }, document); } openXmlElementDataContext.Element.Remove(); break; case RetakeIsotopeCollection: case RetakeAreaCollection: foreach (var pair in ((FinalRTReport)(openXmlElementDataContext.DataContext)).RetakeEnergyAreas) { CloneElementAndSetContentInPlaceholders(new OpenXmlElementDataContext() { Element = openXmlElementDataContext.Element, DataContext = pair }, document); } openXmlElementDataContext.Element.Remove(); break; } }
/// <summary> /// Determines whether [is content control] [the specified open XML element data context]. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> /// <returns> /// <c>true</c> if [is content control] [the specified open XML element data context]; otherwise, <c>false</c>. /// </returns> private bool IsContentControl(OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null) { return false; } return openXmlElementDataContext.Element is SdtBlock || openXmlElementDataContext.Element is SdtRun || openXmlElementDataContext.Element is SdtRow || openXmlElementDataContext.Element is SdtCell; }
/// <summary> /// Populates the other open XML elements. /// </summary> /// <param name="openXmlElementDataContext">The open XML element data context.</param> private void PopulateOtherOpenXmlElements(OpenXmlElementDataContext openXmlElementDataContext, WordprocessingDocument document) { if (openXmlElementDataContext.Element is OpenXmlCompositeElement && openXmlElementDataContext.Element.HasChildren) { List<OpenXmlElement> elements = openXmlElementDataContext.Element.Elements().ToList(); foreach (var element in elements) { if (element is OpenXmlCompositeElement) { this.SetContentInPlaceholders(new OpenXmlElementDataContext() { Element = element, DataContext = openXmlElementDataContext.DataContext }, document); } } } }
/// <summary> /// Non recursive placeholder found. /// </summary> /// <param name="placeholderTag">The placeholder tag.</param> /// <param name="openXmlElementDataContext">The open XML element data context.</param> protected override void NonRecursivePlaceholderFound(string placeholderTag, OpenXmlElementDataContext openXmlElementDataContext) { if (openXmlElementDataContext == null || openXmlElementDataContext.Element == null || openXmlElementDataContext.DataContext == null) { return; } string tagPlaceHolderValue = string.Empty; string tagGuidPart = string.Empty; GetTagValue(openXmlElementDataContext.Element as SdtElement, out tagPlaceHolderValue, out tagGuidPart); string tagValue = string.Empty; string content = string.Empty; switch (tagPlaceHolderValue) { case PlaceholderNonRecursiveA: tagValue = ((openXmlElementDataContext.DataContext) as Vendor).Id.ToString(); content = ((openXmlElementDataContext.DataContext) as Vendor).Name; break; case PlaceholderNonRecursiveB: tagValue = ((openXmlElementDataContext.DataContext) as Item).Id.ToString(); content = ((openXmlElementDataContext.DataContext) as Item).Name; break; case PlaceholderNonRecursiveC: tagValue = ((openXmlElementDataContext.DataContext) as Order).Id.ToString(); content = ((openXmlElementDataContext.DataContext) as Order).Name; break; case PlaceholderNonRecursiveD: tagValue = ((openXmlElementDataContext.DataContext) as Order).Id.ToString(); content = ((openXmlElementDataContext.DataContext) as Order).Description; break; } // Set the tag for the content control if (!string.IsNullOrEmpty(tagValue)) { this.SetTagValue(openXmlElementDataContext.Element as SdtElement, GetFullTagValue(tagPlaceHolderValue, tagValue)); } // Set text without data binding this.SetContentOfContentControl(openXmlElementDataContext.Element as SdtElement, content); }