Coverage Summary for Class: BatchProcessHelper (org.kitodo.production.helper.batch)
Class |
Class, %
|
Method, %
|
Line, %
|
BatchProcessHelper |
0%
(0/1)
|
0%
(0/14)
|
0%
(0/70)
|
/*
* (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.helper.batch;
import java.util.List;
import java.util.Objects;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kitodo.data.database.beans.Batch;
import org.kitodo.data.database.beans.Process;
import org.kitodo.data.database.beans.Property;
import org.kitodo.data.exceptions.DataException;
import org.kitodo.production.enums.ObjectType;
import org.kitodo.production.helper.Helper;
import org.kitodo.production.services.ServiceManager;
public class BatchProcessHelper extends BatchHelper {
private final List<Process> processes;
private final Batch batch;
private static final Logger logger = LogManager.getLogger(BatchProcessHelper.class);
private Process currentProcess;
/**
* Constructor.
*
* @param batch
* object
*/
public BatchProcessHelper(Batch batch) {
this.batch = batch;
this.processes = batch.getProcesses();
this.currentProcess = processes.iterator().next();
loadProcessProperties();
}
/**
* Get batch.
*
* @return value of batch
*/
public Batch getBatch() {
return batch;
}
/**
* Get current process.
*
* @return value of currentProcess
*/
public Process getCurrentProcess() {
return currentProcess;
}
/**
* Set current process.
*
* @param currentProcess
* as Process
*/
public void setCurrentProcess(Process currentProcess) {
this.currentProcess = currentProcess;
}
/**
* Get list of processes.
*
* @return list of processes
*/
public List<Process> getProcesses() {
return this.processes;
}
/**
* Update list of properties for chosen process.
*
* @param processId
* id of chosen process
*/
public void updatePropertyList(int processId) {
for (Process process : this.processes) {
if (process.getId().equals(processId)) {
this.currentProcess = process;
loadProcessProperties();
}
}
}
/**
* Save property for chosen process.
*/
public void saveForChosenProcess() {
try {
ServiceManager.getProcessService().save(this.currentProcess);
Helper.setMessage("propertySaved");
} catch (DataException e) {
Helper.setErrorMessage("errorSaving", new Object[] {ObjectType.PROPERTY.getTranslationSingular() }, logger,
e);
}
}
/**
* Save property for all processes belonging to the batch.
*/
public void saveForAllProcesses() {
for (Process process : this.processes) {
try {
ServiceManager.getProcessService().save(process);
Helper.setMessage("propertiesSaved");
} catch (DataException e) {
String value = Helper.getTranslation("propertiesForProcessNotSaved", process.getTitle());
Helper.setErrorMessage(value, logger, e);
}
}
}
/**
* Edit current property for chosen process.
*/
public void editPropertyForOneProcess() {
List<Property> ppList = getProperties();
for (Property pp : ppList) {
this.property = pp;
List<Property> propertyList = this.currentProcess.getProperties();
for (Property processProperty : propertyList) {
if (Objects.isNull(processProperty.getTitle())) {
this.currentProcess.getProperties().remove(processProperty);
}
}
for (Process process : this.property.getProcesses()) {
if (!process.getProperties().contains(this.property)) {
process.getProperties().add(this.property);
}
}
}
}
/**
* Edit current property for all processes belonging to the batch.
*/
public void editPropertyForAllProcesses() {
List<Property> ppList = getProperties();
for (Property pp : ppList) {
this.property = pp;
Property processProperty = new Property();
processProperty.setTitle(this.property.getTitle());
processProperty.setValue(this.property.getValue());
for (Process process : this.processes) {
if (!process.equals(this.currentProcess)) {
process = prepareProcessWithProperty(process, processProperty);
} else if (!process.getProperties().contains(this.property)) {
process.getProperties().add(this.property);
}
validateProperties(process);
}
}
}
/**
* Delete property for one process.
*/
public void deletePropertyForOneProcess() {
this.property.getProcesses().clear();
this.currentProcess.getProperties().remove(this.property);
loadProcessProperties();
}
/**
* Delete property for all processes belonging to the batch.
*/
public void deletePropertyForAllProcesses() {
this.property.getProcesses().clear();
this.currentProcess.getProperties().remove(this.property);
for (Process process : this.processes) {
for (Property property : process.getProperties()) {
if (property.getTitle().equals(this.property.getTitle())
&& property.getValue().equals(this.property.getValue())) {
property.getProcesses().clear();
process.getProperties().remove(property);
}
}
}
loadProcessProperties();
}
private void loadProcessProperties() {
this.properties = this.currentProcess.getProperties();
}
}