This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
Commit 8d27cf54 authored by Michael Breu's avatar Michael Breu :speech_balloon:
Browse files

Improving Test Coverage

parent 515c8cb2
Branches
Tags
2 merge requests!188Merging Peer Reviewing et. al to Master,!164211 peer reviewing functionality
package at.ac.uibk.gitsearch.repository.search;
public final class GitFilesRepositoryConstants {
public static final String INDEX_FULLTEXT = "fulltext";
public static final String INDEX_METADATA = "metadata";
public static final String FULLTEXT_CONTENT = "content";
public static final String FULLTEXT_PROJECT_ID = "project.project_id";
public static final String FULLTEXT_SUB_GROUP_AGG = "by_project.sub_group";
public static final String FULLTEXT_SUB_GROUP = "project.sub_group";
public static final String FULLTEXT_FILE_EXTENSION_AGG = "by_file.file_format";
public static final String FULLTEXT_FILE_EXTENSION = "file.file_format";
public static final String FULLTEXT_REPOSITORY_AGG = "by_project.project_name";
public static final String FULLTEXT_REPOSITORY = "project.project_name";
public static final String METADATA_PROGRAMMING_LANGUAGES = "metadata.programmingLanguage";
public static final String METADATA_KEYWORDS = "metadata.keyword";
public static final String METADATA_PROJECT_ID = "project.project_id";
public static final String METADATA_CREATOR = "metadata.creator.name";
public static final String METADATA_LICENSE = "metadata.license";
}
......@@ -44,20 +44,20 @@ public class GitFilesRepositoryImpl implements GitFilesRepository {
@Override
public GitFilesPageDetailsDTO pageDetails(SearchInputDTO searchInputDTO, int pageSize) throws IOException {
Collection<String> projectIDs = searchProjectsIDsMetadata(searchInputDTO);
SearchRequest searchRequest = new SearchRequest(GitFilesRepositoryConstants.INDEX_FULLTEXT);
SearchRequest searchRequest = new SearchRequest(SearchRepositoryConstants.INDEX_FULLTEXT);
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders
.simpleQueryStringQuery(searchInputDTO.getFulltextQuery())
.field(GitFilesRepositoryConstants.FULLTEXT_CONTENT));
.field(SearchRepositoryConstants.FULLTEXT_CONTENT));
addFulltextSelection(queryBuilder, searchInputDTO.getSelectedRepository(), GitFilesRepositoryConstants.FULLTEXT_REPOSITORY);
addFulltextSelection(queryBuilder, searchInputDTO.getSelectedRepository(), GitFilesRepositoryConstants.FULLTEXT_SUB_GROUP);
addFulltextSelection(queryBuilder, searchInputDTO.getSelectedFileFormat(), GitFilesRepositoryConstants.FULLTEXT_FILE_EXTENSION);
addFulltextSelection(queryBuilder, searchInputDTO.getSelectedRepository(), SearchRepositoryConstants.FULLTEXT_REPOSITORY);
addFulltextSelection(queryBuilder, searchInputDTO.getSelectedRepository(), SearchRepositoryConstants.FULLTEXT_SUB_GROUP);
addFulltextSelection(queryBuilder, searchInputDTO.getSelectedFileFormat(), SearchRepositoryConstants.FULLTEXT_FILE_EXTENSION);
if (projectIDs != null) {
queryBuilder
.filter(QueryBuilders.termsQuery(GitFilesRepositoryConstants.FULLTEXT_PROJECT_ID, projectIDs));
.filter(QueryBuilders.termsQuery(SearchRepositoryConstants.FULLTEXT_PROJECT_ID, projectIDs));
}
char[] boundaryChars = {'\n'};
......@@ -66,7 +66,7 @@ public class GitFilesRepositoryImpl implements GitFilesRepository {
.highlighterType("plain")
.preTags(properties.getSearch().getHighlightPre())
.postTags(properties.getSearch().getHighlightPost())
.field(GitFilesRepositoryConstants.FULLTEXT_CONTENT)
.field(SearchRepositoryConstants.FULLTEXT_CONTENT)
.boundaryChars(boundaryChars)
.boundaryScannerType(HighlightBuilder.BoundaryScannerType.SENTENCE)
.fragmentSize(FRAGMENT_SIZE);
......@@ -107,22 +107,22 @@ public class GitFilesRepositoryImpl implements GitFilesRepository {
@Override
public GitFilesAggregationDTO aggregation(String query) throws IOException {
SearchRequest searchRequest = new SearchRequest(GitFilesRepositoryConstants.INDEX_FULLTEXT);
SearchRequest searchRequest = new SearchRequest(SearchRepositoryConstants.INDEX_FULLTEXT);
BoolQueryBuilder matchQueryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.simpleQueryStringQuery(query).field(GitFilesRepositoryConstants.FULLTEXT_CONTENT));
.must(QueryBuilders.simpleQueryStringQuery(query).field(SearchRepositoryConstants.FULLTEXT_CONTENT));
TermsAggregationBuilder groupSubGroup = AggregationBuilders
.terms(GitFilesRepositoryConstants.FULLTEXT_SUB_GROUP_AGG)
.field(GitFilesRepositoryConstants.FULLTEXT_SUB_GROUP);
.terms(SearchRepositoryConstants.FULLTEXT_SUB_GROUP_AGG)
.field(SearchRepositoryConstants.FULLTEXT_SUB_GROUP);
TermsAggregationBuilder groupFileExtension = AggregationBuilders
.terms(GitFilesRepositoryConstants.FULLTEXT_FILE_EXTENSION_AGG)
.field(GitFilesRepositoryConstants.FULLTEXT_FILE_EXTENSION);
.terms(SearchRepositoryConstants.FULLTEXT_FILE_EXTENSION_AGG)
.field(SearchRepositoryConstants.FULLTEXT_FILE_EXTENSION);
TermsAggregationBuilder groupRepository = AggregationBuilders
.terms(GitFilesRepositoryConstants.FULLTEXT_REPOSITORY_AGG)
.field(GitFilesRepositoryConstants.FULLTEXT_REPOSITORY);
.terms(SearchRepositoryConstants.FULLTEXT_REPOSITORY_AGG)
.field(SearchRepositoryConstants.FULLTEXT_REPOSITORY);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()
.query(matchQueryBuilder)
......@@ -142,15 +142,15 @@ public class GitFilesRepositoryImpl implements GitFilesRepository {
if (!searchInputDTO.hasMetadataInput()) {
return null;
}
SearchRequest searchRequest = new SearchRequest(GitFilesRepositoryConstants.INDEX_METADATA);
SearchRequest searchRequest = new SearchRequest(SearchRepositoryConstants.INDEX_METADATA);
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
addMetadataQueryShould(queryBuilder, searchInputDTO.getMetadata().getProgrammingLanguage(), GitFilesRepositoryConstants.METADATA_PROGRAMMING_LANGUAGES);
addMetadataQueryShould(queryBuilder, searchInputDTO.getMetadata().getKeyword(), GitFilesRepositoryConstants.METADATA_KEYWORDS);
addMetadataQueryMust(queryBuilder, searchInputDTO.getMetadata().getAuthor(), GitFilesRepositoryConstants.METADATA_CREATOR);
addMetadataQueryMust(queryBuilder, searchInputDTO.getMetadata().getLicense(), GitFilesRepositoryConstants.METADATA_LICENSE);
addMetadataQueryShould(queryBuilder, searchInputDTO.getMetadata().getProgrammingLanguage(), SearchRepositoryConstants.METADATA_PROGRAMMING_LANGUAGES);
addMetadataQueryShould(queryBuilder, searchInputDTO.getMetadata().getKeyword(), SearchRepositoryConstants.METADATA_KEYWORDS);
addMetadataQueryMust(queryBuilder, searchInputDTO.getMetadata().getAuthor(), SearchRepositoryConstants.METADATA_CREATOR);
addMetadataQueryMust(queryBuilder, searchInputDTO.getMetadata().getLicense(), SearchRepositoryConstants.METADATA_LICENSE);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()
.query(queryBuilder)
.fetchSource(GitFilesRepositoryConstants.METADATA_PROJECT_ID, null);
.fetchSource(SearchRepositoryConstants.METADATA_PROJECT_ID, null);
// TODO: Allow more than 10 entries.
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = elasticsearchClient.search(searchRequest, RequestOptions.DEFAULT);
......
package at.ac.uibk.gitsearch.service.dto;
import at.ac.uibk.gitsearch.repository.search.GitFilesRepositoryConstants;
import at.ac.uibk.gitsearch.repository.search.SearchRepositoryConstants;
import org.elasticsearch.search.aggregations.Aggregations;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
......@@ -16,16 +16,16 @@ public class GitFilesAggregationDTO {
@SuppressWarnings("unchecked")
public GitFilesAggregationDTO(Aggregations aggregations) {
Terms terms = aggregations.get(GitFilesRepositoryConstants.FULLTEXT_SUB_GROUP_AGG);
Terms terms = aggregations.get(SearchRepositoryConstants.FULLTEXT_SUB_GROUP_AGG);
Collection<Terms.Bucket> buckets = (Collection<Terms.Bucket>) terms.getBuckets();
this.university = buckets.stream().map(bucket -> new FrequencyDTO<>(bucket.getKeyAsString(), bucket.getDocCount())).collect(Collectors.toList());
terms = aggregations.get(GitFilesRepositoryConstants.FULLTEXT_REPOSITORY_AGG);
terms = aggregations.get(SearchRepositoryConstants.FULLTEXT_REPOSITORY_AGG);
buckets = (Collection<Terms.Bucket>) terms.getBuckets();
this.repositories = buckets.stream().map(bucket -> new FrequencyDTO<>(bucket.getKeyAsString(), bucket.getDocCount())).collect(Collectors.toList());
terms = aggregations.get(GitFilesRepositoryConstants.FULLTEXT_FILE_EXTENSION_AGG);
terms = aggregations.get(SearchRepositoryConstants.FULLTEXT_FILE_EXTENSION_AGG);
buckets = (Collection<Terms.Bucket>) terms.getBuckets();
this.fileFormat = buckets.stream().map(bucket -> new FrequencyDTO<>(bucket.getKeyAsString(), bucket.getDocCount())).collect(Collectors.toList());
}
......
package at.ac.uibk.gitsearch.service.dto;
import at.ac.uibk.gitsearch.config.ApplicationProperties;
import at.ac.uibk.gitsearch.es.model.DocumentInfo;
import at.ac.uibk.gitsearch.repository.search.GitFilesRepositoryConstants;
import java.util.Map;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import java.util.Map;
import at.ac.uibk.gitsearch.config.ApplicationProperties;
import at.ac.uibk.gitsearch.es.model.DocumentInfo;
import at.ac.uibk.gitsearch.repository.search.SearchRepositoryConstants;
public class GitFilesDTO {
......@@ -25,7 +26,7 @@ public class GitFilesDTO {
this.content = documentInfo.getContent();
Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
String highlightedFragement = highlightFields.get(GitFilesRepositoryConstants.FULLTEXT_CONTENT).getFragments()[0].string();
String highlightedFragement = highlightFields.get(SearchRepositoryConstants.FULLTEXT_CONTENT).getFragments()[0].string();
this.fragment = new FragmentDTO().matchFillLine(documentInfo.getContent(), highlightedFragement, properties.getSearch());
this.fileFormat = documentInfo.getFile().getFile_format();
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment