com.bemis.portal.report.model.impl.ReportRequestImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.bemis.portal.report.model.impl.ReportRequestImpl.java

Source

/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.bemis.portal.report.model.impl;

import aQute.bnd.annotation.ProviderType;

import com.bemis.portal.report.ReportPortletKeys;
import com.bemis.portal.report.definition.ReportParameter;
import com.bemis.portal.report.runtime.ReportParametersValuesSerializer;
import com.bemis.portal.report.runtime.ReportParametersValuesSerializerUtil;
import com.bemis.portal.report.service.ReportRequestLocalServiceUtil;

import com.liferay.document.library.kernel.model.DLFolderConstants;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.json.JSONException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.model.Repository;
import com.liferay.portal.kernel.portletfilerepository.PortletFileRepositoryUtil;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.repository.model.Folder;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.workflow.WorkflowConstants;

import java.io.File;
import java.io.InputStream;
import java.io.Serializable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author Michael C. Han
 */
@ProviderType
public class ReportRequestImpl extends ReportRequestBaseImpl {

    public ReportRequestImpl() {
    }

    @Override
    public void addAttachment(long userId, String fileName, String mimeType, File file) throws PortalException {

        ReportRequestLocalServiceUtil.addReportResponse(userId, getReportRequestId(), fileName, mimeType, file);
    }

    @Override
    public void addAttachment(long userId, String fileName, String mimeType, InputStream inputStream)
            throws PortalException {

        ReportRequestLocalServiceUtil.addReportResponse(userId, getReportRequestId(), fileName, mimeType,
                inputStream);
    }

    @Override
    public Folder addAttachmentsFolder() throws PortalException {
        if (_attachmentsFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {

            return PortletFileRepositoryUtil.getPortletFolder(_attachmentsFolderId);
        }

        ServiceContext serviceContext = new ServiceContext();

        serviceContext.setAddGroupPermissions(true);
        serviceContext.setAddGuestPermissions(true);

        Repository repository = PortletFileRepositoryUtil.addPortletRepository(getGroupId(),
                ReportPortletKeys.REPORT_GENERATION_REQUEST, serviceContext);

        Folder folder = PortletFileRepositoryUtil.addPortletFolder(getUserId(), repository.getRepositoryId(),
                DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, String.valueOf(getReportRequestId()), serviceContext);

        _attachmentsFolderId = folder.getFolderId();

        return folder;
    }

    @Override
    public List<FileEntry> getAttachmentsFileEntries() throws PortalException {
        return getAttachmentsFileEntries(QueryUtil.ALL_POS, QueryUtil.ALL_POS);
    }

    @Override
    public List<FileEntry> getAttachmentsFileEntries(int start, int end) throws PortalException {

        List<FileEntry> fileEntries = new ArrayList<>();

        long attachmentsFolderId = getAttachmentsFolderId();

        if (attachmentsFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
            fileEntries = PortletFileRepositoryUtil.getPortletFileEntries(getGroupId(), attachmentsFolderId,
                    WorkflowConstants.STATUS_APPROVED, start, end, null);
        }

        return fileEntries;
    }

    @Override
    public int getAttachmentsFileEntriesCount() throws PortalException {
        int attachmentsFileEntriesCount = 0;

        long attachmentsFolderId = getAttachmentsFolderId();

        if (attachmentsFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
            attachmentsFileEntriesCount = PortletFileRepositoryUtil.getPortletFileEntriesCount(getGroupId(),
                    attachmentsFolderId, WorkflowConstants.STATUS_APPROVED);
        }

        return attachmentsFileEntriesCount;
    }

    @Override
    public long getAttachmentsFolderId() {
        if (_attachmentsFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {

            return _attachmentsFolderId;
        }

        ServiceContext serviceContext = new ServiceContext();

        serviceContext.setAddGroupPermissions(true);
        serviceContext.setAddGuestPermissions(true);

        Repository repository = PortletFileRepositoryUtil.fetchPortletRepository(getGroupId(),
                ReportPortletKeys.REPORT_GENERATION_REQUEST);

        if (repository == null) {
            return DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;
        }

        try {
            Folder folder = PortletFileRepositoryUtil.getPortletFolder(repository.getRepositoryId(),
                    DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, String.valueOf(getReportRequestId()));

            _attachmentsFolderId = folder.getFolderId();
        } catch (Exception e) {
            if (_log.isDebugEnabled()) {
                _log.debug("No portlet repository for ReportRequest" + getReportRequestId(), e);
            }
        }

        return _attachmentsFolderId;
    }

    @Override
    public Map<ReportParameter, Serializable> getReportParametersValues() {
        if (_reportParametersValues == null) {
            String paramtersValuesJSON = getParameters();

            ReportParametersValuesSerializer reportParametersValuesSerializer = ReportParametersValuesSerializerUtil
                    .getReportParametersValuesSerializer();

            try {
                Map<ReportParameter, Serializable> reportParametersValues = reportParametersValuesSerializer
                        .deserialize(paramtersValuesJSON);

                if (reportParametersValues == null) {
                    reportParametersValues = Collections.emptyMap();
                }

                _reportParametersValues = reportParametersValues;
            } catch (JSONException jsone) {
                if (_log.isWarnEnabled()) {
                    _log.warn("Error deserializing report parameter values", jsone);
                }
            }
        }

        return _reportParametersValues;
    }

    @Override
    public Set<String> getSelectedFieldsSet() {
        if (_selectedFieldsSet == null) {
            String[] selectedFieldsArray = StringUtil.split(getSelectedFields(), StringPool.COMMA);

            _selectedFieldsSet = new LinkedHashSet<>(Arrays.asList(selectedFieldsArray));
        }

        return _selectedFieldsSet;
    }

    @Override
    public Set<String> getSortFieldsSet() {
        if (_sortFieldsSet == null) {
            String[] sortFieldsArray = StringUtil.split(getSortFields(), StringPool.COMMA);

            _sortFieldsSet = new LinkedHashSet<>(Arrays.asList(sortFieldsArray));
        }

        return _sortFieldsSet;
    }

    @Override
    public void setParameters(String parameters) {
        super.setParameters(parameters);

        _reportParametersValues = null;
    }

    @Override
    public void setSelectedFields(String selectedFields) {
        super.setSelectedFields(selectedFields);

        _selectedFieldsSet = null;
    }

    @Override
    public void setSortFields(String sortFields) {
        super.setSortFields(sortFields);

        _sortFieldsSet = null;
    }

    private static final Log _log = LogFactoryUtil.getLog(ReportRequestImpl.class);

    private long _attachmentsFolderId;
    private Map<ReportParameter, Serializable> _reportParametersValues;
    private Set<String> _selectedFieldsSet;
    private Set<String> _sortFieldsSet;

}