Beispiel #1
0
		public void Host(ObfuscationConfiguration obfuscationConfiguration, Action<string, long, bool, double> statusCallback)
		{
			IEnumerable<IRecord> sourceDataEnumerable;
			IEnumerable<Message> messages;

			if ((object)obfuscationConfiguration == null)
				throw new ArgumentNullException(nameof(obfuscationConfiguration));

			messages = obfuscationConfiguration.Validate();

			if (messages.Any())
				throw new InvalidOperationException(string.Format("Obfuscation configuration validation failed:\r\n{0}", string.Join("\r\n", messages.Select(m => m.Description).ToArray())));

			using (IOxymoronEngine oxymoronEngine = new OxymoronEngine(this, obfuscationConfiguration))
			{
				using (DisposableList<IDictionaryAdapter> dictionaryAdapters = new DisposableList<IDictionaryAdapter>())
				{
					foreach (DictionaryConfiguration dictionaryConfiguration in obfuscationConfiguration.DictionaryConfigurations)
					{
						IDictionaryAdapter dictionaryAdapter;

						dictionaryAdapter = dictionaryConfiguration.DictionaryAdapterConfiguration.GetAdapterInstance<IDictionaryAdapter>();
						dictionaryAdapters.Add(dictionaryAdapter);
						dictionaryAdapter.Initialize(dictionaryConfiguration.DictionaryAdapterConfiguration);

						dictionaryAdapter.InitializePreloadCache((dictionaryDataEnumerable) => DictionaryWrapRecordCounter(dictionaryDataEnumerable, statusCallback), dictionaryConfiguration, oxymoronEngine.SubstitutionCacheRoot);

						this.DictionaryConfigurationToAdapterMappings.Add(dictionaryConfiguration, dictionaryAdapter);
					}

					using (ISourceAdapter sourceAdapter = obfuscationConfiguration.SourceAdapterConfiguration.GetAdapterInstance<ISourceAdapter>())
					{
						sourceAdapter.Initialize(obfuscationConfiguration.SourceAdapterConfiguration);

						using (IDestinationAdapter destinationAdapter = obfuscationConfiguration.DestinationAdapterConfiguration.GetAdapterInstance<IDestinationAdapter>())
						{
							destinationAdapter.UpstreamMetadata = sourceAdapter.UpstreamMetadata;
							destinationAdapter.Initialize(obfuscationConfiguration.DestinationAdapterConfiguration);

							sourceDataEnumerable = sourceAdapter.PullData(obfuscationConfiguration.TableConfiguration);
							sourceDataEnumerable = oxymoronEngine.GetObfuscatedValues(sourceDataEnumerable);

							if ((object)statusCallback != null)
								sourceDataEnumerable = SourceWrapRecordCounter(sourceDataEnumerable, statusCallback);

							destinationAdapter.PushData(obfuscationConfiguration.TableConfiguration, sourceDataEnumerable);
						}
					}
				}
			}
		}
		public ObfuscationConfiguration GetObfuscationConfiguration()
		{
			ObfuscationConfiguration obfuscationConfiguration;

			if (SolderLegacyInstanceAccessor.DataTypeFascadeLegacyInstance.IsNullOrWhiteSpace(this.ObfuscationConfigurationJsonText))
			{
				obfuscationConfiguration = new ObfuscationConfiguration()
											{
												ConfigurationVersion = ObfuscationConfiguration.CurrentConfigurationVersion,
												EngineVersion = ObfuscationConfiguration.CurrentEngineVersion
											};
			}
			else
				obfuscationConfiguration = JsonSerializationStrategy.Instance.GetObjectFromString<ObfuscationConfiguration>(this.ObfuscationConfigurationJsonText);

			if ((object)obfuscationConfiguration != null)
			{
				if ((object)obfuscationConfiguration.SourceAdapterConfiguration != null)
				{
					obfuscationConfiguration.SourceAdapterConfiguration.ResetAdapterSpecificConfiguration();
					obfuscationConfiguration.SourceAdapterConfiguration.AdapterAqtn = typeof(DtsSourceAdapter).AssemblyQualifiedName;
				}

				if ((object)obfuscationConfiguration.DestinationAdapterConfiguration != null)
				{
					obfuscationConfiguration.DestinationAdapterConfiguration.ResetAdapterSpecificConfiguration();
					obfuscationConfiguration.DestinationAdapterConfiguration.AdapterAqtn = typeof(DtsDestinationAdapter).AssemblyQualifiedName;
				}

				if ((object)obfuscationConfiguration.DictionaryConfigurations != null)
				{
					foreach (DictionaryConfiguration dictionaryConfiguration in obfuscationConfiguration.DictionaryConfigurations)
					{
						if ((object)dictionaryConfiguration.DictionaryAdapterConfiguration != null)
						{
							var items = dictionaryConfiguration.DictionaryAdapterConfiguration.AdapterSpecificConfiguration.Select(kvp => new { KEY = kvp.Key, VAL = kvp.Value }).ToArray();

							dictionaryConfiguration.DictionaryAdapterConfiguration.ResetAdapterSpecificConfiguration();
							dictionaryConfiguration.DictionaryAdapterConfiguration.AdapterAqtn = typeof(DtsDictionaryAdapter).AssemblyQualifiedName;

							foreach (var item in items)
								dictionaryConfiguration.DictionaryAdapterConfiguration.AdapterSpecificConfiguration.Add(item.KEY, item.VAL);

							dictionaryConfiguration.DictionaryAdapterConfiguration.AdapterSpecificConfiguration.Add("DictionaryUnitOfWorkCallback", this.DictionaryUnitOfWorkCallback);
						}
					}
				}
			}

			return obfuscationConfiguration;
		}
Beispiel #3
0
		public bool TryGetUpstreamMetadata(ObfuscationConfiguration obfuscationConfiguration, out IEnumerable<IColumn> columns)
		{
			if ((object)obfuscationConfiguration == null)
				throw new ArgumentNullException(nameof(obfuscationConfiguration));

			columns = null;

			if ((object)obfuscationConfiguration.SourceAdapterConfiguration != null &&
				(object)obfuscationConfiguration.SourceAdapterConfiguration.GetAdapterType() != null)
			{
				using (ISourceAdapter sourceAdapter = obfuscationConfiguration.SourceAdapterConfiguration.GetAdapterInstance<ISourceAdapter>())
				{
					sourceAdapter.Initialize(obfuscationConfiguration.SourceAdapterConfiguration);
					columns = sourceAdapter.UpstreamMetadata;
					return true;
				}
			}

			return false;
		}