public void Process(DsItemLoadingArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            DsDbItem dsDbItem = args.DsDbItem as DsDbItem;

            if (dsDbItem == null)
            {
                return;
            }

            // Deserialize and link descendants, if needed
            FileInfo file = args.DsDbItem.File;

            if (dsDbItem.IncludeDescendants && file.Directory != null)
            {
                DirectoryInfo childItemsFolder = new DirectoryInfo(
                    file.Directory.FullName + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(file.Name));
                if (childItemsFolder.Exists)
                {
                    foreach (var itemFile in childItemsFolder.GetFiles("*.item", SearchOption.TopDirectoryOnly))
                    {
                        DsDbItem childItem = new DsDbItem(dsDbItem.SerializationFolderName, itemFile, true);
                        dsDbItem.Children.Add(childItem);
                    }
                }
            }
        }
        public void Process(DsItemLoadingArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            DsDbTemplate template = args.DsDbItem as DsDbTemplate;

            Assert.ArgumentNotNull(template, "Item was not a DsDbTemplate, which is required here");

            foreach (SyncItem descendantItem in template.File
                     .DeserializeAll(
                         template.SyncItem,
                         Deserializer.GetSerializationFolder(template.SerializationFolderName),
                         3)
                     .Where(i => ID.IsID(i.TemplateID) && ID.Parse(i.TemplateID) == TemplateIDs.TemplateField))
            {
                SyncField isSharedField = descendantItem.SharedFields.FirstOrDefault(f => "Shared".Equals(f.FieldName));
                SyncField typeField     = descendantItem.SharedFields.FirstOrDefault(f => "Type".Equals(f.FieldName));

                bool isShared = isSharedField != null && "1".Equals(isSharedField.FieldValue);

                template.Fields.Add(new DbField(descendantItem.Name, ID.Parse(descendantItem.ID))
                {
                    Shared = isShared,
                    Type   = typeField != null ? typeField.FieldValue : string.Empty
                });
            }
        }
        public void ProcessThrowsIfSyncItemIsNull()
        {
            var sut         = new CopyParentId();
            var dsitem      = Substitute.For <IDsDbItem>();
            var dataStorage = Substitute.For <DataStorage>(Database.GetDatabase("master"));
            var args        = new DsItemLoadingArgs(dsitem, dataStorage);

            Action action = () => sut.Process(args);

            action.ShouldThrow <ArgumentNullException>().WithMessage("*SyncItem");
        }
Exemple #4
0
        public void Process(DsItemLoadingArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            args.DsDbItem.SyncItem.CopySharedFieldsTo(args.DsDbItem);

            var template = args.DsDbItem as DbTemplate;

            if (template != null)
            {
                template.BaseIDs = new[] { ID.Parse(template.Fields[FieldIDs.BaseTemplate].Value) };
            }
        }
        public void Process(DsItemLoadingArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            var dsDbItem = args.DsDbItem as DsDbItem;

            if (dsDbItem == null || !dsDbItem.DeserializeLinkedTemplate || args.DataStorage.GetFakeItem(dsDbItem.TemplateID) != null)
            {
                return;
            }

            DeserializeTemplate(args.DataStorage, dsDbItem.TemplateID, dsDbItem.SerializationFolderName);
        }
        public void ProcessThrowsIfSyncItemParentIdIsNotIdentifier()
        {
            var sut    = new CopyParentId();
            var dsitem = Substitute.For <IDsDbItem>();

            dsitem.SyncItem.Returns(new SyncItem {
                ParentID = "not an id"
            });
            var dataStorage = Substitute.For <DataStorage>(Database.GetDatabase("master"));
            var args        = new DsItemLoadingArgs(dsitem, dataStorage);

            Action action = () => sut.Process(args);

            action.ShouldThrow <ArgumentException>().WithMessage("Unable to copy ParentId. Valid identifier expected.*");
        }
        public void ProcessIgnoresParentIdIfNoParentItemFound()
        {
            var sut      = new CopyParentId();
            var dsitem   = Substitute.For <IDsDbItem, DbItem>("item");
            var parentId = ID.NewID;

            dsitem.SyncItem.Returns(new SyncItem {
                ParentID = parentId.ToString()
            });
            var dataStorage = Substitute.For <DataStorage>(Database.GetDatabase("master"));
            var args        = new DsItemLoadingArgs(dsitem, dataStorage);

            sut.Process(args);

            ((DbItem)dsitem).ParentID.Should().BeNull();
        }
        public void ProcessSetsParentId()
        {
            var sut      = new CopyParentId();
            var dsitem   = Substitute.For <IDsDbItem, DbItem>("item");
            var parentId = ID.NewID;

#pragma warning disable 618
            dsitem.SyncItem.Returns(new SyncItem {
                ParentID = parentId.ToString()
            });
#pragma warning restore 618
            var dataStorage = Substitute.For <DataStorage>(Database.GetDatabase("master"));
            dataStorage.GetFakeItem(parentId).Returns(new DbItem("Parent"));
            var args = new DsItemLoadingArgs(dsitem, dataStorage);

            sut.Process(args);

            ((DbItem)dsitem).ParentID.Should().Be(parentId);
        }
        public void Process(DsItemLoadingArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            var syncItem = args.DsDbItem.SyncItem;

            Assert.ArgumentNotNull(syncItem, "SyncItem");
            Assert.ArgumentCondition(ID.IsID(syncItem.ParentID), "ParentID", "Unable to copy ParentId. Valid identifier expected.");

            var parentId = ID.Parse(syncItem.ParentID);

            if (args.DataStorage.GetFakeItem(parentId) == null)
            {
                return;
            }

            // TODO: Avoid type casting.
            ((DbItem)args.DsDbItem).ParentID = parentId;
        }
        public void Process(DsItemLoadingArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            var dsDbItem = args.DsDbItem as DsDbItem;

            if (dsDbItem == null)
            {
                return;
            }

            // Deserialize and link descendants, if needed
            var file = args.DsDbItem.File;

            if (!dsDbItem.IncludeDescendants || file.Directory == null)
            {
                return;
            }

            var childItemsFolder = new DirectoryInfo(file.Directory.FullName + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(file.Name));

            if (!childItemsFolder.Exists)
            {
                return;
            }

            foreach (var itemFile in childItemsFolder.GetFiles("*.item", SearchOption.TopDirectoryOnly))
            {
                DbItem childItem;
                var    syncItem = itemFile.Deserialize();

                if (syncItem.TemplateID == TemplateIDs.Template.ToString())
                {
                    childItem = new DsDbTemplate(dsDbItem.SerializationFolderName, syncItem, itemFile);
                }
                else
                {
                    childItem = new DsDbItem(dsDbItem.SerializationFolderName, syncItem, itemFile, true);
                }

                dsDbItem.Children.Add(childItem);
            }
        }
 public void Process(DsItemLoadingArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     args.DsDbItem.SyncItem.CopyVersionedFieldsTo(args.DsDbItem);
 }