public async Task OpenAsync(string path1, string path2, string filterExpression) { try { this.BeginProgress("loading data"); this.dataSet = await Task.Run(async() => { var filter = filterExpression == string.Empty ? null : filterExpression; var tasks = new Task <CremaDataSet>[] { Task.Run(() => CremaDataSet.ReadFromDirectory(path1, filter)), Task.Run(() => CremaDataSet.ReadFromDirectory(path2, filter)), }; Task.WaitAll(tasks); var dataSet1 = tasks[0].Result; var dataSet2 = tasks[1].Result; dataSet1.ExtendedProperties["location"] = Path.GetFileNameWithoutExtension(path1); dataSet2.ExtendedProperties["location"] = Path.GetFileNameWithoutExtension(path2); await this.Dispatcher.InvokeAsync(() => this.ProgressMessage = "comparing data"); return(this.Compare(dataSet1, dataSet2)); }); this.EndProgress(); this.OnLoaded(EventArgs.Empty); } catch (Exception e) { await AppMessageBox.ShowErrorAsync(e.Message); this.EndProgress(); return; } }
protected override void OnExecute(object parameter) { var tableDescriptor = parameter as ITableDescriptor; var table = tableDescriptor.Target; var tableName = tableDescriptor.TableInfo.Name; var dataBaseName = this.SelectDataBase(); if (dataBaseName == null) { return; } var dataSet1 = this.PreviewOtherTable(dataBaseName, tableName); if (dataSet1 != null) { var dataSet2 = table.Dispatcher.Invoke(() => table.GetDataSet(this.authenticator, -1)); var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = $"{dataBaseName}: {tableName}", Header2 = $"{this.cremaAppHost.DataBaseName}: {tableName}", }; var dialog = new DiffDataTableViewModel(dataSet.Tables.First()) { DisplayName = Resources.Title_CompareWithOtherDataBase, }; dialog.ShowDialog(); } else { AppMessageBox.Show(string.Format(Resources.Message_TableNotFound_Format, tableName)); } }
public void Add(DiffDataSet dataSet) { var browserItem = new BrowserViewModel(dataSet); browserItem.UpdateItemsSource(); this.ItemsSource.Add(browserItem); }
public BrowserViewModel(DiffDataSet dataSet) { this.dataSet = dataSet; this.CloseCommand = new DelegateCommand(async(p) => await this.CloseAsync(), (p) => this.CanClose); this.DisplayName = dataSet.Header1; this.Dispatcher.InvokeAsync(() => this.AttachPropertyService(this.propertyService)); }
public async void Close() { await this.CloseDocumentsAsync(true); this.dataSet = null; this.IsLoaded = false; this.OnUnloaded(EventArgs.Empty); }
public void Add(DiffDataSet dataSet) { var browserItem = new BrowserViewModel(dataSet); this.compositionService.SatisfyImportsOnce(browserItem); browserItem.UpdateItemsSource(); this.ItemsSource.Add(browserItem); //this.Browsers.ElementAtOrDefault() }
private DiffDataSet Compare(CremaDataSet dataSet1, CremaDataSet dataSet2) { var location1 = dataSet1.ExtendedProperties.Contains("location") ? $"{dataSet1.ExtendedProperties["location"]}" : "Before"; var location2 = dataSet2.ExtendedProperties.Contains("location") ? $"{dataSet2.ExtendedProperties["location"]}" : "Current"; var diffSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = location1, Header2 = location2, }; return(diffSet); }
private Task <DiffDataType> Initialize(IType type) { return(type.Dispatcher.InvokeAsync(() => { var logs = type.GetLog(this.authenticator); var hasRevision = logs.Length >= 2; var dataSet1 = hasRevision ? type.GetDataSet(this.authenticator, logs[1].Revision) : new CremaDataSet(); var dataSet2 = type.GetDataSet(this.authenticator, -1); var header1 = hasRevision ? $"[{logs[1].DateTime}] {logs[1].Revision}" : string.Empty; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = Resources.Text_Current, }; return dataSet.Types.First(); })); }
private async Task <DiffDataType> Initialize(IType type) { var logs = await type.GetLogAsync(this.authenticator, null); var hasRevision = logs.Length >= 2; var dataSet1 = hasRevision ? await type.GetDataSetAsync(this.authenticator, logs[1].Revision) : new CremaDataSet(); var dataSet2 = await type.GetDataSetAsync(this.authenticator, null); var header1 = hasRevision ? $"[{logs[1].DateTime}] {logs[1].Revision}" : string.Empty; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = Resources.Text_Current, }; return(dataSet.Types.First()); }
private Task <DiffDataType> Initialize(LogInfoViewModel viewModel, IType type) { return(type.Dispatcher.InvokeAsync(() => { var logs = type.GetLog(this.authenticator); var revision = logs.First().Revision; var dataSet1 = type.GetDataSet(this.authenticator, viewModel.Revision); var dataSet2 = type.GetDataSet(this.authenticator, revision); var header1 = $"{type.Name} - {viewModel.Revision}"; var header2 = $"{type.Name} - {revision}"; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return dataSet.Types.First(); })); }
private Task <DiffDataTable> Initialize(LogInfoViewModel viewModel, ITable table) { return(table.Dispatcher.InvokeAsync(() => { var logs = table.GetLog(this.authenticator); var prevLogs = logs.SkipWhile(item => item.Revision >= viewModel.Revision); var header1 = prevLogs.Any() ? $"[{prevLogs.First().DateTime}] {prevLogs.First().Revision}" : string.Empty; var header2 = $"[{viewModel.DateTime}] {viewModel.Revision}"; var dataSet1 = prevLogs.Any() ? table.GetDataSet(this.authenticator, prevLogs.First().Revision) : new CremaDataSet(); var dataSet2 = table.GetDataSet(this.authenticator, viewModel.Revision); var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return dataSet.Tables.First(); })); }
public async void Open(CremaDataSet dataSet1, CremaDataSet dataSet2) { try { this.BeginProgress(); var location1 = dataSet1.ExtendedProperties.Contains("location") ? $"{dataSet1.ExtendedProperties["location"]}" : "Before"; var location2 = dataSet2.ExtendedProperties.Contains("location") ? $"{dataSet2.ExtendedProperties["location"]}" : "Current"; this.dataSet = await Task.Run(() => this.Compare(dataSet1, dataSet2)); this.EndProgress(); this.OnLoaded(EventArgs.Empty); } catch (Exception e) { AppMessageBox.ShowError(e.Message); this.EndProgress(); return; } }
private Task <DiffDataTable> Initialize(LogInfoViewModel viewModel, ITable table) { return(table.Dispatcher.InvokeAsync(() => { var logs = table.GetLog(this.authenticator); var log = logs.First(); var dataSet1 = table.GetDataSet(this.authenticator, viewModel.Revision); var dataSet2 = table.GetDataSet(this.authenticator, log.Revision); var header1 = $"[{viewModel.DateTime}] {viewModel.Revision}"; var header2 = $"[{log.DateTime}] {log.Revision}"; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return dataSet.Tables.First(); })); }
private async Task <DiffDataType> Initialize(LogInfoViewModel viewModel, IType type) { var logs = await type.GetLogAsync(this.authenticator, null); var prevLog = this.GetPrevLog(logs, viewModel.Revision); var header1 = prevLog != null ? $"[{prevLog.Value.DateTime}] {prevLog.Value.Revision}" : string.Empty; var header2 = $"[{viewModel.DateTime}] {viewModel.Revision}"; var dataSet1 = prevLog != null ? await type.GetDataSetAsync(this.authenticator, prevLog.Value.Revision) : new CremaDataSet(); var dataSet2 = await type.GetDataSetAsync(this.authenticator, viewModel.Revision); var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return(dataSet.Types.First()); }
private async Task <DiffDataTable> Initialize(LogInfoViewModel viewModel, ITable table) { var logs = await table.GetLogAsync(this.authenticator, null); var log = logs.First(); var dataSet1 = await table.GetDataSetAsync(this.authenticator, viewModel.Revision); var dataSet2 = await table.GetDataSetAsync(this.authenticator, log.Revision); var header1 = $"[{viewModel.DateTime}] {viewModel.Revision}"; var header2 = $"[{log.DateTime}] {log.Revision}"; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return(dataSet.Tables.First()); }
public async void Open() { var dialog = new OpenPathViewModel(); this.configs.Update(dialog); if (dialog.ShowDialog() == true) { if (this.dataSet != null) { await this.CloseDocumentsAsync(true); this.dataSet = null; this.IsLoaded = false; this.OnUnloaded(EventArgs.Empty); } this.Open(dialog.Path1, dialog.Path2, dialog.FilterExpression); this.configs.Commit(dialog); } }
private async Task <DiffDataType> Initialize(LogInfoViewModel viewModel, IType type) { var logs = await type.GetLogAsync(this.authenticator, null); var revision = logs.First().Revision; var dataSet1 = await type.GetDataSetAsync(this.authenticator, viewModel.Revision); var dataSet2 = await type.GetDataSetAsync(this.authenticator, revision); var header1 = $"{type.Name} - {viewModel.Revision}"; var header2 = $"{type.Name} - {revision}"; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return(dataSet.Types.First()); }
protected override async Task OnRunAsync(IProgress progress, CancellationToken cancellation) { progress.Report(0, "데이터 베이스 가져오는중"); var dataBase1 = await this.DataBaseContext.Dispatcher.InvokeAsync(() => this.DataBaseContext[this.dataBaseName1]); var dataBase2 = await this.DataBaseContext.Dispatcher.InvokeAsync(() => this.DataBaseContext[this.dataBaseName2]); var tasks = new Task <CremaDataSet>[] { dataBase2.GetDataSetAsync(this.authentication, CremaDataSetFilter.Default, string.Empty), dataBase1.GetDataSetAsync(this.authentication, CremaDataSetFilter.Default, string.Empty), }; await Task.WhenAll(tasks); progress.Report(0.5, "비교하는중"); this.Result = new DiffDataSet(tasks[1].Result, tasks[0].Result, DiffMergeTypes.ReadOnly2) { Header1 = this.dataBaseName2, Header2 = this.dataBaseName1 }; }
public DiffDataSetViewModel(DiffDataSet diffSet) { this.Source = diffSet; }
public DiffDataSetViewModel(DiffDataSet diffSet) { this.diffSet = diffSet; }