OpenHome.Git.TreeModifiable.Write C# (CSharp) Method

Write() private method

private Write ( ) : ITree
return ITree
        internal ITree Write()
        {
            CheckWritten();

            iWritten = true;

            List<TreeItem> list = new List<TreeItem>();

            if (iTree != null)
            {
                foreach (ITreeEntry item in iTree.Items)
                {
                    string id = item.Id;
                    string mode = item.Mode;
                    string name = item.Name;

                    if (iDeleteList.Contains(name))
                    {
                        continue;
                    }

                    if (iModeChangeList.ContainsKey(name))
                    {
                        mode = iModeChangeList[name];
                    }

                    if (iTreeModifyList.ContainsKey(name))
                    {
                        TreeModifiable modified = iTreeModifyList[name];

                        ITree tree = modified.Write();

                        if (modified.Modified)
                        {
                            id = tree.Id;
                            iModified = true;
                        }
                    }
                    else if (iBlobModifyList.ContainsKey(name))
                    {
                        IBlob blob = iBlobModifyList[name].Write();
                        id = blob.Id;
                    }

                    list.Add(new TreeItem(iRepository, id, mode, name));
                }
            }

            foreach (TreeModifiableNew item in iTreeAddList.Values)
            {
                ITree tree = item.Write();
                list.Add(new TreeItem(iRepository, tree.Id, item.Mode, item.Name));
            }

            foreach (BlobModifiableNew item in iBlobAddList.Values)
            {
                IBlob blob = item.Write();
                list.Add(new TreeItem(iRepository, blob.Id, item.Mode, item.Name));
            }

            if (iModified | iTree == null)
            {
                iTree = Tree.Write(iRepository, list);
            }

            return (iTree);
        }