Coverage Summary for Class: ProjectType (org.kitodo.data.elasticsearch.index.type)

Class Class, % Method, % Line, %
ProjectType 100% (1/1) 100% (3/3) 94,1% (32/34)


 /*
  * (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.data.elasticsearch.index.type;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.kitodo.data.database.beans.Folder;
 import org.kitodo.data.database.beans.Project;
 import org.kitodo.data.database.exceptions.DAOException;
 import org.kitodo.data.database.persistence.ProjectDAO;
 import org.kitodo.data.elasticsearch.index.type.enums.ProjectTypeField;
 
 /**
  * Implementation of Project Type.
  */
 public class ProjectType extends BaseType<Project> {
 
     private static final Logger logger = LogManager.getLogger(ProjectType.class);
 
     @Override
     Map<String, Object> getJsonObject(Project project) {
         List<Map<String, Object>> folders = new ArrayList<>();
         List<Folder> projectFolders = project.getFolders();
         for (Folder folder : projectFolders) {
             Map<String, Object> folderObject = new HashMap<>();
             folderObject.put(ProjectTypeField.FOLDER_FILE_GROUP.getKey(), preventNull(folder.getFileGroup()));
             folderObject.put(ProjectTypeField.FOLDER_URL_STRUCTURE.getKey(), preventNull(folder.getUrlStructure()));
             folderObject.put(ProjectTypeField.FOLDER_MIME_TYPE.getKey(), preventNull(folder.getMimeType()));
             folderObject.put(ProjectTypeField.FOLDER_PATH.getKey(), preventNull(folder.getPath()));
             folders.add(folderObject);
         }
 
         // query database for the amount of processes attached to a project
         // instead of calling project.getProcesses(), which will load all processes into memory
         Long processCount = 0L;
         try {
             ProjectDAO projectDAO = new ProjectDAO();
             processCount = projectDAO.count(
                 "SELECT COUNT(*) FROM Process WHERE project_id = :id", 
                 Collections.singletonMap("id", project.getId())
             );
         } catch (DAOException e) {
             logger.error("database access exception while transforming project to json for indexing.", e);
         }
 
         Map<String, Object> jsonObject = new HashMap<>();
         jsonObject.put(ProjectTypeField.TITLE.getKey(), preventNull(project.getTitle()));
         jsonObject.put(ProjectTypeField.START_DATE.getKey(), getFormattedDate(project.getStartDate()));
         jsonObject.put(ProjectTypeField.END_DATE.getKey(), getFormattedDate(project.getEndDate()));
         jsonObject.put(ProjectTypeField.NUMBER_OF_PAGES.getKey(), preventNull(project.getNumberOfPages()));
         jsonObject.put(ProjectTypeField.NUMBER_OF_VOLUMES.getKey(), preventNull(project.getNumberOfVolumes()));
         jsonObject.put(ProjectTypeField.METS_RIGTS_OWNER.getKey(), project.getMetsRightsOwner());
         jsonObject.put(ProjectTypeField.ACTIVE.getKey(), project.isActive());
         jsonObject.put(ProjectTypeField.HAS_PROCESSES.getKey(), processCount > 0);
         jsonObject.put(ProjectTypeField.TEMPLATES.getKey(), addObjectRelation(project.getTemplates(), true));
         jsonObject.put(ProjectTypeField.USERS.getKey(), addObjectRelation(project.getUsers(), true));
         jsonObject.put(ProjectTypeField.CLIENT_ID.getKey(), getId(project.getClient()));
         jsonObject.put(ProjectTypeField.CLIENT_NAME.getKey(), getTitle(project.getClient()));
         jsonObject.put(ProjectTypeField.FOLDER.getKey(), folders);
         return jsonObject;
     }
 }