Beispiel #1
0
        public static SqlFile FromProjectItem(ProjectItem projItem)
        {
            var result = new SqlFile(projItem);

            result.Name  = projItem.Name;
            result.Path  = projItem.FileNames[0];
            result.Items = GetFileItems(result, projItem);
            return(result);
        }
Beispiel #2
0
        private static SqlObjectNode BuildFileItem(SqlFile file, FileItemType type, string scheme, string name)
        {
            switch (type)
            {
            case FileItemType.Table:
            case FileItemType.View:
                return(new TableNode(file, name, scheme));

            case FileItemType.Proc:
            case FileItemType.Func:
                return(new ProcedureNode(file, name, scheme));

            default:
                throw new ArgumentOutOfRangeException(nameof(type), "Unknown node type");
            }
        }
 private void GenerateStub()
 {
     for (int i = 0; i < 20; i++)
     {
         var sqlFile = new SqlFile()
         {
             Name = "file" + i
         };
         var fileItems = new ObservableCollection <SqlObjectNode>();
         for (int j = 0; j < 1000; j++)
         {
             fileItems.Add(new TableNode(sqlFile, "tbl" + j));
             fileItems.Add(new ProcedureNode(sqlFile, "proc" + j));
         }
         sqlFile.Items = fileItems;
         Files.Add(sqlFile);
     }
 }
Beispiel #4
0
 public SqlObjectNode(SqlFile file, string scheme, string name)
 {
     File           = file;
     Name           = name;
     Scheme         = scheme ?? "dbo";
     FindInDocument = new Command(() =>
     {
         if (_positionsInFile.Count == 0)
         {
             return;
         }
         if (_currentIndex >= _positionsInFile.Count)
         {
             _currentIndex = 0;
         }
         int position = _positionsInFile[_currentIndex++];
         File.GotoPosition(position);
     });
 }
Beispiel #5
0
        private static ObservableCollection <SqlObjectNode> GetFileItems(SqlFile result, ProjectItem projItem)
        {
            string fileContent = GetFileContent(projItem);
            var    fileItems   = new Dictionary <string, SqlObjectNode>();

            foreach (Match match in _regex.Matches(fileContent))
            {
                if (match.Success)
                {
                    var           itemType = GetItemType(match.Groups[TypeGroup].Value);
                    string        scheme   = match.Groups[SchemeGroup].Value;
                    string        name     = match.Groups[NameGroup].Value;
                    string        key      = scheme + "." + name;
                    SqlObjectNode node;
                    if (!fileItems.TryGetValue(key, out node))
                    {
                        node = BuildFileItem(result, itemType, scheme, name);
                        fileItems.Add(key, node);
                    }
                    node.AddIndex(match.Index);
                }
            }
            return(new ObservableCollection <SqlObjectNode>(fileItems.Values));
        }
Beispiel #6
0
 public TableNode(SqlFile file, string name, string scheme = null)
     : base(file, scheme, name)
 {
 }
Beispiel #7
0
 public ProcedureNode(SqlFile file, string name, string scheme = null)
     : base(file, scheme, name)
 {
 }