Skip to content

Commit

Permalink
Update search RESTful API.
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas committed Jun 17, 2017
1 parent 13aa75f commit 13c0cad
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,43 @@

public class SearchResult {

private String repository;
private String commitId;
private String seItemUri;

public SearchResult() {
}

public String getRepository() {
return repository;
}

public void setRepository(String repository) {
this.repository = repository;
}

public String getCommitId() {
return commitId;
}

public void setCommitId(String commitId) {
this.commitId = commitId;
}

public String getSeItemUri() {
return seItemUri;
}

public void setSeItemUri(String seItemUri) {
this.seItemUri = seItemUri;
}
private String repository;
private String commitId;
private String seItemUri;
private String seItemName;

public SearchResult() {}

public String getRepository() {
return repository;
}

public void setRepository(String repository) {
this.repository = repository;
}

public String getCommitId() {
return commitId;
}

public void setCommitId(String commitId) {
this.commitId = commitId;
}

public String getSeItemUri() {
return seItemUri;
}

public void setSeItemUri(String seItemUri) {
this.seItemUri = seItemUri;
}

public String getSeItemName() {
return seItemName;
}

public void setSeItemName(String seItemName) {
this.seItemName = seItemName;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.DELETE;
Expand All @@ -21,10 +20,8 @@
import ch.hsr.isf.serepo.commons.Uri;
import ch.hsr.isf.serepo.data.restinterface.search.SearchContainer;
import ch.hsr.isf.serepo.rest.resources.Resource;
import ch.hsr.isf.serepo.search.SearchConfig;
import ch.hsr.isf.serepo.search.index.DeleteException;
import ch.hsr.isf.serepo.search.index.DocumentDeleter;
import ch.hsr.isf.serepo.search.request.FilterQueries;
import ch.hsr.isf.serepo.search.request.SearchException;
import ch.hsr.isf.serepo.search.request.SearchResult;
import ch.hsr.isf.serepo.search.request.Searcher;
Expand All @@ -49,32 +46,13 @@ public class SearchResource extends Resource {
, @ApiResponse(code = 500, message = "If the query cannot be understood or if something is wrong with the underlying search engine.")
})
@GET
public Response get(@QueryParam("repository") String repository,
@QueryParam("commitId") String commitId,
@ApiParam(value = "To specify the documenttype (metadata, content)", allowableValues = "metadata, content",
required = false) @QueryParam("in") String in,
@ApiParam(value = "Query", required = true) @QueryParam("q") String q)
public Response get(@ApiParam(value = "Query", required = true) @QueryParam("q") String q)
throws URISyntaxException {

Response response = null;

Searcher searchRequest = new Searcher(getApp().getSolrUrl());

List<String> filterQueries = new ArrayList<>();

if (repository != null) {
filterQueries.add(
FilterQueries.create(SearchConfig.Fields.REPOSITORY, emptyToWildcard(repository)));
}
if (commitId != null) {
filterQueries.add(
FilterQueries.create(SearchConfig.Fields.COMMIT_ID, emptyToWildcard(commitId)));
}
if (in != null) {
filterQueries.add(
FilterQueries.create(SearchConfig.Fields.SEITEM_DOCUMENTTYPE, emptyToWildcard(in.toUpperCase())));
}

if (q == null) {
return Response.status(Status.BAD_REQUEST)
.entity("q (Query) parameter is missing!")
Expand All @@ -83,17 +61,17 @@ public Response get(@QueryParam("repository") String repository,
}

try {
List<SearchResult> searchResults =
searchRequest.search(q, filterQueries.toArray(new String[filterQueries.size()]));
List<SearchResult> searchResults = searchRequest.search(q);
SearchContainer searchContainer = new SearchContainer();
for (SearchResult searchResult : searchResults) {
URI uri = Uri.of(getUriInfo().getBaseUri(), "repos", searchResult.getRepository(),
"commits", searchResult.getCommitId(), "seitems", searchResult.getId());
"commits", searchResult.getCommitid(), "seitems", searchResult.getSeItemId());
ch.hsr.isf.serepo.data.restinterface.search.SearchResult searchResultApi =
new ch.hsr.isf.serepo.data.restinterface.search.SearchResult();
searchResultApi.setRepository(searchResult.getRepository());
searchResultApi.setCommitId(searchResult.getCommitId());
searchResultApi.setCommitId(searchResult.getCommitid());
searchResultApi.setSeItemUri(uri.toString());
searchResultApi.setSeItemName(searchResult.getSeItemName());
searchContainer.getSearchResult()
.add(searchResultApi);
}
Expand Down Expand Up @@ -151,11 +129,4 @@ public Response delete(@ApiParam(required = true) @QueryParam("repository") Stri

}

private String emptyToWildcard(String value) {
if (value.isEmpty()) {
return "*";
}
return value;
}

}

0 comments on commit 13c0cad

Please sign in to comment.