Esempio n. 1
0
        /// <summary>
        /// Writes child item XML to the provided writer.
        /// </summary>
        /// <param name="folderItem">Parent item.</param>
        /// <param name="xmlWriter">XmlTextWriter to output to.</param>
        private void WriteChildItems(QSetFolderItem folderItem, XmlTextWriter xmlWriter)
        {
            //write all folders
            foreach (QSetItemBase childItem in folderItem.ChildItems)
            {
                if (childItem.GetType() == typeof(QSetFolderItem))
                {
                    QSetFolderItem childFolderItem = (QSetFolderItem)childItem;
                    xmlWriter.WriteStartElement(QSetFolderItem.TypeName);
                    xmlWriter.WriteAttributeString(QSetXmlFileFormat.ItemAttributes.Name, childFolderItem.Name);
                    xmlWriter.WriteAttributeString(QSetXmlFileFormat.ItemAttributes.Guid, childFolderItem.ID.ToString());
                    WriteChildItems(childFolderItem, xmlWriter);
                    xmlWriter.WriteEndElement();
                }
            }

            //write all machines
            foreach (QSetItemBase childItem in folderItem.ChildItems)
            {
                if (childItem.GetType() == typeof(QSetMachineItem))
                {
                    QSetMachineItem childMachineItem = (QSetMachineItem)childItem;
                    xmlWriter.WriteStartElement(QSetMachineItem.TypeName);
                    xmlWriter.WriteAttributeString(QSetXmlFileFormat.ItemAttributes.Name, childMachineItem.Name);
                    xmlWriter.WriteAttributeString(QSetXmlFileFormat.ItemAttributes.Guid, childMachineItem.ID.ToString());
                    WriteChildItems(childMachineItem, xmlWriter);
                    xmlWriter.WriteEndElement();
                }
            }

            //write all queues
            foreach (QSetItemBase childItem in folderItem.ChildItems)
            {
                QSetQueueItem childQueueItem = childItem as QSetQueueItem;
                if (childQueueItem != null)
                {
                    xmlWriter.WriteStartElement(QSetQueueItem.TypeName);
                    xmlWriter.WriteAttributeString(QSetXmlFileFormat.ItemAttributes.Name, childQueueItem.Name);
                    xmlWriter.WriteAttributeString(QSetXmlFileFormat.ItemAttributes.Guid, childQueueItem.ID.ToString());
                    if (childQueueItem.MessageViewerXslt != null && childQueueItem.MessageViewerXslt.Trim().Length > 0)
                    {
                        xmlWriter.WriteAttributeString(QSetXmlFileFormat.QueueElement.Attributes.MessageViewerXslt, childQueueItem.MessageViewerXslt.Trim());
                    }
                    xmlWriter.WriteEndElement();
                }
            }

            //write all web services
            foreach (QSetItemBase childItem in folderItem.ChildItems)
            {
                QSetWebServiceItem childWebServiceItem = childItem as QSetWebServiceItem;
                if (childWebServiceItem != null)
                {
                    xmlWriter.WriteStartElement(QSetWebServiceItem.TypeName);
                    xmlWriter.WriteAttributeString(QSetXmlFileFormat.ItemAttributes.Name, childWebServiceItem.Name);
                    xmlWriter.WriteAttributeString(QSetXmlFileFormat.ItemAttributes.Guid, childWebServiceItem.ID.ToString());
                    xmlWriter.WriteEndElement();
                }
            }
        }
Esempio n. 2
0
		/// <summary>
		/// Recursively creates all of the child items of a Q Set item.
		/// </summary>
		/// <param name="parentItem">Parent item.</param>
		/// <param name="parentNodeIterator">XPathNodeIterator positioned at the parent item. </param>
		private static void CreateChildItems(QSetFolderItem parentItem, XPathNodeIterator parentNodeIterator)
		{			
			//iterate through all child items
			XPathNodeIterator childNodeIterator = parentNodeIterator.Current.Select("*");
			while (childNodeIterator.MoveNext())
			{
				//get the item details	
				string itemName = childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.ItemAttributes.Name, "");	
				Guid itemGuid = Guid.Empty;
				if (childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.ItemAttributes.Guid, "") != string.Empty)
					itemGuid = new Guid(childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.ItemAttributes.Guid, ""));
				
				//create a new item of the required type, specifying the guid if available				
				QSetItemBase newItem = null;
				if (childNodeIterator.Current.Name == QSetFolderItem.TypeName)
				{
					//create folder
					if (itemGuid == Guid.Empty)
						newItem = new QSetFolderItem(itemName);
					else
						newItem = new QSetFolderItem(itemGuid, itemName);						
				}
				else if (childNodeIterator.Current.Name == QSetMachineItem.TypeName)
				{
					//create machine
					if (itemGuid == Guid.Empty)
						newItem = new QSetMachineItem(itemName);
					else
						newItem = new QSetMachineItem(itemGuid, itemName);
				}
				else if (childNodeIterator.Current.Name == QSetQueueItem.TypeName)
				{
					//create queue
					if (itemGuid == Guid.Empty)
						newItem = new QSetQueueItem(itemName);
					else
						newItem = new QSetQueueItem(itemGuid, itemName);
					if (childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.QueueElement.Attributes.MessageViewerXslt, "") != string.Empty)
						((QSetQueueItem)newItem).MessageViewerXslt = childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.QueueElement.Attributes.MessageViewerXslt, "");
				}
				else if (childNodeIterator.Current.Name == QSetWebServiceItem.TypeName)
				{
					//web service item
					if (itemGuid == Guid.Empty)
						newItem = new QSetWebServiceItem(itemName);
					else
						newItem = new QSetWebServiceItem(itemGuid, itemName);
				}
			
				//apply finaly settings and actions to new item
				if (newItem != null)
				{
					//finish type specific setup
					if (newItem is QSetFolderItem)
					{
						//create child items
						CreateChildItems((QSetFolderItem)newItem, childNodeIterator);
					}

					//final setup common to all item types
					parentItem.ChildItems.Add(newItem);
					newItem.IsDirty = false;			
				}		
			}
		}
Esempio n. 3
0
		/// <summary>
		/// Opens a machine and all of its queues, adding to the active Q Set if possible.
		/// </summary>
		/// <param name="machineName">Name of machine.</param>
		/// <param name="messageQueues">Array of message queues belonging to the machine.</param>
		public void OpenMachine(string machineName, MessageQueue[] messageQueues)
		{
			if (_primaryControls.QSetExplorer.QSet != null)
			{
				//ensure we have a folder item to add to
				if (_primaryControls.QSetExplorer.ActiveItem == null)
					_primaryControls.QSetExplorer.ActiveItem = _primaryControls.QSetExplorer.QSet;
				if (!(_primaryControls.QSetExplorer.ActiveItem is QSetFolderItem))
					_primaryControls.QSetExplorer.ActiveItem = _primaryControls.QSetExplorer.ActiveItem.ParentItem;
	
				//check the item does not already exist
				QSetFolderItem parentItem = (QSetFolderItem)_primaryControls.QSetExplorer.ActiveItem;
				if (!parentItem.ChildItems.Exists(machineName))
				{
					QSetMachineItem newMachineItem = new QSetMachineItem(machineName);
					foreach (MessageQueue queue in messageQueues)
						newMachineItem.ChildItems.Add(new QSetQueueItem(string.Format(@"{0}\{1}", queue.MachineName, queue.QueueName))); //reformat as private queues can come out with extra data in name)					
					parentItem.ChildItems.Add(newMachineItem);					
				}
				else
					MessageBox.Show(Locale.UserMessages.CannotAddItemAsAlreadyExists, Locale.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Information);
			}
			else			
				foreach (MessageQueue queue in messageQueues)
					OpenQueue(new QSetQueueItem(string.Format(@"{0}\{1}", queue.MachineName, queue.QueueName))); //reformat as private queues can come out with extra data in name)
		}
Esempio n. 4
0
        /// <summary>
        /// Recursively creates all of the child items of a Q Set item.
        /// </summary>
        /// <param name="parentItem">Parent item.</param>
        /// <param name="parentNodeIterator">XPathNodeIterator positioned at the parent item. </param>
        private static void CreateChildItems(QSetFolderItem parentItem, XPathNodeIterator parentNodeIterator)
        {
            //iterate through all child items
            XPathNodeIterator childNodeIterator = parentNodeIterator.Current.Select("*");

            while (childNodeIterator.MoveNext())
            {
                //get the item details
                string itemName = childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.ItemAttributes.Name, "");
                Guid   itemGuid = Guid.Empty;
                if (childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.ItemAttributes.Guid, "") != string.Empty)
                {
                    itemGuid = new Guid(childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.ItemAttributes.Guid, ""));
                }

                //create a new item of the required type, specifying the guid if available
                QSetItemBase newItem = null;
                if (childNodeIterator.Current.Name == QSetFolderItem.TypeName)
                {
                    //create folder
                    if (itemGuid == Guid.Empty)
                    {
                        newItem = new QSetFolderItem(itemName);
                    }
                    else
                    {
                        newItem = new QSetFolderItem(itemGuid, itemName);
                    }
                }
                else if (childNodeIterator.Current.Name == QSetMachineItem.TypeName)
                {
                    //create machine
                    if (itemGuid == Guid.Empty)
                    {
                        newItem = new QSetMachineItem(itemName);
                    }
                    else
                    {
                        newItem = new QSetMachineItem(itemGuid, itemName);
                    }
                }
                else if (childNodeIterator.Current.Name == QSetQueueItem.TypeName)
                {
                    //create queue
                    if (itemGuid == Guid.Empty)
                    {
                        newItem = new QSetQueueItem(itemName);
                    }
                    else
                    {
                        newItem = new QSetQueueItem(itemGuid, itemName);
                    }
                    if (childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.QueueElement.Attributes.MessageViewerXslt, "") != string.Empty)
                    {
                        ((QSetQueueItem)newItem).MessageViewerXslt = childNodeIterator.Current.GetAttribute(QSetXmlFileFormat.QueueElement.Attributes.MessageViewerXslt, "");
                    }
                }
                else if (childNodeIterator.Current.Name == QSetWebServiceItem.TypeName)
                {
                    //web service item
                    if (itemGuid == Guid.Empty)
                    {
                        newItem = new QSetWebServiceItem(itemName);
                    }
                    else
                    {
                        newItem = new QSetWebServiceItem(itemGuid, itemName);
                    }
                }

                //apply finaly settings and actions to new item
                if (newItem != null)
                {
                    //finish type specific setup
                    if (newItem is QSetFolderItem)
                    {
                        //create child items
                        CreateChildItems((QSetFolderItem)newItem, childNodeIterator);
                    }

                    //final setup common to all item types
                    parentItem.ChildItems.Add(newItem);
                    newItem.IsDirty = false;
                }
            }
        }