// Recursive function for populating agenda tree. private void createTreeView(MetaDataDataCollection meta_collection, TreeViewItem treeItem) { ArrayList al = new ArrayList(meta_collection); MetaDataData[] meta = (MetaDataData[])al.ToArray(typeof(MetaDataData)); createTreeView(meta,treeItem); }
private void WriteXmlFromMetaData(XmlTextWriter writer, MetaDataDataCollection meta_collection) { ArrayList al = new ArrayList(meta_collection); MetaDataData[] meta = (MetaDataData[])al.ToArray(typeof(MetaDataData)); WriteXmlFromMetaData(writer, meta); }
/// <summary> /// Converts a list of metadata as returned by GetClipMetaData or GetEventMetaData and converts it to /// tree form that can be used to write back into MediaManager via ImportClipMetaData or ImportEventMetaData. /// </summary> /// <param name="MetaData">The collection of metadata to be converted to tree form.</param> /// public void ConvertToMetaTree(ref MetaDataDataCollection MetaData) { MetaData = m_BuildMetaBranch(MetaData, 0); }
/// <summary> /// Recursively builds a metadata tree from the contents of an array of metadata. /// </summary> /// <param name="metalist">The array of metadata to convert to a tree.</param> /// <param name="ParentID">The numberic ID of the parent node (0 if building from the root is desired).</param> /// <returns>The metadata in tree form in a <see cref="Granicus.MediaManager.SDK.MetaDataDataCollection"/>.</returns> private MetaDataDataCollection m_BuildMetaBranch(MetaDataDataCollection metalist, int ParentID) { MetaDataDataCollection tree = new MetaDataDataCollection(); foreach (MetaDataData meta in metalist) { if (meta.ParentID == ParentID) { meta.Children = m_BuildMetaBranch(metalist, meta.ID); tree.Add(meta); } } return tree; }
/// <summary> /// Imports an entire tree off metadata into the root level of the given event. /// </summary> /// <param name="EventID">The numeric Event ID to place the metadata tree on.</param> /// <param name="MetaData">A MetaDataDataCollection that represents the entire tree.</param> /// <param name="ClearExisting">Whether or not to clear the existing metadata for the event (this is usually True).</param> /// <param name="AsTree">Whether or not the data is formed into a tree (this is almost always True).</param> /// <returns>An array of <see cref="Granicus.MediaManager.SDK.KeyMapping"/> objects that can be used to get the numeric IDs of the new metadata records.</returns> public KeyMapping[] ImportEventMetaData(int EventID, MetaDataDataCollection MetaData, bool ClearExisting, bool AsTree) { ArrayList al = new ArrayList(MetaData); MetaDataData[] MetaArray = (MetaDataData[])al.ToArray(typeof(MetaDataData)); return ImportEventMetaData(EventID, MetaArray, ClearExisting, AsTree); }
private MetaDataDataCollection ParseDocumentItems(XmlNode documentItemsNode) { MetaDataDataCollection metaCollection = new MetaDataDataCollection(); foreach (XmlNode documentItemNode in documentItemsNode.ChildNodes) { // process basic MetaDataData properties MetaDataData meta = new MetaDataData(); meta.Name = documentItemNode.SelectSingleNode("Name").InnerText; meta.ForeignID = Int32.Parse(documentItemNode.SelectSingleNode("ForeignID").InnerText); meta.Consent = Int32.Parse(documentItemNode.SelectSingleNode("Consent").InnerText); // process payload switch (documentItemNode.Name) { case "AgendaItem": AgendaItem agendaItem = new AgendaItem(); agendaItem.Actions = documentItemNode.SelectSingleNode("Actions").InnerText; agendaItem.Department = documentItemNode.SelectSingleNode("Department").InnerText; meta.Payload = agendaItem; break; case "Note": Note note = new Note(); note.NoteText = documentItemNode.SelectSingleNode("NoteText").InnerText; note.EditorsNotes = documentItemNode.SelectSingleNode("EditorsNotes").InnerText; note.Private = bool.Parse(documentItemNode.SelectSingleNode("Private").InnerText); meta.Payload = note; break; case "Document": Document doc = new Document(); doc.Description = documentItemNode.SelectSingleNode("Description").InnerText; doc.Location = documentItemNode.SelectSingleNode("Location").InnerText; meta.Payload = doc; break; default: // this isn't payload type we are interested in loading, just skip it continue; } // recursively process any child nodes meta.Children = ParseDocumentItems(documentItemNode.SelectSingleNode("Children")); metaCollection.Add(meta); } return metaCollection; }