Coverage Summary for Class: LazyHitModel (org.kitodo.production.model)
Class |
Class, %
|
Method, %
|
Line, %
|
LazyHitModel |
100%
(1/1)
|
7,1%
(1/14)
|
17,9%
(5/28)
|
/*
* (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.model;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import org.kitodo.api.externaldatamanagement.SearchResult;
import org.kitodo.api.externaldatamanagement.SingleHit;
import org.kitodo.data.database.beans.ImportConfiguration;
import org.kitodo.production.services.ServiceManager;
import org.kitodo.production.services.data.ImportService;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;
public class LazyHitModel extends LazyDataModel<Object> {
private ImportConfiguration importConfiguration;
private String selectedField = "";
private String searchTerm = "";
private int importDepth = 2;
private SearchResult searchResult = null;
/**
* Empty default constructor. Sets default catalog and search field, if configured.
*/
public LazyHitModel() {
}
@Override
public Object getRowData(String rowKey) {
return null;
}
@Override
public Object getRowKey(Object inObject) {
return null;
}
@Override
public int getRowCount() {
if (Objects.nonNull(this.searchResult)) {
return this.searchResult.getNumberOfHits();
} else {
return 0;
}
}
@Override
public List<Object> load(int first, int resultSize, String sortField, SortOrder sortOrder, Map filters) {
searchResult = ServiceManager.getImportService().performSearch(
this.selectedField, this.searchTerm, this.importConfiguration, first, resultSize);
if (Objects.isNull(searchResult) || Objects.isNull(searchResult.getHits())) {
return Collections.emptyList();
}
return searchResult.getHits().stream().map(r -> (Object)r).collect(Collectors.toList());
}
/**
* Get list of hits from last search result.
*
* @return list of hits
*/
public List<SingleHit> getHits() {
if (Objects.nonNull(this.searchResult)) {
return this.searchResult.getHits();
} else {
return Collections.emptyList();
}
}
/**
* Getter for importConfiguration.
*
* @return value of importConfiguration
*/
public ImportConfiguration getImportConfiguration() {
return importConfiguration;
}
/**
* Setter for importConfiguration. This also sets the catalogs default search field, if configured.
*
* @param importConfiguration ImportConfiguration
*/
public void setImportConfiguration(ImportConfiguration importConfiguration) {
this.importConfiguration = importConfiguration;
if (Objects.nonNull(importConfiguration)) {
this.setSelectedField(ImportService.getDefaultSearchField(importConfiguration));
this.setImportDepth(ServiceManager.getImportService().getDefaultImportDepth(importConfiguration));
}
}
/**
* Get searchTerm.
*
* @return value of searchTerm
*/
public String getSearchTerm() {
return this.searchTerm;
}
/**
* Set searchTerm.
*
* @param searchTerm as java.lang.String
*/
public void setSearchTerm(String searchTerm) {
this.searchTerm = searchTerm;
}
/**
* Get selectedField.
*
* @return value of selectedField
*/
public String getSelectedField() {
return this.selectedField;
}
/**
* Set selectedField.
*
* @param field as java.lang.String
*/
public void setSelectedField(String field) {
this.selectedField = field;
}
/**
* Get import depth.
*
* @return import depth
*/
public int getImportDepth() {
return importDepth;
}
/**
* Set import depth.
*
* @param depth import depth
*/
public void setImportDepth(int depth) {
importDepth = depth;
}
}