public void Host(ObfuscationConfiguration obfuscationConfiguration, Action <long, bool, double> statusCallback) { IEnumerable <IDictionary <string, object> > sourceDataEnumerable; IEnumerable <Message> messages; if ((object)obfuscationConfiguration == null) { throw new ArgumentNullException("obfuscationConfiguration"); } messages = obfuscationConfiguration.Validate(); if (messages.Any()) { throw new ApplicationException(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(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.Initialize(obfuscationConfiguration.DestinationAdapterConfiguration); destinationAdapter.UpstreamMetadata = sourceAdapter.UpstreamMetadata; sourceDataEnumerable = sourceAdapter.PullData(obfuscationConfiguration.TableConfiguration); sourceDataEnumerable = oxymoronEngine.GetObfuscatedValues(sourceDataEnumerable); if ((object)statusCallback != null) { sourceDataEnumerable = WrapRecordCounter(sourceDataEnumerable, statusCallback); } destinationAdapter.PushData(obfuscationConfiguration.TableConfiguration, sourceDataEnumerable); } } } } }
public void Host(string sourceFilePath) { ObfuscationConfiguration obfuscationConfiguration; sourceFilePath = Path.GetFullPath(sourceFilePath); obfuscationConfiguration = OxymoronEngine.FromJsonFile <ObfuscationConfiguration>(sourceFilePath); this.Host(obfuscationConfiguration, (x, y, z) => Console.WriteLine("{0} {1} {2}", x, y, z)); }
public void Host(ObfuscationConfiguration obfuscationConfiguration, Action<long, bool, double> statusCallback) { IEnumerable<IDictionary<string, object>> sourceDataEnumerable; IEnumerable<Message> messages; if ((object)obfuscationConfiguration == null) throw new ArgumentNullException("obfuscationConfiguration"); messages = obfuscationConfiguration.Validate(); if (messages.Any()) throw new ApplicationException(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(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.Initialize(obfuscationConfiguration.DestinationAdapterConfiguration); destinationAdapter.UpstreamMetadata = sourceAdapter.UpstreamMetadata; sourceDataEnumerable = sourceAdapter.PullData(obfuscationConfiguration.TableConfiguration); sourceDataEnumerable = oxymoronEngine.GetObfuscatedValues(sourceDataEnumerable); if ((object)statusCallback != null) sourceDataEnumerable = WrapRecordCounter(sourceDataEnumerable, statusCallback); destinationAdapter.PushData(obfuscationConfiguration.TableConfiguration, sourceDataEnumerable); } } } } }
private bool ThreadSafeSaveCurrentDocument(object parameter) { string documentFilePath; ObfuscationConfiguration obfuscationConfiguration; if ((object)parameter == null) { throw new ArgumentNullException("parameter"); } obfuscationConfiguration = (ObfuscationConfiguration)parameter; documentFilePath = this.View.FilePath; if (!DataTypeFascade.Instance.IsNullOrWhiteSpace(documentFilePath)) { documentFilePath = Path.GetFullPath(documentFilePath); OxymoronEngine.ToJsonFile <ObfuscationConfiguration>(obfuscationConfiguration, documentFilePath); return(true); } return(false); }
private ObfuscationConfiguration ThreadSafeLoadCurrentDocument(object parameter) { string documentFilePath; ObfuscationConfiguration obfuscationConfiguration; documentFilePath = this.View.FilePath; if (!DataTypeFascade.Instance.IsNullOrWhiteSpace(documentFilePath)) { documentFilePath = Path.GetFullPath(documentFilePath); obfuscationConfiguration = OxymoronEngine.FromJsonFile <ObfuscationConfiguration>(documentFilePath); } else { // just create new obfuscationConfiguration = new ObfuscationConfiguration() { ConfigurationVersion = ObfuscationConfiguration.CurrentConfigurationVersion, EngineVersion = ObfuscationConfiguration.CurrentEngineVersion }; } return(obfuscationConfiguration); }