DeclarativeConditionsCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Rules / DeclarativeConditionsCollection.cs / 1305376 / DeclarativeConditionsCollection.cs

                            // ---------------------------------------------------------------------------- 
// Copyright (C) 2005 Microsoft Corporation - All Rights Reserved
// ---------------------------------------------------------------------------

using System; 
using System.Diagnostics;
using System.CodeDom; 
using System.Collections.ObjectModel; 
using System.ComponentModel.Design.Serialization;
using System.Collections.Generic; 
using System.Workflow.ComponentModel;
using System.Globalization;
using System.IO;
using System.Workflow.ComponentModel.Serialization; 

namespace System.Workflow.Activities.Rules 
{ 
 	#region RuleConditionCollection Class
	[Serializable] 
    public sealed class RuleConditionCollection : KeyedCollection, IWorkflowChangeDiff
    {
        private bool _runtimeInitialized;
        [NonSerialized] 
        private object _runtimeInitializationLock = new object();
 
		public RuleConditionCollection() 
		{
 		} 

		protected override string GetKeyForItem(RuleCondition item)
 		{
 			return item.Name; 
		}
 
 		///  
		/// Mark the DeclarativeConditionDefinitionCollection as Runtime Initialized to prevent direct runtime updates.
		///  
		internal void OnRuntimeInitialized()
 		{
			lock (_runtimeInitializationLock)
 			{ 
 				if (_runtimeInitialized)
					return; 
 
 				foreach (RuleCondition condition in this)
				{ 
					condition.OnRuntimeInitialized();
				}
 				_runtimeInitialized = true;
			} 
 		}
 
 		protected override void InsertItem(int index, RuleCondition item) 
		{
 			if (this._runtimeInitialized) 
				throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));

			if (item.Name != null && item.Name.Length >= 0 && this.Contains(item.Name))
			{ 
 				string message = string.Format(CultureInfo.CurrentCulture, Messages.ConditionExists, item.Name);
				throw new ArgumentException(message); 
 			} 

 			base.InsertItem(index, item); 
		}

 		protected override void RemoveItem(int index)
		{ 
			if (this._runtimeInitialized)
				throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime)); 
 
 			base.RemoveItem(index);
		} 

 		protected override void SetItem(int index, RuleCondition item)
 		{
			if (this._runtimeInitialized) 
 				throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));
 
			base.SetItem(index, item); 
		}
 
		internal bool RuntimeMode
 		{
			set { this._runtimeInitialized = value; }
            get { return this._runtimeInitialized; } 
 		}
 
 		new public void Add(RuleCondition item) 
		{
 			if (this._runtimeInitialized) 
				throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));

			if (null == item)
			{ 
 				throw new ArgumentNullException("item");
			} 
 
 			if (null == item.Name)
 			{ 
				string message = string.Format(CultureInfo.CurrentCulture, Messages.InvalidConditionName, "item.Name");
 				throw new ArgumentException(message);
			}
 
			base.Add(item);
		} 
 
 		public IList Diff(object originalDefinition, object changedDefinition)
		{ 
 			List listChanges = new List();

 			RuleConditionCollection originalConditions = (RuleConditionCollection)originalDefinition;
			RuleConditionCollection changedConditions = (RuleConditionCollection)changedDefinition; 

 			if (null != changedConditions) 
			{ 
				foreach (RuleCondition cCondition in changedConditions)
				{ 
 					if (null != originalConditions)
					{
 						if (originalConditions.Contains(cCondition.Name))
 						{ 
							RuleCondition oCondition = originalConditions[cCondition.Name];
 							if (!oCondition.Equals(cCondition)) 
							{ 
								listChanges.Add(new UpdatedConditionAction(oCondition, cCondition));
							} 
 						}
						else
 						{
 							listChanges.Add(new AddedConditionAction(cCondition)); 
						}
 					} 
					else 
					{
						listChanges.Add(new AddedConditionAction(cCondition)); 
 					}
				}
 			}
 
 			if (null != originalConditions)
			{ 
 				foreach (RuleCondition oCondition in originalConditions) 
				{
					if (null != changedConditions) 
					{
 						if (!changedConditions.Contains(oCondition.Name))
						{
 							listChanges.Add(new RemovedConditionAction(oCondition)); 
 						}
					} 
 					else 
					{
						listChanges.Add(new RemovedConditionAction(oCondition)); 
					}
 				}
			}
 			return listChanges; 
 		}
	} 
 	#endregion 
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
// ---------------------------------------------------------------------------- 
// Copyright (C) 2005 Microsoft Corporation - All Rights Reserved
// ---------------------------------------------------------------------------

using System; 
using System.Diagnostics;
using System.CodeDom; 
using System.Collections.ObjectModel; 
using System.ComponentModel.Design.Serialization;
using System.Collections.Generic; 
using System.Workflow.ComponentModel;
using System.Globalization;
using System.IO;
using System.Workflow.ComponentModel.Serialization; 

namespace System.Workflow.Activities.Rules 
{ 
 	#region RuleConditionCollection Class
	[Serializable] 
    public sealed class RuleConditionCollection : KeyedCollection, IWorkflowChangeDiff
    {
        private bool _runtimeInitialized;
        [NonSerialized] 
        private object _runtimeInitializationLock = new object();
 
		public RuleConditionCollection() 
		{
 		} 

		protected override string GetKeyForItem(RuleCondition item)
 		{
 			return item.Name; 
		}
 
 		///  
		/// Mark the DeclarativeConditionDefinitionCollection as Runtime Initialized to prevent direct runtime updates.
		///  
		internal void OnRuntimeInitialized()
 		{
			lock (_runtimeInitializationLock)
 			{ 
 				if (_runtimeInitialized)
					return; 
 
 				foreach (RuleCondition condition in this)
				{ 
					condition.OnRuntimeInitialized();
				}
 				_runtimeInitialized = true;
			} 
 		}
 
 		protected override void InsertItem(int index, RuleCondition item) 
		{
 			if (this._runtimeInitialized) 
				throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));

			if (item.Name != null && item.Name.Length >= 0 && this.Contains(item.Name))
			{ 
 				string message = string.Format(CultureInfo.CurrentCulture, Messages.ConditionExists, item.Name);
				throw new ArgumentException(message); 
 			} 

 			base.InsertItem(index, item); 
		}

 		protected override void RemoveItem(int index)
		{ 
			if (this._runtimeInitialized)
				throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime)); 
 
 			base.RemoveItem(index);
		} 

 		protected override void SetItem(int index, RuleCondition item)
 		{
			if (this._runtimeInitialized) 
 				throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));
 
			base.SetItem(index, item); 
		}
 
		internal bool RuntimeMode
 		{
			set { this._runtimeInitialized = value; }
            get { return this._runtimeInitialized; } 
 		}
 
 		new public void Add(RuleCondition item) 
		{
 			if (this._runtimeInitialized) 
				throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));

			if (null == item)
			{ 
 				throw new ArgumentNullException("item");
			} 
 
 			if (null == item.Name)
 			{ 
				string message = string.Format(CultureInfo.CurrentCulture, Messages.InvalidConditionName, "item.Name");
 				throw new ArgumentException(message);
			}
 
			base.Add(item);
		} 
 
 		public IList Diff(object originalDefinition, object changedDefinition)
		{ 
 			List listChanges = new List();

 			RuleConditionCollection originalConditions = (RuleConditionCollection)originalDefinition;
			RuleConditionCollection changedConditions = (RuleConditionCollection)changedDefinition; 

 			if (null != changedConditions) 
			{ 
				foreach (RuleCondition cCondition in changedConditions)
				{ 
 					if (null != originalConditions)
					{
 						if (originalConditions.Contains(cCondition.Name))
 						{ 
							RuleCondition oCondition = originalConditions[cCondition.Name];
 							if (!oCondition.Equals(cCondition)) 
							{ 
								listChanges.Add(new UpdatedConditionAction(oCondition, cCondition));
							} 
 						}
						else
 						{
 							listChanges.Add(new AddedConditionAction(cCondition)); 
						}
 					} 
					else 
					{
						listChanges.Add(new AddedConditionAction(cCondition)); 
 					}
				}
 			}
 
 			if (null != originalConditions)
			{ 
 				foreach (RuleCondition oCondition in originalConditions) 
				{
					if (null != changedConditions) 
					{
 						if (!changedConditions.Contains(oCondition.Name))
						{
 							listChanges.Add(new RemovedConditionAction(oCondition)); 
 						}
					} 
 					else 
					{
						listChanges.Add(new RemovedConditionAction(oCondition)); 
					}
 				}
			}
 			return listChanges; 
 		}
	} 
 	#endregion 
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK