Exemple #1
0
		public static bool GetReverseMeaning(WorkshareUpgradeConfigurationOptionsOption option)
		{
			if (option == null ||
				string.IsNullOrEmpty(option.DataType) ||
				string.IsNullOrEmpty(option.ReverseMeaning))
			{
				return false;
			}

			if (string.Compare(option.DataType.ToLower(), "boolean") == 0 &&
				Convert.ToBoolean(option.ReverseMeaning.ToLower()))
			{
				return true;
			}

			return false;
		}
		private OptionMapOption GetWorkshare7Option(WorkshareUpgradeConfigurationOptionsOption option)
		{
			try
			{
				if (option == null ||
					string.IsNullOrEmpty(option.Name))
				{
					return null;
				}

				string key = option.Name.ToLower();
				if (m_workshare7Options.ContainsKey(key))
				{
					return m_workshare7Options[option.Name.ToLower()];
				}
			}
			catch (Exception ex)
			{
				Logger.LogError(ex);
			}
			return null;
		}
		private void UpgradeOption(WorkshareUpgradeConfigurationOptionsOption upgradeConfigurationOption)
		{
			try
			{
				if (upgradeConfigurationOption == null ||
					string.IsNullOrEmpty(upgradeConfigurationOption.Name))
				{
					return;
				}
		
				Logger.LogInfo(
					string.Format("Upgrade Option [{0}]", upgradeConfigurationOption.Name));

				OptionMapOption workshare7Option = GetWorkshare7Option(upgradeConfigurationOption);
				Option workshare5Option = GetWorkshare5Option(upgradeConfigurationOption);
				if (workshare7Option == null ||workshare5Option == null)
				{
					Logger.LogError(
					                string.Format("Failed to retrieve the assosiated options for [{0}]",
					                              upgradeConfigurationOption.Name));
					return;
				}

				if (StaticShared.IsReadOnly(workshare7Option))
				{
					Logger.LogInfo(
					               string.Format("Migration not required: The option is read only. Option [{0}] [{1}]",
					                             workshare7Option.ID, workshare5Option.Name));
					return;
				}				

				if (StaticShared.CompareAsType(workshare5Option.Type, workshare5Option.DefaultValue, workshare5Option.Value))
				{
					Logger.LogInfo(
					               string.Format("Migration not required: The option value match the default. Option [{0}] [{1}]",
					                             workshare7Option.ID, workshare5Option.Name));
					return;
				}

				string workshare5Value = StaticShared.ConvertValue(workshare5Option.Value, upgradeConfigurationOption.DataType,
				                                                   upgradeConfigurationOption.Range,
				                                                   StaticShared.GetReverseMeaning(upgradeConfigurationOption));

				if (StaticShared.CompareAsType(workshare7Option.DataType, workshare7Option.Value, workshare5Value))
				{
					Logger.LogInfo(
					               string.Format(
					               	"Migration not required: The old value match the new default value. Option [{0}] [{1}]",
					               	workshare7Option.ID, workshare5Option.Name));
					return;
				}

				if (m_context == ContextEnum.Public)
				{
					SetPublicOption(workshare7Option.ID, workshare7Option.DataType, workshare5Value);
				}
				
				if(m_context == ContextEnum.User)
				{
					SetUserOption(workshare7Option.ID, workshare7Option.DataType, workshare5Value);
				}
			}
			catch (Exception ex)
			{
				Logger.LogError(ex, string.Format("Failed to Upgrade Option [{0}]", upgradeConfigurationOption.Name));
			}
		}
		private Option GetWorkshare5Option(WorkshareUpgradeConfigurationOptionsOption option)
		{
			try
			{
				if (option.FileOption != null && option.FileOption.Length == 1)
				{
					string key = option.FileOption[0].GUID.ToLower();
					if (m_workshare5Options.ContainsKey(key))
					{
						return m_workshare5Options[key];
					}
				}

				if (option.RegistryOption != null && option.RegistryOption.Length > 0)
				{
					string key = StaticShared.CreateSearchKey(option.RegistryOption[0].RegistryKey,
					                                          option.RegistryOption[0].RegistryValue);
					if (m_workshare5Options.ContainsKey(key))
					{
						return m_workshare5Options[key];
					}

					if (option.RegistryOption.Length == 2)
					{
						key = StaticShared.CreateSearchKey(option.RegistryOption[1].RegistryKey, option.RegistryOption[1].RegistryValue);
						if (m_workshare5Options.ContainsKey(key))
						{
							return m_workshare5Options[key];
						}
					}
				}
			}
			catch (Exception ex)
			{
				Logger.LogError(ex);
			}
			return null;
		}
		public void TestGetReverseMeanig()
		{
			WorkshareUpgradeConfigurationOptionsOption option = new WorkshareUpgradeConfigurationOptionsOption();
			option.DataType = "Boolean";
			option.ReverseMeaning = "True";

			Assert.IsTrue(StaticShared.GetReverseMeaning(option));

			option.DataType = "String";
			Assert.IsFalse(StaticShared.GetReverseMeaning(option));

			option.DataType = "Boolean";
			option.ReverseMeaning = "False";
			Assert.IsFalse(StaticShared.GetReverseMeaning(option));
		}