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; }
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; }