コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        public void Add(DiffDataSet dataSet)
        {
            var browserItem = new BrowserViewModel(dataSet);

            browserItem.UpdateItemsSource();
            this.ItemsSource.Add(browserItem);
        }
コード例 #4
0
 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));
 }
コード例 #5
0
        public async void Close()
        {
            await this.CloseDocumentsAsync(true);

            this.dataSet  = null;
            this.IsLoaded = false;
            this.OnUnloaded(EventArgs.Empty);
        }
コード例 #6
0
        public void Add(DiffDataSet dataSet)
        {
            var browserItem = new BrowserViewModel(dataSet);

            this.compositionService.SatisfyImportsOnce(browserItem);
            browserItem.UpdateItemsSource();
            this.ItemsSource.Add(browserItem);
            //this.Browsers.ElementAtOrDefault()
        }
コード例 #7
0
        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);
        }
コード例 #8
0
 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();
     }));
 }
コード例 #9
0
        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());
        }
コード例 #10
0
        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();
            }));
        }
コード例 #12
0
ファイル: ShellViewModel.cs プロジェクト: teize001/Crema
        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;
            }
        }
コード例 #13
0
        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());
        }
コード例 #16
0
ファイル: ShellViewModel.cs プロジェクト: teize001/Crema
        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());
        }
コード例 #18
0
            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
                };
            }
コード例 #19
0
 public DiffDataSetViewModel(DiffDataSet diffSet)
 {
     this.Source = diffSet;
 }
コード例 #20
0
 public DiffDataSetViewModel(DiffDataSet diffSet)
 {
     this.diffSet = diffSet;
 }