public void Serialize_TypeExpression_Null_Test()
 {
     var filter = new CremaDataSetFilter
     {
         TypeExpression = null
     };
 }
 public void Serialize_Tables_Null_Test()
 {
     var filter = new CremaDataSetFilter
     {
         Tables = null
     };
 }
        public void Serialize_Empty_Test()
        {
            var formatter = new BinaryFormatter();
            var stream    = new MemoryStream();
            var filter1   = new CremaDataSetFilter();

            formatter.Serialize(stream, filter1);
            stream.Position = 0;
            var filter2 = formatter.Deserialize(stream) as CremaDataSetFilter;

            Assert.AreEqual(filter1.TypeExpression, filter2.TypeExpression);
            Assert.AreEqual(filter1.TableExpression, filter2.TableExpression);
            Assert.AreEqual(filter1.OmitType, filter2.OmitType);
            Assert.AreEqual(filter1.OmitTable, filter2.OmitTable);
            Assert.AreEqual(filter1.OmitContent, filter2.OmitContent);
        }
Ejemplo n.º 4
0
        public async Task ViewAsync([CommandCompletion(nameof(GetDataBaseNamesAsync))] string dataBaseName, string revision = null)
        {
            var sb             = new StringBuilder();
            var dataBase       = this.GetDataBase(dataBaseName);
            var authentication = this.CommandContext.GetAuthentication(this);
            var filter         = new CremaDataSetFilter()
            {
                TableExpression = FilterProperties.FilterExpression
            };
            var dataSet = await dataBase.GetDataSetAsync(authentication, filter, revision);

            var props  = dataSet.ToDictionary(DataSetTypeProperties.TableOnly == true, DataSetTypeProperties.TypeOnly == true);
            var format = FormatProperties.Format;

            sb.AppendLine(props, format);
            await this.Out.WriteAsync(sb.ToString());
        }
Ejemplo n.º 5
0
        public async Task ImportAsync_Arg0_Expired_FailTestAsync()
        {
            var dataBaseFilter = new DataBaseFilter(DataBaseFlags.Loaded | DataBaseFlags.Public | DataBaseFlags.NotLocked)
            {
                Settings = DataBaseSettings.Default
            };
            var dataBase = await dataBaseFilter.GetDataBaseAsync(app);

            var filter = new CremaDataSetFilter()
            {
                OmitContent = true
            };
            var dataSet = await dataBase.GetDataSetAsync(Authentication.System, filter, string.Empty);

            var comment = RandomUtility.NextString();
            await dataBase.ImportAsync(expiredAuthentication, dataSet, comment);
        }
Ejemplo n.º 6
0
        public async Task ImportAsync_Arg1_Empty_FailTestAsync()
        {
            var authentication = await this.TestContext.LoginRandomAsync(Authority.Admin);

            var dataBaseFilter = new DataBaseFilter(DataBaseFlags.Loaded | DataBaseFlags.Public | DataBaseFlags.NotLocked)
            {
                Settings = DataBaseSettings.Default
            };
            var dataBase = await dataBaseFilter.GetDataBaseAsync(app);

            var filter = new CremaDataSetFilter()
            {
                OmitContent = true
            };
            var dataSet = await dataBase.GetDataSetAsync(authentication, filter, string.Empty);

            await Base_TestAsync(dataBase, authentication, dataSet, string.Empty);
        }
Ejemplo n.º 7
0
        private async Task ImportAsync_Locked_NotLocker_FailTestAsync(Authority authority)
        {
            var dataBaseFilter = new DataBaseFilter(DataBaseFlags.Loaded | DataBaseFlags.Public | DataBaseFlags.Locked)
            {
                Settings = DataBaseSettings.Default
            };
            var dataBase = await dataBaseFilter.GetDataBaseAsync(app);

            var lockInfo       = dataBase.LockInfo;
            var authentication = await this.TestContext.LoginRandomAsync(authority, item => item.ID != lockInfo.ID);

            var filter = new CremaDataSetFilter()
            {
                OmitContent = true
            };
            var dataSet = await dataBase.GetDataSetAsync(authentication, filter, string.Empty);

            var comment = RandomUtility.NextString();

            await Base_TestAsync(dataBase, authentication, dataSet, comment);
        }
Ejemplo n.º 8
0
        private async Task ImportAsync_Private_AccessTypeNone_FailTestAsync(Authority authority)
        {
            var dataBaseFilter = new DataBaseFilter(DataBaseFlags.Loaded | DataBaseFlags.Private | DataBaseFlags.NotLocked)
            {
                Settings = DataBaseSettings.Default
            };
            var dataBase = await dataBaseFilter.GetDataBaseAsync(app);

            var accessInfo     = dataBase.AccessInfo;
            var authentication = await this.TestContext.LoginRandomAsync(authority, item => accessInfo.GetAccessType(item.ID) == AccessType.None);

            var filter = new CremaDataSetFilter()
            {
                OmitContent = true
            };
            var dataSet = await dataBase.GetDataSetAsync(authentication, filter, string.Empty);

            var comment = RandomUtility.NextString();

            await Base_TestAsync(dataBase, authentication, dataSet, comment);
        }
Ejemplo n.º 9
0
        public async Task ImportAsync_Private_Admin_Owner_TestAsync()
        {
            var dataBaseFilter = new DataBaseFilter(DataBaseFlags.Loaded | DataBaseFlags.Private | DataBaseFlags.NotLocked)
            {
                Settings = DataBaseSettings.Default
            };
            var dataBase = await dataBaseFilter.GetDataBaseAsync(app);

            var accessInfo     = dataBase.AccessInfo;
            var authentication = await this.TestContext.LoginAsync(accessInfo.ID);

            var filter = new CremaDataSetFilter()
            {
                OmitContent = true
            };
            var dataSet = await dataBase.GetDataSetAsync(authentication, filter, string.Empty);

            var comment = RandomUtility.NextString();

            await Base_TestAsync(dataBase, authentication, dataSet, comment);
        }
Ejemplo n.º 10
0
        public void Serialize_Full_Test()
        {
            var formatter = new BinaryFormatter();
            var stream    = new MemoryStream();
            var filter1   = new CremaDataSetFilter()
            {
                TableExpression = "a;b;c",
                TypeExpression  = "c;b;a",
                OmitContent     = true,
                OmitTable       = false,
                OmitType        = true,
            };

            formatter.Serialize(stream, filter1);
            stream.Position = 0;
            var filter2 = formatter.Deserialize(stream) as CremaDataSetFilter;

            Assert.AreEqual(filter1.TypeExpression, filter2.TypeExpression);
            Assert.AreEqual(filter1.TableExpression, filter2.TableExpression);
            Assert.AreEqual(filter1.OmitType, filter2.OmitType);
            Assert.AreEqual(filter1.OmitTable, filter2.OmitTable);
            Assert.AreEqual(filter1.OmitContent, filter2.OmitContent);
        }
Ejemplo n.º 11
0
        private async Task ImportAsync_Private_TestAsync(Authority authority, AccessType accessType)
        {
            var dataBaseFilter = new DataBaseFilter(DataBaseFlags.Loaded | DataBaseFlags.Private | DataBaseFlags.NotLocked)
            {
                Settings = DataBaseSettings.Default
            };
            var dataBase = await dataBaseFilter.GetDataBaseAsync(app);

            var accessInfo = dataBase.AccessInfo;
            var query      = from item in accessInfo.Members
                             where item.AccessType == accessType
                             select item.ID;
            var authentication = await this.TestContext.LoginRandomAsync(authority, item => query.Contains(item.ID));

            var filter = new CremaDataSetFilter()
            {
                OmitContent = true
            };
            var dataSet = await dataBase.GetDataSetAsync(authentication, filter, string.Empty);

            var comment = RandomUtility.NextString();

            await Base_TestAsync(dataBase, authentication, dataSet, comment);
        }
Ejemplo n.º 12
0
        public async Task <Guid> ImportAsync(Authentication authentication, CremaDataSet dataSet, string comment)
        {
            try
            {
                if (authentication is null)
                {
                    throw new ArgumentNullException(nameof(authentication));
                }
                if (authentication.IsExpired == true)
                {
                    throw new AuthenticationExpiredException(nameof(authentication));
                }
                if (dataSet is null)
                {
                    throw new ArgumentNullException(nameof(dataSet));
                }
                if (comment is null)
                {
                    throw new ArgumentNullException(nameof(comment));
                }

                await this.Dispatcher.InvokeAsync(() =>
                {
                    this.CremaHost.DebugMethod(authentication, this, nameof(ImportAsync), comment);
                    this.ValidateImport(authentication, dataSet, comment);
                    this.CremaHost.Sign(authentication);
                });

                var taskID = Guid.NewGuid();
                var filter = new CremaDataSetFilter()
                {
                    Tables      = dataSet.Tables.Select(item => item.Name).ToArray(),
                    OmitContent = true
                };
                var targetSet = await this.GetDataSetAsync(authentication, filter, string.Empty);

                await this.Dispatcher.InvokeAsync(() =>
                {
                    this.LockTypes(authentication, targetSet, comment);
                    this.LockTables(authentication, targetSet, comment);
                });

                try
                {
                    targetSet.SignatureDateProvider = new SignatureDateProvider(authentication.ID);
                    foreach (var item in targetSet.Tables)
                    {
                        var dataTable = dataSet.Tables[item.Name];
                        foreach (var row in dataTable.Rows)
                        {
                            item.ImportRow(row);
                        }
                        item.BeginLoad();
                        foreach (var row in item.Rows)
                        {
                            row.CreationInfo     = authentication.SignatureDate;
                            row.ModificationInfo = authentication.SignatureDate;
                        }
                        item.ContentsInfo = authentication.SignatureDate;
                        item.EndLoad();
                    }
                    var dataBaseSet = await DataBaseSet.CreateAsync(this, targetSet);

                    await this.Repository.Dispatcher.InvokeAsync(() =>
                    {
                        try
                        {
                            this.Repository.Modify(dataBaseSet);
                            this.Repository.Commit(authentication, comment);
                        }
                        catch
                        {
                            this.Repository.Revert();
                            throw;
                        }
                    });

                    await this.Dispatcher.InvokeAsync(() =>
                    {
                        this.UpdateTables(authentication, targetSet);
                    });

                    return(taskID);
                }
                finally
                {
                    await this.Dispatcher.InvokeAsync(() =>
                    {
                        this.UnlockTypes(authentication, targetSet);
                        this.UnlockTables(authentication, targetSet);
                    });
                }
            }
            catch (Exception e)
            {
                this.CremaHost.Error(e);
                throw;
            }
        }