BrowseFacetController.java
package info.textgrid.rep.browsefacet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import info.textgrid.namespaces.middleware.tgsearch.FacetResponse;
import info.textgrid.namespaces.middleware.tgsearch.FacetType;
import info.textgrid.rep.i18n.I18N;
import info.textgrid.rep.i18n.LocaleResolver;
import info.textgrid.rep.service.TgrepConfigurationService;
import info.textgrid.rep.service.TgsearchClientService;
import io.quarkus.qute.Template;
import io.quarkus.qute.TemplateInstance;
import jakarta.inject.Inject;
import jakarta.ws.rs.DefaultValue;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
@Path("/facet")
public class BrowseFacetController {
@Inject
private TgsearchClientService tgsearchClientService;
@Inject
private TgrepConfigurationService tgrepConfig;
@Inject
private LocaleResolver localeResolver;
@Inject
Template browsefacet;
@Path("/{facet}")
@GET
@Produces(MediaType.TEXT_HTML)
public TemplateInstance render(
@PathParam("facet") String facet,
@QueryParam("limit") @DefaultValue("0") int limit,
@QueryParam("order") @DefaultValue("count.desc") String order) {
I18N i18n = localeResolver.getI18N();
// list facets configured for this portlet
List<String> facetList = new ArrayList<String>();
facetList.add(facet);
FacetResponse facetResponse = tgsearchClientService.listFacet(facetList, limit, order);
List<FacetType> facets = facetResponse.getFacetGroup().get(0).getFacet();
Map<String, Object> model = new HashMap<String, Object>();
model.put("facets", facets);
model.put("facet", facet);
model.put("i18n", i18n.getTranslationMap());
model.put("language", localeResolver.getLocale().getLanguage());
model.put("config", tgrepConfig);
model.put("localeResolver", localeResolver);
return browsefacet.data(model);
}
}