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); }
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); } }
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); }); }
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)); }
public TableNode(SqlFile file, string name, string scheme = null) : base(file, scheme, name) { }
public ProcedureNode(SqlFile file, string name, string scheme = null) : base(file, scheme, name) { }