package com.constellio.app.api.extensions.taxonomies; import com.constellio.app.ui.pages.search.criteria.Criterion; import com.constellio.model.entities.records.wrappers.SavedSearch; import com.constellio.model.services.schemas.SchemaUtils; import com.constellio.model.services.search.SPEQueryResponse; import com.constellio.model.services.search.query.logical.LogicalSearchQuery; import com.constellio.model.services.search.query.logical.condition.SolrQueryBuilderParams; import org.joda.time.LocalDateTime; import java.util.List; /** * Created by Constelio on 2016-10-19. */ public class UserSearchEvent { private SPEQueryResponse speQueryResponse; private LogicalSearchQuery query; private SavedSearch savedSearch; private LocalDateTime queryDateTime; private String language; private String username; public UserSearchEvent(SPEQueryResponse speQueryResponse, LogicalSearchQuery query, SavedSearch savedSearch, LocalDateTime queryDateTime, String language, String username) { this.speQueryResponse = speQueryResponse; this.query = query; this.savedSearch = savedSearch; this.queryDateTime = queryDateTime; this.language = language; this.username = username; } public SPEQueryResponse getSpeQueryResponse() { return speQueryResponse; } public LogicalSearchQuery getQuery() { return new LogicalSearchQuery(query); } public LocalDateTime getQueryDateTime() { return queryDateTime; } public SavedSearch getSavedSearch() { return savedSearch; } public String getUserID() { return savedSearch.getUser(); } public String getUsername() { return username; } public String getCollection() { return savedSearch.getCollection(); } public long getNumFound() { return speQueryResponse.getNumFound(); } public long getQtime() { return speQueryResponse.getQtime(); } public String getSolrQuery() { return query.getCondition().getSolrQuery(new SolrQueryBuilderParams(true, language)); } public List<Criterion> getCriterionList() { return savedSearch.getAdvancedSearch(); } public String getCriterionListAsString() { List<Criterion> criterionList = getCriterionList(); StringBuilder sb = new StringBuilder(); for (Criterion criterion : criterionList) { sb.append(convertCriterionToString(criterion)); } return sb.toString(); } private String convertCriterionToString(Criterion criterion) { StringBuilder sb = new StringBuilder(); if (criterion.isLeftParens()) { sb.append("("); } sb.append(new SchemaUtils().getLocalCodeFromMetadataCode(criterion.getMetadataCode())); sb.append(" " + criterion.getSearchOperator().toString() + " "); sb.append(criterion.getValue()); if (criterion.isRightParens()) { sb.append(")"); } sb.append(" " + criterion.getBooleanOperator().toString() + " "); return sb.toString(); } public String getLanguage() { return language; } public UserSearchEvent setLanguage(String language) { this.language = language; return this; } }