Coverage Summary for Class: SearchForm (org.kitodo.production.forms)
Class |
Class, %
|
Method, %
|
Line, %
|
SearchForm |
0%
(0/1)
|
0%
(0/49)
|
0%
(0/109)
|
/*
* (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.forms;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;
import javax.faces.model.SelectItem;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kitodo.config.ConfigCore;
import org.kitodo.config.enums.ParameterCore;
import org.kitodo.data.database.beans.User;
import org.kitodo.data.database.enums.TaskStatus;
import org.kitodo.data.database.exceptions.DAOException;
import org.kitodo.data.exceptions.DataException;
import org.kitodo.production.dto.ProjectDTO;
import org.kitodo.production.enums.FilterString;
import org.kitodo.production.helper.Helper;
import org.kitodo.production.services.ServiceManager;
@Named("SearchForm")
@RequestScoped
public class SearchForm {
/**
* Logger instance.
*/
private static final Logger logger = LogManager.getLogger(SearchForm.class);
private List<String> projects = new ArrayList<>(); // proj:
private String project = "";
private List<String> processPropertyTitles = new ArrayList<>(); // processeig:
private String processPropertyTitle = "";
private String processPropertyValue = "";
private List<String> stepTitles = new ArrayList<>(); // step:
private List<TaskStatus> stepstatus = new ArrayList<>();
private String status = "";
private String stepname = "";
private List<User> user = new ArrayList<>();
private String stepdonetitle = "";
private String stepdoneuser = "";
private String idin = "";
private String processParentId = "";
private String processTitle = ""; // proc:
private String projectOperand = "";
private String processOperand = "";
private String processPropertyOperand = "";
private String masterpiecePropertyOperand = "";
private String templatePropertyOperand = "";
private String stepOperand = "";
private final ProcessForm processForm;
private final CurrentTaskForm taskForm;
/**
* Constructor with inject process form.
*
* @param processForm
* managed bean
*/
@Inject
public SearchForm(ProcessForm processForm, CurrentTaskForm taskForm) {
this.stepstatus.addAll(ServiceManager.getFilterService().initStepStatus());
this.projects = ServiceManager.getFilterService().initProjects();
this.stepTitles = ServiceManager.getFilterService().initStepTitles();
this.processPropertyTitles = ServiceManager.getFilterService().initProcessPropertyTitles();
this.user.addAll(ServiceManager.getFilterService().initUserList());
this.processForm = processForm;
this.taskForm = taskForm;
}
public List<String> getProjects() {
return this.projects;
}
public void setProjects(List<String> projects) {
this.projects = projects;
}
public List<String> getProcessPropertyTitles() {
return this.processPropertyTitles;
}
public void setProcessPropertyTitles(List<String> processPropertyTitles) {
this.processPropertyTitles = processPropertyTitles;
}
public List<String> getStepTitles() {
return this.stepTitles;
}
public void setStepTitles(List<String> stepTitles) {
this.stepTitles = stepTitles;
}
public List<TaskStatus> getStepstatus() {
return this.stepstatus;
}
public void setStepstatus(List<TaskStatus> stepstatus) {
this.stepstatus = stepstatus;
}
public String getStepdonetitle() {
return this.stepdonetitle;
}
public void setStepdonetitle(String stepdonetitle) {
this.stepdonetitle = stepdonetitle;
}
public String getStepdoneuser() {
return this.stepdoneuser;
}
public void setStepdoneuser(String stepdoneuser) {
this.stepdoneuser = stepdoneuser;
}
public String getIdin() {
return this.idin;
}
public void setIdin(String idin) {
this.idin = idin;
}
public String getProcessParentId() {
return processParentId;
}
public void setProcessParentId(String processParentId) {
this.processParentId = processParentId;
}
public String getProject() {
return this.project;
}
public void setProject(String project) {
this.project = project;
}
public String getProcessTitle() {
return this.processTitle;
}
public void setProcessTitle(String processTitle) {
this.processTitle = processTitle;
}
public String getProcessPropertyTitle() {
return this.processPropertyTitle;
}
public void setProcessPropertyTitle(String processPropertyTitle) {
this.processPropertyTitle = processPropertyTitle;
}
public String getProcessPropertyValue() {
return this.processPropertyValue;
}
public void setProcessPropertyValue(String processPropertyValue) {
this.processPropertyValue = processPropertyValue;
}
public String getStatus() {
return this.status;
}
public void setStatus(String status) {
this.status = status;
}
public String getStepname() {
return this.stepname;
}
public void setStepname(String stepname) {
this.stepname = stepname;
}
public List<User> getUser() {
return this.user;
}
public void setUser(List<User> user) {
this.user = user;
}
/**
* Filter processes.
*
* @return filter as java.lang.String
*/
public String filterProcesses() {
processForm.changeFilter(createFilter());
return processForm.getProcessesPage();
}
/**
* Filter tasks.
*
* @return filter as java.lang.String
*/
public String filterTasks() {
taskForm.changeFilter(createFilter());
return taskForm.getTaskListPath();
}
private String createFilter() {
String search = "";
if (!this.processTitle.isEmpty()) {
search += "\"" + this.processOperand + this.processTitle + "\" ";
}
if (!this.idin.isEmpty()) {
search += "\"" + FilterString.ID.getFilterEnglish() + this.idin + "\" ";
}
if (!this.processParentId.isEmpty()) {
search += "\"" + FilterString.PARENTPROCESSID.getFilterEnglish() + this.processParentId + "\" ";
}
if (!this.project.isEmpty()) {
search += "\"" + this.projectOperand + FilterString.PROJECT.getFilterEnglish() + this.project + "\" ";
}
if (!this.stepname.isEmpty()) {
search += "\"" + this.stepOperand + this.status + ":" + this.stepname + "\" ";
}
if (!this.stepdonetitle.isEmpty() && !this.stepdoneuser.isEmpty()
&& ConfigCore.getBooleanParameterOrDefaultValue(ParameterCore.WITH_USER_STEP_DONE_SEARCH)) {
search += "\"" + FilterString.TASKDONEUSER.getFilterEnglish() + this.stepdoneuser + "\" \""
+ FilterString.TASKDONETITLE.getFilterEnglish() + this.stepdonetitle + "\" ";
}
if (StringUtils.isNotBlank(this.processPropertyValue)) {
if (StringUtils.isNotBlank(this.processPropertyTitle)) {
search += "\"" + this.processPropertyOperand + FilterString.PROPERTY.getFilterEnglish()
+ this.processPropertyTitle + ":" + this.processPropertyValue + "\" ";
} else {
search += "\"" + this.processPropertyOperand + FilterString.PROPERTY.getFilterEnglish()
+ "*:" + this.processPropertyValue + "\" ";
}
} else {
if (StringUtils.isNotBlank(this.processPropertyTitle)) {
search += "\"" + this.processPropertyOperand + FilterString.PROPERTY.getFilterEnglish()
+ this.processPropertyTitle + ":*\" ";
}
}
return search;
}
private String createSearchProperty(String title, String value, String operand, FilterString filterString) {
if (Objects.nonNull(value) && !value.isEmpty()) {
if (Objects.nonNull(title) && !title.isEmpty()) {
return "\"" + operand + filterString.getFilterEnglish() + title + ":" + value + "\" ";
} else {
return "\"" + operand + filterString.getFilterEnglish() + value + "\" ";
}
}
return "";
}
/**
* Get operands.
*
* @return list of SelectItem objects
*/
public List<SelectItem> getOperands() {
List<SelectItem> answer = new ArrayList<>();
SelectItem and = new SelectItem("", Helper.getTranslation("AND"));
SelectItem not = new SelectItem("-", Helper.getTranslation("NOT"));
answer.add(and);
answer.add(not);
return answer;
}
public String getProjectOperand() {
return this.projectOperand;
}
public void setProjectOperand(String projectOperand) {
this.projectOperand = projectOperand;
}
public String getProcessPropertyOperand() {
return this.processPropertyOperand;
}
public void setProcessPropertyOperand(String processPropertyOperand) {
this.processPropertyOperand = processPropertyOperand;
}
public String getMasterpiecePropertyOperand() {
return this.masterpiecePropertyOperand;
}
public void setMasterpiecePropertyOperand(String masterpiecePropertyOperand) {
this.masterpiecePropertyOperand = masterpiecePropertyOperand;
}
public String getTemplatePropertyOperand() {
return this.templatePropertyOperand;
}
public void setTemplatePropertyOperand(String templatePropertyOperand) {
this.templatePropertyOperand = templatePropertyOperand;
}
public String getStepOperand() {
return this.stepOperand;
}
public void setStepOperand(String stepOperand) {
this.stepOperand = stepOperand;
}
public String getProcessOperand() {
return this.processOperand;
}
public void setProcessOperand(String processOperand) {
this.processOperand = processOperand;
}
}