org.goobi.production.flow.helper.SearchResultGeneration.java Source code

Java tutorial

Introduction

Here is the source code for org.goobi.production.flow.helper.SearchResultGeneration.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.goobi.production.flow.helper;

import de.sub.goobi.helper.Helper;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.goobi.production.flow.statistics.hibernate.IEvaluableFilter;
import org.goobi.production.flow.statistics.hibernate.UserDefinedFilter;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.kitodo.data.database.beans.Process;
import org.kitodo.data.database.beans.ProcessProperty;

public class SearchResultGeneration {

    private String filter = "";
    private boolean showClosedProcesses = false;
    private boolean showArchivedProjects = false;

    /**
     * Constructor.
     *
     * @param filter
     *            String
     * @param showClosedProcesses
     *            boolean
     * @param showArchivedProjects
     *            boolean
     */
    public SearchResultGeneration(String filter, boolean showClosedProcesses, boolean showArchivedProjects) {
        this.filter = filter;
        this.showClosedProcesses = showClosedProcesses;
        this.showArchivedProjects = showArchivedProjects;
    }

    /**
     * Get result.
     *
     * @return HSSFWorkbook
     */
    @SuppressWarnings("deprecation")
    public HSSFWorkbook getResult() {
        IEvaluableFilter myFilteredDataSource = new UserDefinedFilter(this.filter);
        Criteria crit = myFilteredDataSource.getCriteria();
        crit.add(Restrictions.eq("istTemplate", Boolean.FALSE));
        if (!this.showClosedProcesses) {
            crit.add(Restrictions.not(Restrictions.eq("sortHelperStatus", "100000000")));
        }
        if (!this.showArchivedProjects) {
            crit.createCriteria("projekt", "proj");
            crit.add(Restrictions.not(Restrictions.eq("proj.projectIsArchived", true)));
        } else {
            crit.createCriteria("projekt", "proj");
        }
        Order order = Order.asc("titel");
        crit.addOrder(order);
        @SuppressWarnings("unchecked")
        List<Process> pl = crit.setFirstResult(0).setMaxResults(Integer.MAX_VALUE).list();

        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("Search results");

        HSSFRow title = sheet.createRow(0);
        HSSFCell titleCell1 = title.createCell(0);
        titleCell1.setCellValue(this.filter);
        HSSFCell titleCell2 = title.createCell(1);
        titleCell2.setCellValue("");
        HSSFCell titleCell3 = title.createCell(2);
        titleCell3.setCellValue("");
        HSSFCell titleCell4 = title.createCell(3);
        titleCell4.setCellValue("");
        HSSFCell titleCell5 = title.createCell(4);
        titleCell5.setCellValue("");
        HSSFCell titleCell6 = title.createCell(5);
        titleCell6.setCellValue("");

        HSSFCell titleCell7 = title.createCell(6);
        titleCell7.setCellValue("");
        HSSFCell titleCell8 = title.createCell(7);
        titleCell8.setCellValue("");

        HSSFCell titleCell9 = title.createCell(8);
        titleCell9.setCellValue("");

        HSSFRow row0 = sheet.createRow(1);
        HSSFCell headercell0 = row0.createCell(0);
        headercell0.setCellValue(Helper.getTranslation("title"));
        HSSFCell headercell1 = row0.createCell(1);
        headercell1.setCellValue(Helper.getTranslation("ID"));
        HSSFCell headercell2 = row0.createCell(2);
        headercell2.setCellValue(Helper.getTranslation("Datum"));
        HSSFCell headercell3 = row0.createCell(3);
        headercell3.setCellValue(Helper.getTranslation("CountImages"));
        HSSFCell headercell4 = row0.createCell(4);
        headercell4.setCellValue(Helper.getTranslation("CountMetadata"));
        HSSFCell headercell5 = row0.createCell(5);
        headercell5.setCellValue(Helper.getTranslation("Project"));
        HSSFCell headercell6 = row0.createCell(6);
        headercell6.setCellValue(Helper.getTranslation("Status"));

        HSSFCell headercell7 = row0.createCell(7);
        headercell7.setCellValue(Helper.getTranslation("AltRefNo"));

        HSSFCell headercell8 = row0.createCell(8);
        headercell8.setCellValue(Helper.getTranslation("b-number"));

        int rowcounter = 2;
        for (Process p : pl) {
            HSSFRow row = sheet.createRow(rowcounter);
            HSSFCell cell0 = row.createCell(0);
            cell0.setCellValue(p.getTitle());
            HSSFCell cell1 = row.createCell(1);
            cell1.setCellValue(p.getId());
            HSSFCell cell2 = row.createCell(2);
            cell2.setCellValue(p.getCreationDate().toGMTString());
            HSSFCell cell3 = row.createCell(3);
            cell3.setCellValue(p.getSortHelperImages());
            HSSFCell cell4 = row.createCell(4);
            cell4.setCellValue(p.getSortHelperDocstructs());
            HSSFCell cell5 = row.createCell(5);
            cell5.setCellValue(p.getProject().getTitle());

            HSSFCell cell6 = row.createCell(6);

            cell6.setCellValue(p.getSortHelperStatus().substring(0, 3) + " / "
                    + p.getSortHelperStatus().substring(3, 6) + " / " + p.getSortHelperStatus().substring(6));
            HSSFCell cell7 = row.createCell(7);
            cell7.setCellValue("");
            HSSFCell cell8 = row.createCell(8);
            cell8.setCellValue("");
            if (p.getProperties().size() > 0) {
                for (ProcessProperty pe : p.getProperties()) {
                    if (pe.getTitle().equals("AltRefNo")) {
                        cell7.setCellValue(pe.getValue());
                    } else if (pe.getTitle().equals("b-number")) {
                        cell8.setCellValue(pe.getValue());
                    }
                }
            }

            rowcounter++;
        }

        return wb;
    }
}