Example #1
0
                public void Add(string path, string blobId)
                {
                    // If has directory path, recursively add
                    int slash = path.IndexOf('/');

                    if (slash >= 0)
                    {
                        string name = path.Substring(0, slash);
                        string tail = path.Substring(slash + 1);

                        FileFolder folder;
                        if (!m_folders.TryGetValue(name, out folder))
                        {
                            string subRootedName = (RootedName.Length <= 1) ? string.Concat("/", name) : string.Concat(RootedName, "/", name);
                            folder = new ItemBankFolder(m_project, subRootedName, name);
                            m_folders.Add(name, folder);
                        }
                        ((ItemBankFolder)folder).Add(tail, blobId);
                    }

                    // Otherwise add file
                    else
                    {
                        m_files[path] = new ItemBankFile(m_project, string.Concat(RootedName, "/", path), path, blobId);
                    }
                }
Example #2
0
                private bool FollowPath(string path, out ItemBankFolder folder, out string name)
                {
                    string[] parts = path.ToLowerInvariant().Split('/');
                    if (parts.Length < 1)
                    {
                        throw new FileNotFoundException("Empty path: " + path);
                    }
                    if (parts[0].Length == 0)
                    {
                        throw new FileNotFoundException("Absolute paths not supported: " + path);
                    }

                    ItemBankFolder f = this;

                    for (int i = 0; i < parts.Length - 1; ++i)
                    {
                        FileFolder next;
                        if (!f.m_folders.TryGetValue(parts[i], out next))
                        {
                            folder = null;
                            name   = null;
                            return(false);
                        }
                        f = (ItemBankFolder)next;
                    }

                    folder = f;
                    name   = parts[parts.Length - 1];
                    return(true);
                }
Example #3
0
 private void LoadTree()
 {
     m_root = new ItemBankFolder(this, RootedName, Name);
     foreach (var pair in m_package.m_gitLab.ListRepositoryTree(m_projectId))
     {
         System.Diagnostics.Debug.Assert(pair.Key.IndexOf('\\') < 0);    // Should use forward slashes exclusively
         m_root.Add(pair.Key.ToLower(), pair.Value);
     }
 }