use of com.searchcode.app.dto.SearchResult in project searchcode-server by boyter.
the class EndToEndITCase method testEndToEndSvnPath.
public void testEndToEndSvnPath() throws IOException {
CodeSearcher cs = new CodeSearcher();
File directoryWithFiles = TestHelpers.createDirectoryWithFiles("EndToEndSvnTest");
IndexSvnRepoJob indexSvnRepoJob = new IndexSvnRepoJob();
indexSvnRepoJob.indexDocsByPath(Paths.get(directoryWithFiles.toString()), "ENDTOENDTEST", "", directoryWithFiles.toString(), false);
SearchResult searchResult = cs.search("endtoendtestfile", 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(3);
CodeResult codeResult1 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile1.php")).findFirst().get();
CodeResult codeResult2 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile2.py")).findFirst().get();
CodeResult codeResult3 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile3.java")).findFirst().get();
assertThat(codeResult1.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile1");
assertThat(codeResult2.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile2");
assertThat(codeResult3.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile3");
// Delete a single file
String codeId = searchResult.getCodeResultList().get(0).getCodeId();
Singleton.getCodeIndexer().deleteByCodeId(codeId);
searchResult = cs.search("endtoendtestfile".toLowerCase(), 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(2);
// Delete file from disk then index to ensure it is removed from the index
File toDelete = new File(directoryWithFiles.toString() + "/EndToEndTestFile2.py");
toDelete.delete();
indexSvnRepoJob.indexDocsByPath(Paths.get(directoryWithFiles.toString()), "ENDTOENDTEST", "", directoryWithFiles.toString(), true);
searchResult = cs.search("endtoendtestfile", 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(2);
codeResult1 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile1.php")).findFirst().get();
codeResult2 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile3.java")).findFirst().get();
assertThat(codeResult1.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile1");
assertThat(codeResult2.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile3");
Singleton.getCodeIndexer().deleteByReponame("ENDTOENDTEST");
searchResult = cs.search("endtoendtestfile".toLowerCase(), 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(0);
}
use of com.searchcode.app.dto.SearchResult in project searchcode-server by boyter.
the class EndToEndITCase method testEndToEndFilePath.
public void testEndToEndFilePath() throws IOException {
CodeSearcher cs = new CodeSearcher();
File directoryWithFiles = TestHelpers.createDirectoryWithFiles("EndToEndFileTest");
IndexFileRepoJob indexFileRepoJob = new IndexFileRepoJob();
// Index created files
indexFileRepoJob.indexDocsByPath(Paths.get(directoryWithFiles.toString()), "ENDTOENDTEST", "", directoryWithFiles.toString(), false);
SearchResult searchResult = cs.search("endtoendtestfile", 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(3);
CodeResult codeResult1 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile1.php")).findFirst().get();
CodeResult codeResult2 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile2.py")).findFirst().get();
CodeResult codeResult3 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile3.java")).findFirst().get();
assertThat(codeResult1.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile1");
assertThat(codeResult2.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile2");
assertThat(codeResult3.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile3");
// Delete a single file
String codeId = searchResult.getCodeResultList().get(0).getCodeId();
Singleton.getCodeIndexer().deleteByCodeId(codeId);
searchResult = cs.search("endtoendtestfile".toLowerCase(), 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(2);
codeResult1 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile2.py")).findFirst().get();
codeResult2 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile3.java")).findFirst().get();
assertThat(codeResult1.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile2");
assertThat(codeResult2.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile3");
// Delete file from disk then index to ensure it is removed from the index
File toDelete = new File(directoryWithFiles.toString() + "/EndToEndTestFile2.py");
toDelete.delete();
indexFileRepoJob.indexDocsByPath(Paths.get(directoryWithFiles.toString()), "ENDTOENDTEST", "", directoryWithFiles.toString(), true);
searchResult = cs.search("endtoendtestfile", 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(2);
codeResult1 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile1.php")).findFirst().get();
codeResult2 = searchResult.getCodeResultList().stream().filter(x -> x.getFileName().equals("EndToEndTestFile3.java")).findFirst().get();
assertThat(codeResult1.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile1");
assertThat(codeResult2.getCode().get(0)).isEqualTo("EndToEndTestFile EndToEndTestFile3");
// Delete everything
Singleton.getCodeIndexer().deleteByReponame("ENDTOENDTEST");
searchResult = cs.search("endtoendtestfile".toLowerCase(), 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(0);
}
use of com.searchcode.app.dto.SearchResult in project searchcode-server by boyter.
the class SearchRouteService method codeSearch.
public SearchResult codeSearch(Request request, Response response) {
CodeSearcher cs = new CodeSearcher();
CodeMatcher cm = new CodeMatcher(Singleton.getData());
SearchcodeLib scl = Singleton.getSearchcodeLib(Singleton.getData());
if (request.queryParams().contains("q") && !request.queryParams("q").trim().equals(Values.EMPTYSTRING)) {
String query = request.queryParams("q").trim();
int page = 0;
if (request.queryParams().contains("p")) {
try {
page = Integer.parseInt(request.queryParams("p"));
page = page > 19 ? 19 : page;
} catch (NumberFormatException ex) {
page = 0;
}
}
String[] repos;
String[] langs;
String[] owners;
String reposFilter = Values.EMPTYSTRING;
String langsFilter = Values.EMPTYSTRING;
String ownersFilter = Values.EMPTYSTRING;
if (request.queryParams().contains("repo")) {
repos = request.queryParamsValues("repo");
if (repos.length != 0) {
List<String> reposList = Arrays.asList(repos).stream().map((s) -> "reponame:" + QueryParser.escape(s.replace(" ", "_"))).collect(Collectors.toList());
reposFilter = " && (" + StringUtils.join(reposList, " || ") + ")";
}
}
if (request.queryParams().contains("lan")) {
langs = request.queryParamsValues("lan");
if (langs.length != 0) {
List<String> langsList = Arrays.asList(langs).stream().map((s) -> "languagename:" + QueryParser.escape(s.replace(" ", "_"))).collect(Collectors.toList());
langsFilter = " && (" + StringUtils.join(langsList, " || ") + ")";
}
}
if (request.queryParams().contains("own")) {
owners = request.queryParamsValues("own");
if (owners.length != 0) {
List<String> ownersList = Arrays.asList(owners).stream().map((s) -> "codeowner:" + QueryParser.escape(s.replace(" ", "_"))).collect(Collectors.toList());
ownersFilter = " && (" + StringUtils.join(ownersList, " || ") + ")";
}
}
// split the query escape it and and it together
String cleanQueryString = scl.formatQueryString(query);
SearchResult searchResult = cs.search(cleanQueryString + reposFilter + langsFilter + ownersFilter, page);
searchResult.setCodeResultList(cm.formatResults(searchResult.getCodeResultList(), query, true));
searchResult.setQuery(query);
for (String altQuery : scl.generateAltQueries(query)) {
searchResult.addAltQuery(altQuery);
}
// Null out code as it isnt required and there is no point in bloating our ajax requests
for (CodeResult codeSearchResult : searchResult.getCodeResultList()) {
codeSearchResult.setCode(null);
}
return searchResult;
}
return null;
}
use of com.searchcode.app.dto.SearchResult in project searchcode-server by boyter.
the class TimeSearchRouteService method getTimeSearch.
public SearchResult getTimeSearch(Request request, Response response) {
Data data = Singleton.getData();
SearchcodeLib scl = Singleton.getSearchcodeLib(data);
TimeCodeSearcher cs = new TimeCodeSearcher();
CodeMatcher cm = new CodeMatcher(data);
response.header("Content-Encoding", "gzip");
if (request.queryParams().contains("q") == false || Values.EMPTYSTRING.equals(request.queryParams("q").trim())) {
return null;
}
String query = request.queryParams("q").trim();
int page = this.getPage(request);
String[] repos;
String[] langs;
String[] owners;
String[] year;
String[] yearmonth;
String[] yearmonthday;
String[] revisions;
String[] deleted;
String reposFilter = Values.EMPTYSTRING;
String langsFilter = Values.EMPTYSTRING;
String ownersFilter = Values.EMPTYSTRING;
String yearFilter = Values.EMPTYSTRING;
String yearMonthFilter = Values.EMPTYSTRING;
String yearMonthDayFilter = Values.EMPTYSTRING;
String revisionsFilter = Values.EMPTYSTRING;
String deletedFilter = Values.EMPTYSTRING;
if (request.queryParams().contains("repo")) {
repos = request.queryParamsValues("repo");
reposFilter = getRepos(repos, reposFilter);
}
if (request.queryParams().contains("lan")) {
langs = request.queryParamsValues("lan");
langsFilter = getLanguages(langs, langsFilter);
}
if (request.queryParams().contains("own")) {
owners = request.queryParamsValues("own");
ownersFilter = getOwners(owners, ownersFilter);
}
if (request.queryParams().contains("year")) {
year = request.queryParamsValues("year");
yearFilter = this.getYears(year, yearFilter);
}
if (request.queryParams().contains("ym")) {
yearmonth = request.queryParamsValues("ym");
yearMonthFilter = this.getYearMonths(yearmonth, yearMonthFilter);
}
if (request.queryParams().contains("ymd")) {
yearmonthday = request.queryParamsValues("ymd");
yearMonthDayFilter = this.getYearMonthDays(yearmonthday, yearMonthDayFilter);
}
if (request.queryParams().contains("rev")) {
revisions = request.queryParamsValues("rev");
revisionsFilter = this.getRevisions(revisions, revisionsFilter);
}
if (request.queryParams().contains("del")) {
deleted = request.queryParamsValues("del");
deletedFilter = this.getDeleted(deleted, deletedFilter);
}
// split the query escape it and and it together
String cleanQueryString = scl.formatQueryString(query);
SearchResult searchResult = cs.search(cleanQueryString + reposFilter + langsFilter + ownersFilter + yearFilter + yearMonthFilter + yearMonthDayFilter + revisionsFilter + deletedFilter, page);
searchResult.setCodeResultList(cm.formatResults(searchResult.getCodeResultList(), query, true));
searchResult.setQuery(query);
this.getAltQueries(scl, query, searchResult);
// Null out code as it isn't required and there is no point in bloating our ajax requests
for (CodeResult codeSearchResult : searchResult.getCodeResultList()) {
codeSearchResult.setCode(null);
}
return searchResult;
}
use of com.searchcode.app.dto.SearchResult in project searchcode-server by boyter.
the class EndToEndITCase method testEndToEndGitDelta.
public void testEndToEndGitDelta() throws IOException {
CodeSearcher cs = new CodeSearcher();
IndexGitRepoJob indexGitRepoJob = new IndexGitRepoJob();
File directoryWithFiles = TestHelpers.createDirectoryWithFiles("EndToEndGitTest");
this.runCommand(directoryWithFiles.toString(), this.GITPATH, "init", ".");
this.runCommand(directoryWithFiles.toString(), this.GITPATH, "add", ".");
this.runCommand(directoryWithFiles.toString(), this.GITPATH, "commit", "-m", "\"First commit\"");
// Clone from the above into a new directory
File tempPath = TestHelpers.clearAndCreateTempPath("EndToEndGitCloneTest");
this.runCommand(tempPath.toString(), this.GITPATH, "clone", directoryWithFiles.toString(), "EndToEndGitTest");
// Index
indexGitRepoJob.indexDocsByPath(Paths.get(tempPath.toString()), "EndToEndGitTest", "", tempPath.toString(), false);
SearchResult searchResult = cs.search("endtoendtestfile", 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(3);
// Update the source
TestHelpers.createFile(directoryWithFiles, "EndToEndTestFile4.cpp", "EndToEndTestFile EndToEndTestFile4");
this.runCommand(directoryWithFiles.toString(), this.GITPATH, "add", ".");
this.runCommand(directoryWithFiles.toString(), this.GITPATH, "commit", "-m", "\"Add new\"");
// Index and lets dance
RepositoryChanged repositoryChanged = indexGitRepoJob.updateExistingRepository("EndToEndGitTest", "repoRemoteLocation", "", "", tempPath.toString(), "", false);
String repoGitLocation = tempPath.toString() + "/" + "EndToEndGitTest";
Path docDir = Paths.get(repoGitLocation);
indexGitRepoJob.indexDocsByDelta(docDir, "EndToEndGitTest", tempPath.toString(), "", repositoryChanged);
searchResult = cs.search("endtoendtestfile", 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(4);
// Update the source
this.runCommand(directoryWithFiles.toString(), this.GITPATH, "rm", "EndToEndTestFile4.cpp");
this.runCommand(directoryWithFiles.toString(), this.GITPATH, "commit", "-m", "\"Baleted\"");
// Index and lets dance
repositoryChanged = indexGitRepoJob.updateExistingRepository("EndToEndGitTest", "repoRemoteLocation", "", "", tempPath.toString(), "", false);
repoGitLocation = tempPath.toString() + "/" + "EndToEndGitTest";
docDir = Paths.get(repoGitLocation);
indexGitRepoJob.indexDocsByDelta(docDir, "EndToEndGitTest", tempPath.toString(), "", repositoryChanged);
searchResult = cs.search("endtoendtestfile", 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(3);
Singleton.getCodeIndexer().deleteByReponame("EndToEndGitTest");
searchResult = cs.search("endtoendtestfile".toLowerCase(), 0);
assertThat(searchResult.getCodeResultList().size()).isEqualTo(0);
}
Aggregations