/// <summary> /// Gets the content from the SIFElement for the specified version of SIF. Only /// elements that apply to the requested version of SIF will be returned. /// </summary> /// <param name="element">The element to retrieve content from</param> /// <param name="version"></param> /// <returns></returns> public virtual IList <Element> GetContent(SifElement element, SifVersion version) { List <Element> returnValue = new List <Element>(); ICollection <SimpleField> fields = element.GetFields(); foreach (SimpleField val in fields) { IElementDef def = val.ElementDef; if (def.IsSupported(version) && !def.IsAttribute(version) && def.Field) { returnValue.Add(val); } } IList <SifElement> children = element.GetChildList(); foreach (SifElement val in children) { IElementDef def = val.ElementDef; if (def.IsSupported(version)) { returnValue.Add(val); } } MergeSort.Sort <Element>(returnValue, ElementSorter <Element> .GetInstance(version)); //returnValue.Sort( ElementSorter<Element>.GetInstance( version ) ); return(returnValue); }
/// <summary> /// Gets the content from the SIFElement for the specified version of SIF. Only /// elements that apply to the requested version of SIF will be returned. /// </summary> /// <param name="element">The element to retrieve content from</param> /// <param name="version"></param> /// <returns></returns> public override IList <Element> GetContent(SifElement element, SifVersion version) { List <Element> returnValue = new List <Element>(); ICollection <SimpleField> fields = element.GetFields(); foreach (SimpleField val in fields) { IElementDef def = val.ElementDef; if (def.IsSupported(version) && !def.IsAttribute(version) && def.Field) { returnValue.Add(val); } } IList <SifElement> children = element.GetChildList(); foreach (SifElement val in children) { IElementDef def = val.ElementDef; if (def.IsSupported(version)) { if (def.IsCollapsed(version)) { ICollection <Element> subElements = GetContent(val, version); // FIXUP the ElementDef for this version of SIF. // for example, StudentPersonal/EmailList/Email needs it's // ElementDef set to "StudentPersonal_Email" foreach (Element e in subElements) { IElementDef subElementDef = e.ElementDef; if (version.CompareTo(subElementDef.EarliestVersion) >= 0) { String tag = subElementDef.Tag(Adk.SifVersion); IElementDef restoredDef = Adk.Dtd.LookupElementDef(element.ElementDef, tag); if (restoredDef != null) { e.ElementDef = restoredDef; } returnValue.Add(e); } } } else { returnValue.Add(val); } } } MergeSort.Sort <Element>(returnValue, ElementSorter <Element> .GetInstance(version)); //returnValue.Sort(ElementSorter<Element>.GetInstance(version)); return(returnValue); }
/// <summary> Write a SIF element in the version of SIF currently in effect for this /// SifWriter. /// </summary> /// <param name="element">The SIF Element instance to Write to the output stream /// <param name="isLegacy">if true, this method assumes that it needs to do more work, /// such as looking for rendering surrogates for the specific version of SIF</param> /// </param> private void WriteElement(SifElement element, bool isLegacy) { IElementDef def = element.ElementDef; if (!(Include(element) && def.IsSupported(fVersion))) { return; } if (isLegacy) { IRenderSurrogate surrogate = def.GetVersionInfo(fVersion).GetSurrogate(); if (surrogate != null) { surrogate.RenderRaw(fWriter, fVersion, element, fFormatter); return; } } if (element.IsEmpty() || !HasContent(element, fVersion)) { if (element is XMLData) { XmlDocument doc = ((XMLData)element).Xml; doc.Save(fWriter); } else { Write(element, EMPTY, isLegacy); } } else { Write(element, OPEN, isLegacy); ICollection <Element> elements = fFormatter.GetContent(element, fVersion); foreach (Element childElement in elements) { if (childElement is SifElement) { WriteElement((SifElement)childElement, isLegacy); } else { Write((SimpleField)childElement, isLegacy); } } fWriter.WriteEndElement(); } }
internal AdkAttributeIterator(SifElementPointer parent) : base(parent) { SifVersion version = parent.Version; SifElement node = (SifElement)parent.Node; // Capture all fields foreach (SimpleField field in node.GetFields()) { IElementDef fieldDef = field.ElementDef; if (fieldDef.IsSupported(version) && fieldDef.IsAttribute(version)) { addNodeToIterate(field); } } }
/** * Creates a SIF_Query element from the specified Adk query object using * the specified version of SIF * @param query The Query to convert to a SIF_Query * @param version The version of SIF to render the SIF_Query xml in * @param allowFieldRestrictions True if the field restrictions in the query should be rendered * @return a SIF_Query object */ public static SIF_Query CreateSIF_Query(Query query, SifVersion version, bool allowFieldRestrictions) { SIF_QueryObject sqo = new SIF_QueryObject(query.ObjectType.Tag(version)); SIF_Query sifQ = new SIF_Query(sqo); if (query.HasConditions) { sifQ.SIF_ConditionGroup = createConditionGroup(query, version); } if (allowFieldRestrictions && query.HasFieldRestrictions) { foreach (ElementRef elementRef in query.FieldRestrictionRefs) { String path = null; IElementDef field = elementRef.Field; if (field != null) { if (!field.IsSupported(version)) { continue; } path = field.GetSQPPath(version); } if (path == null) { path = elementRef.XPath; } if (path != null) { path = Adk.Dtd.TranslateSQP(query.ObjectType, path, version); sqo.AddSIF_Element(new SIF_Element(path)); } } } return(sifQ); }