Coverage Summary for Class: ClientSearchService (org.kitodo.production.services.data.base)

Class Class, % Method, % Line, %
ClientSearchService 100% (1/1) 82,4% (14/17) 85,7% (18/21)


 /*
  * (c) Kitodo. Key to digital objects e. V. <contact@kitodo.org>
  *
  * This file is part of the Kitodo project.
  *
  * It is licensed under GNU General Public License version 3 or later.
  *
  * For the full copyright and license information, please read the
  * GPL3-License.txt file that was distributed with this source code.
  */
 
 package org.kitodo.production.services.data.base;
 
 import static org.elasticsearch.index.query.QueryBuilders.matchQuery;
 
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.Operator;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.search.sort.SortBuilder;
 import org.kitodo.data.database.beans.BaseBean;
 import org.kitodo.data.database.beans.BaseIndexedBean;
 import org.kitodo.data.database.persistence.BaseDAO;
 import org.kitodo.data.elasticsearch.index.Indexer;
 import org.kitodo.data.elasticsearch.index.type.BaseType;
 import org.kitodo.data.elasticsearch.search.Searcher;
 import org.kitodo.data.elasticsearch.search.enums.SearchCondition;
 import org.kitodo.data.exceptions.DataException;
 import org.kitodo.production.dto.BaseDTO;
 import org.kitodo.production.services.ServiceManager;
 
 public abstract class ClientSearchService<T extends BaseIndexedBean, S extends BaseDTO, V extends BaseDAO<T>>
         extends TitleSearchService<T, S, V> {
 
     private final String clientKey;
 
     /**
      * Constructor necessary to use searcher in child classes.
      *
      * @param dao
      *            DAO object for executing operations on database
      * @param type
      *            Type object for ElasticSearch
      * @param indexer
      *            for executing insert / updates to ElasticSearch
      * @param searcher
      *            for executing queries to ElasticSearch
      */
     public ClientSearchService(V dao, BaseType type, Indexer indexer, Searcher searcher, String clientKey) {
         super(dao, type, indexer, searcher);
         this.clientKey = clientKey;
     }
 
     /**
      * Get list of all objects for selected client from database.
      *
      * @return list of all objects for selected client from database
      */
     public abstract List<T> getAllForSelectedClient();
 
     private QueryBuilder createClientQuery() {
         int sessionClientId = ServiceManager.getUserService().getSessionClientId();
         return matchQuery(clientKey, sessionClientId);
     }
 
     private QueryBuilder queryForClient(QueryBuilder query) {
         BoolQueryBuilder boolQuery = new BoolQueryBuilder();
         boolQuery.must(query);
         return boolQuery.must(createClientQuery());
     }
 
     @Override
     protected QueryBuilder createSetQuery(String key, Set<?> values, boolean contains) {
         return queryForClient(super.createSetQuery(key, values, contains));
     }
 
     @Override
     protected QueryBuilder createSetQuery(String key, List<Map<String, Object>> values, boolean contains) {
         return queryForClient(super.createSetQuery(key, values, contains));
     }
 
     @Override
     protected QueryBuilder createSetQueryForBeans(String key, List<? extends BaseBean> values, boolean contains) {
         return queryForClient(super.createSetQueryForBeans(key, values, contains));
     }
 
     @Override
     protected QueryBuilder createSimpleQuery(String key, Integer id, boolean contains) {
         return queryForClient(super.createSimpleQuery(key, id, contains));
     }
 
     @Override
     protected QueryBuilder createSimpleQuery(String key, Boolean condition, boolean contains) {
         return queryForClient(super.createSimpleQuery(key, condition, contains));
     }
 
     @Override
     protected QueryBuilder createSimpleQuery(String key, String value, boolean contains) {
         return queryForClient(super.createSimpleQuery(key, value, contains));
     }
 
     @Override
     protected QueryBuilder createSimpleQuery(String key, String value, boolean contains, Operator operator) {
         return queryForClient(super.createSimpleQuery(key, value, contains, operator));
     }
 
     @Override
     protected QueryBuilder createSimpleCompareDateQuery(String key, Date date, SearchCondition searchCondition) {
         return queryForClient(super.createSimpleCompareDateQuery(key, date, searchCondition));
     }
 
     @Override
     protected QueryBuilder createSimpleCompareQuery(String key, Integer value, SearchCondition searchCondition) {
         return queryForClient(super.createSimpleCompareQuery(key, value, searchCondition));
     }
 
     @Override
     protected QueryBuilder createSimpleWildcardQuery(String key, String value) {
         return queryForClient(super.createSimpleWildcardQuery(key, value));
     }
 
     @Override
     public List<S> findByQuery(QueryBuilder query, boolean related) throws DataException {
         return super.findByQuery(queryForClient(query), related);
     }
 
     @Override
     public List<S> findByQuery(QueryBuilder query, SortBuilder sort, boolean related) throws DataException {
         return super.findByQuery(queryForClient(query), sort, related);
     }
 
     @Override
     public List<S> findByQuery(QueryBuilder query, SortBuilder sort, Integer offset, Integer size, boolean related) throws DataException {
         return super.findByQuery(queryForClient(query), sort, offset, size, related);
     }
 
     @Override
     public Long countDocuments(QueryBuilder query) throws DataException {
         return super.countDocuments(queryForClient(query));
     }
 }