package org.xcolab.client.search;
import org.xcolab.client.search.pojo.SearchPojo;
import org.xcolab.util.clients.CoLabService;
import org.xcolab.util.http.ServiceRequestUtils;
import org.xcolab.util.http.client.RestResource;
import org.xcolab.util.http.client.RestResource1;
import org.xcolab.util.http.client.RestService;
import org.xcolab.util.http.client.queries.ListQuery;
import org.xcolab.util.http.exceptions.EntityNotFoundException;
import java.util.List;
public final class SearchClient {
private static final RestService searchService = new RestService(CoLabService.SEARCH,
ServiceRequestUtils.getNamespace());
private static final RestResource<SearchPojo, Long> searchResource = new RestResource1<>(searchService,
"search", SearchPojo.TYPES);
public static List<SearchPojo> search(Integer startRecord, Integer limitRecord, String filter, String query) {
ListQuery<SearchPojo> searchPojoListQuery = searchResource.list();
if (startRecord != null && limitRecord != null) {
searchPojoListQuery.addRange(startRecord,limitRecord);
}
if (filter != null) {
searchPojoListQuery.optionalQueryParam("filter", filter);
}
if (query != null) {
searchPojoListQuery.optionalQueryParam("query", query);
}
return searchPojoListQuery.execute();
}
public static Integer searchCount(String sort, String query) {
try {
return searchResource.service("count", Integer.class)
.optionalQueryParam("sort", sort)
.optionalQueryParam("query", query)
.getChecked();
} catch (EntityNotFoundException e) {
return 0;
}
}
}