org.kitodo.data.index.elasticsearch.type.ProjectType.java Source code

Java tutorial

Introduction

Here is the source code for org.kitodo.data.index.elasticsearch.type.ProjectType.java

Source

/*
 * (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.index.elasticsearch.type;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedHashMap;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.nio.entity.NStringEntity;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import org.kitodo.data.database.beans.Process;
import org.kitodo.data.database.beans.Project;
import org.kitodo.data.database.beans.ProjectFileGroup;
import org.kitodo.data.database.beans.User;

/**
 * Implementation of Project Type.
 */
public class ProjectType extends BaseType<Project> {

    @SuppressWarnings("unchecked")
    @Override
    public HttpEntity createDocument(Project project) {

        LinkedHashMap<String, String> orderedProjectMap = new LinkedHashMap<>();
        orderedProjectMap.put("name", project.getTitle());
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String startDate = project.getStartDate() != null ? dateFormat.format(project.getStartDate()) : null;
        orderedProjectMap.put("startDate", startDate);
        String endDate = project.getEndDate() != null ? dateFormat.format(project.getEndDate()) : null;
        orderedProjectMap.put("endDate", endDate);
        String numberOfPages = project.getNumberOfPages() != null ? project.getNumberOfPages().toString() : "null";
        orderedProjectMap.put("numberOfPages", numberOfPages);
        String numberOfVolumes = project.getNumberOfVolumes() != null ? project.getNumberOfVolumes().toString()
                : "null";
        orderedProjectMap.put("numberOfVolumes", numberOfVolumes);
        String archived = project.getProjectIsArchived() != null ? project.getProjectIsArchived().toString()
                : "null";
        orderedProjectMap.put("archived", archived);

        JSONObject projectObject = new JSONObject(orderedProjectMap);

        JSONArray processes = new JSONArray();
        List<Process> projectProcesses = project.getProcesses();
        for (Process process : projectProcesses) {
            JSONObject processObject = new JSONObject();
            processObject.put("id", process.getId().toString());
            processes.add(processObject);
        }
        projectObject.put("processes", processes);

        JSONArray users = new JSONArray();
        List<User> projectUsers = project.getUsers();
        for (User user : projectUsers) {
            JSONObject userObject = new JSONObject();
            userObject.put("id", user.getId().toString());
            users.add(userObject);
        }
        projectObject.put("users", users);

        JSONArray projectFileGroups = new JSONArray();
        List<ProjectFileGroup> projectProjectFileGroups = project.getProjectFileGroups();
        for (ProjectFileGroup projectFileGroup : projectProjectFileGroups) {
            JSONObject projectFileGroupObject = new JSONObject();
            projectFileGroupObject.put("name", projectFileGroup.getName());
            projectFileGroupObject.put("path", projectFileGroup.getPath());
            projectFileGroupObject.put("mimeType", projectFileGroup.getMimeType());
            projectFileGroupObject.put("suffix", projectFileGroup.getSuffix());
            projectFileGroupObject.put("folder", projectFileGroup.getFolder());
            projectFileGroups.add(projectFileGroupObject);
        }
        projectObject.put("projectFileGroups", projectFileGroups);

        return new NStringEntity(projectObject.toJSONString(), ContentType.APPLICATION_JSON);
    }
}