private void WriteXmlFromMetaData(XmlTextWriter writer, MetaDataData[] meta_array) { foreach (MetaDataData meta in meta_array) { // start writing metadata writer.WriteStartElement(meta.Payload.GetType().Name); // write ID writer.WriteStartElement("ID"); writer.WriteValue(meta.ID); writer.WriteEndElement(); // write UID writer.WriteStartElement("UID"); writer.WriteValue(meta.UID); writer.WriteEndElement(); if (meta.TimeStamp >= 0) { // write timestamp writer.WriteStartElement("TimeStamp"); writer.WriteValue(meta.TimeStamp); writer.WriteEndElement(); } // Write name writer.WriteStartElement("Name"); writer.WriteString(meta.Name); writer.WriteEndElement(); // write foreignid writer.WriteStartElement("ForeignID"); writer.WriteValue(meta.ForeignID); writer.WriteEndElement(); // write any object-specific data ReflectionWriter(writer, meta.Payload); // write metadata children writer.WriteStartElement("Children"); WriteXmlFromMetaData(writer, meta.Children); writer.WriteEndElement(); // finish writing metadata writer.WriteEndElement(); } }
// Recursive function for populating agenda tree. private void createTreeView(MetaDataData[] meta_array, TreeViewItem treeItem) { //System.Windows.MessageBox.Show("hi"); foreach (MetaDataData meta in meta_array) { TreeViewItem newChild = new TreeViewItem(); newChild.Header = meta.Name.Remove(0,3); treeItem.Items.Add(newChild); //System.Windows.MessageBox.Show(meta.Name); createTreeView(meta.Children,newChild); } }
public KeyMapping[] AddEventMetaData(int EventID, MetaDataData MetaDataData) { object[] results = this.Invoke("AddEventMetaData", new object[] { EventID, MetaDataData}); return ((KeyMapping[])(results[0])); }
/// <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 array of metadata to be converted to tree form.</param> /// public void ConvertToMetaTree(ref MetaDataData[] MetaData) { ArrayList al = new ArrayList(m_BuildMetaBranch(MetaData, 0)); MetaData = (MetaDataData[])al.ToArray(typeof(MetaDataData)); }
/// <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(MetaDataData[] 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; }
public void UpdateMetaData(MetaDataData MetaData) { this.Invoke("UpdateMetaData", new object[] { MetaData}); }
public KeyMapping[] AddClipMetaData(int ClipID, MetaDataData MetaDataData) { object[] results = this.Invoke("AddClipMetaData", new object[] { ClipID, MetaDataData}); return ((KeyMapping[])(results[0])); }
public KeyMapping[] ImportEventMetaData(int EventID, MetaDataData[] MetaData, bool ClearExisting, bool AsTree) { object[] results = this.Invoke("ImportEventMetaData", new object[] { EventID, MetaData, ClearExisting, AsTree}); return ((KeyMapping[])(results[0])); }
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; }