//public static ProjectFileModel GetFile(int userId, int projectId, int fileId) //{ // var project = GetProject(userId, projectId); // if (project == null) // return null; // var file = project.FindFile(fileId); // return file; //} //public static ProjectModel GetProject(int userId, int projectId) //{ // return projects.FirstOrDefault(x => x.OwnerUserId == userId && x.ProjectId == projectId); //} public ProjectModel GetProject(int userId, int projectId) { #if true return(projects.FirstOrDefault(x => x.OwnerUserId == userId && x.ProjectId == projectId)); #else // Note: there's only one project in this repo: project 478 for user 125 var projectDto = MockWebServiceUtility.LoadProject(userId, projectId); if (projectDto == null) { throw new Exception("Could not find project in internal repository."); } ProjectModel projectModel = ProjectModelConverters.FromDtoToModel(projectDto); return(projectModel); #endif }
private void AnalyzeProject(bool ctrlSpace) { ctrlSpace = true; var sw = Stopwatch.StartNew(); var projectVm = (ProjectViewModel)DataContext; var fileVm = projectVm.SelectedProjectItem as ProjectFileViewModel; if (fileVm == null) { Logger.AppendLine("A file must be selected"); return; } fileVm.CaretIndex = SelectedFileContent.CaretIndex; // Synchronize the view's content with the viewmodel (since by default this is only done AFTER the textbox loses focus) fileVm.Content = SelectedFileContent.Text; var projectDto = ProjectMVVMConverters.FromViewModelToModel(projectVm); var request = new StatelessProjectRequest() { Project = projectDto, CodeCompletionParameters = new StatelessProjectCodeCompletionParameters() { CtrlSpace = ctrlSpace, FileId = fileVm.Id, Offset = fileVm.CaretIndex } }; StatelessProjectResponse response = MockWebServiceUtility.Server_HandleStatelessCodeCompletionRequest(request); var jsonResponse = JsonConvert.SerializeObject(response, Formatting.Indented); //Logger.AppendLine(jsonResponse); // Summarize results... Logger.AppendLine("Project analysis completed in {0} ms", sw.ElapsedMilliseconds); if (response.CompletionOptions != null) { // Order results by completion text response.CompletionOptions = response.CompletionOptions.OrderBy(x => x.CompletionText).ToArray(); Logger.AppendLine("{0} code completion option(s) generated.", response.CompletionOptions.Length); // Try to find closest matching completion result if (string.IsNullOrWhiteSpace(response.CompletionWord)) { Logger.AppendLine("No code completion word detected."); } else { //response. .CompletionOptionMostCloselyMatchingCompletionWord = response.CompletionOptions // .FirstOrDefault(x => x.CompletionText.CompareTo(response.CompletionWord) >= 0); //response.CompletionOptionMostCloselyMatchingCompletionWord = response.CompletionOptions.FirstOrDefault(x => x.CompletionText.StartsWith(response.CompletionWord, StringComparison.InvariantCultureIgnoreCase)); if (response.BestMatchToCompletionWord != null) { Logger.AppendLine("Detected code completion word, \"{0}\", most closely matches completion option \"{1}\".", response.CompletionWord, response.BestMatchToCompletionWord.CompletionText); } else { Logger.AppendLine("Detected code completion word: {0}", response.CompletionWord); } } } Logger.SetCodeCompletionOptions(response.CompletionOptions, response.BestMatchToCompletionWord); // response.CompletionWord); if (response.Errors != null) { Logger.AppendLine("{0} error(s) detected.", response.Errors.Length); if (response.Errors.Length > 0) { foreach (var err in response.Errors) { Logger.AppendLine("{0}: In file {1} ({2}, {3}): {4}", err.Type, err.FileName, err.Line, err.Column, err.Message); } } } }