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(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 RefreshMetaColumnSpecs(IMetadataSettingsPartialView sourceView, object actionContext) { ObfuscationConfiguration obfuscationConfiguration; IEnumerable <Message> messages; bool?result; bool succeeded; IEnumerable <IMetaColumn> metaColumns; if ((object)sourceView == null) { throw new ArgumentNullException("sourceView"); } if ((object)sourceView != (object)this.View.ObfuscationPartialView.MetadataSettingsPartialView) { throw new ArgumentOutOfRangeException("sourceView"); } obfuscationConfiguration = new ObfuscationConfiguration() { ConfigurationVersion = ObfuscationConfiguration.CurrentConfigurationVersion, EngineVersion = ObfuscationConfiguration.CurrentEngineVersion }; this.ApplyViewToDocument(obfuscationConfiguration); messages = obfuscationConfiguration.Validate(); if ((object)messages != null && messages.Any()) { result = this.View.ShowMessages(messages, "Configuration validation on refresh delimited text field spec", true); if (!(result ?? false)) { return; } } using (IToolHost toolHost = new ToolHost()) succeeded = toolHost.TryGetUpstreamMetadata(obfuscationConfiguration, out metaColumns); if (succeeded && (object)metaColumns != null) { this.View.ObfuscationPartialView.MetadataSettingsPartialView.ClearMetaColumnSpecViews(); foreach (IMetaColumn metaColumn in metaColumns) { var headerSpec = (HeaderSpec)metaColumn.TagContext; this.View.ObfuscationPartialView.MetadataSettingsPartialView.AddMetaColumnSpecView(metaColumn.ColumnName, string.Empty); } } }
public void ExecuteObfuscation(IPartialView sourceView, object actionContext) { ObfuscationConfiguration obfuscationConfiguration; IEnumerable <Message> messages; this.View.ExecutionPartialView.RecordCount = null; this.View.ExecutionPartialView.IsComplete = null; this.View.ExecutionPartialView.DurationSeconds = null; obfuscationConfiguration = new ObfuscationConfiguration() { ConfigurationVersion = ObfuscationConfiguration.CurrentConfigurationVersion, EngineVersion = ObfuscationConfiguration.CurrentEngineVersion }; this.ApplyViewToDocument(obfuscationConfiguration); messages = obfuscationConfiguration.Validate(); if ((object)messages != null && messages.Any()) { this.View.ExecutionPartialView.IsComplete = true; this.View.ShowMessages(messages, "Configuration validation on execution", false); return; } using (IToolHost toolHost = new ToolHost()) { toolHost.Host(obfuscationConfiguration, (count, complete, duration) => { this.View.ExecutionPartialView.RecordCount = count; this.View.ExecutionPartialView.IsComplete = complete; this.View.ExecutionPartialView.DurationSeconds = duration; }); } this.View.ShowAlert("Done."); }
public bool SaveDocument(bool asCopy) { ObfuscationConfiguration obfuscationConfiguration; IEnumerable <Message> messages; string filePath; bool? result; this.View.StatusText = "Document validation started..."; obfuscationConfiguration = new ObfuscationConfiguration() { ConfigurationVersion = ObfuscationConfiguration.CurrentConfigurationVersion, EngineVersion = ObfuscationConfiguration.CurrentEngineVersion }; this.ApplyViewToDocument(obfuscationConfiguration); messages = obfuscationConfiguration.Validate(); if ( /*!DataTypeFascade.Instance.IsNullOrWhiteSpace(this.View.ObfuscationPartialView.FilePath) &&*/ messages.Any()) { result = this.View.ShowMessages(messages, "Obfuscation configuration save validation failed.", true); if (!(result ?? false)) { this.View.StatusText = "Document save canceled."; //this.View.CloseView(null); return(false); } } this.View.StatusText = "Document validation completed successfully."; this.View.StatusText = "Document save started..."; if (asCopy && !DataTypeFascade.Instance.IsNullOrWhiteSpace(this.View.FilePath)) { if (!this.View.ShowConfirm("Do you want to save a copy of the current document?", Severity.Information)) { this.View.StatusText = "Document save canceled."; return(false); } } if (asCopy) { // get new file path if (!this.View.TryGetSaveFilePath(out filePath)) { this.View.StatusText = "Document save canceled."; return(false); } this.View.FilePath = filePath; } else { if (DataTypeFascade.Instance.IsNullOrWhiteSpace(this.View.FilePath)) { if (!this.View.TryGetSaveFilePath(out filePath)) { this.View.StatusText = "Document save canceled."; return(false); } this.View.FilePath = filePath; } } result = this.View.ShowAsync <bool>("Saving document...", this.ThreadSafeSaveCurrentDocument, obfuscationConfiguration); if (!(bool)result) { this.View.StatusText = "Document save canceled."; return(false); } this.View.ViewText = string.Format("{0}", this.View.FilePath.SafeToString(null, "<new>")); this.View.StatusText = "Document save completed successfully."; return(true); }