Coverage Summary for Class: ProcessMetadata (org.kitodo.production.forms.createprocess)

Class Class, % Method, % Line, %
ProcessMetadata 100% (1/1) 38,5% (5/13) 27,6% (8/29)


 /*
  * (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.createprocess;
 
 import java.util.List;
 import java.util.Objects;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.kitodo.api.dataformat.LogicalDivision;
 import org.kitodo.exceptions.InvalidMetadataValueException;
 import org.kitodo.exceptions.NoSuchMetadataFieldException;
 import org.kitodo.production.helper.Helper;
 import org.kitodo.production.helper.ProcessHelper;
 import org.primefaces.model.TreeNode;
 
 public class ProcessMetadata {
     private static final Logger logger = LogManager.getLogger(ProcessMetadata.class);
 
     private ProcessFieldedMetadata processDetails = ProcessFieldedMetadata.EMPTY;
 
     private TreeNode selectedMetadataTreeNode;
 
     private String addMetadataKeySelectedItem = "";
 
 
     /**
      * initialize process details table.
      * @param structure
      *          which its Metadata are wanted to be shown
      */
     public void initializeProcessDetails(LogicalDivision structure, CreateProcessForm form) {
         processDetails = ProcessHelper.initializeProcessDetails(structure, form.getRulesetManagement(),
                 form.getAcquisitionStage(), form.getPriorityList());
     }
 
     /**
      * Returns the logical metadata tree.
      *
      * @return the logical metadata tree
      */
     public TreeNode getLogicalMetadataTree() {
         return processDetails.getTreeNode();
     }
 
     /**
      * Get processDetails.
      *
      * @return value of processDetails
      */
     ProcessFieldedMetadata getProcessDetails() {
         return processDetails;
     }
 
     /**
      * Set processDetails.
      */
     public void setProcessDetails(ProcessFieldedMetadata processDetails) {
         this.processDetails = processDetails;
     }
 
 
     /**
      * Get all details in the processDetails as a list.
      *
      * @return the list of details of the processDetails
      */
     public List<ProcessDetail> getProcessDetailsElements() {
         return processDetails.getRows();
     }
 
     /**
      * Get selectedMetadataTreeNode.
      *
      * @return value of selectedMetadataTreeNode
      */
     public TreeNode getSelectedMetadataTreeNode() {
         return selectedMetadataTreeNode;
     }
 
     /**
      * Set selectedMetadataTreeNode.
      *
      * @param selectedMetadataTreeNode as org.primefaces.model.TreeNode
      */
     public void setSelectedMetadataTreeNode(TreeNode selectedMetadataTreeNode) {
         this.selectedMetadataTreeNode = selectedMetadataTreeNode;
     }
 
     /**
      * Set addMetadataKeySelectedItem.
      *
      * @param addMetadataKeySelectedItem as java.lang.String
      */
     public void setAddMetadataKeySelectedItem(String addMetadataKeySelectedItem) {
         this.addMetadataKeySelectedItem = addMetadataKeySelectedItem;
     }
 
     /**
      * preserve all the metadata in the processDetails.
      */
     public void preserve() {
         try {
             processDetails.preserve();
         } catch (NoSuchMetadataFieldException | InvalidMetadataValueException e) {
             logger.error(e.getLocalizedMessage());
         }
     }
 
     /**
      * Adds an empty table line with 'addMetadataKeySelectedItem' type.
      */
     public void addMetadataEntry() {
         try {
             if (Objects.nonNull(selectedMetadataTreeNode) && Objects.nonNull(selectedMetadataTreeNode.getData())) {
                 ((ProcessFieldedMetadata) selectedMetadataTreeNode.getData()).getAdditionallySelectedFields().clear();
                 ((ProcessFieldedMetadata) selectedMetadataTreeNode.getData()).addAdditionallySelectedField(addMetadataKeySelectedItem);
             } else {
                 getProcessDetails().getAdditionallySelectedFields().clear();
                 getProcessDetails().addAdditionallySelectedField(addMetadataKeySelectedItem);
             }
         } catch (NoSuchMetadataFieldException e) {
             Helper.setErrorMessage(e.getLocalizedMessage());
         }
     }
 
     /**
      * Updates the logical division of the process details.
      */
     public void update(CreateProcessForm form) throws InvalidMetadataValueException, NoSuchMetadataFieldException {
         LogicalDivision logicalDivision = (LogicalDivision) processDetails.getDivision();
         if (Objects.nonNull(logicalDivision)) {
             processDetails.preserve();
             initializeProcessDetails(logicalDivision, form);
         }
     }
 }