com.bemis.portal.report.service.impl.ReportRequestLocalServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.bemis.portal.report.service.impl.ReportRequestLocalServiceImpl.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.service.impl;

import aQute.bnd.annotation.ProviderType;

import com.bemis.portal.report.ReportPortletKeys;
import com.bemis.portal.report.definition.ReportParameter;
import com.bemis.portal.report.model.ReportDefinition;
import com.bemis.portal.report.model.ReportRequest;
import com.bemis.portal.report.runtime.ReportParametersValuesSerializer;
import com.bemis.portal.report.service.base.ReportRequestLocalServiceBaseImpl;

import com.liferay.document.library.kernel.model.DLFolderConstants;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.portletfilerepository.PortletFileRepository;
import com.liferay.portal.kernel.repository.model.Folder;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.util.ArrayUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.spring.extender.service.ServiceReference;

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

import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.lang.StringUtils;

/**
 * @author Michael C. Han
 * @see ReportRequestLocalServiceBaseImpl
 * @see com.bemis.portal.report.service.ReportRequestLocalServiceUtil
 */
@ProviderType
public class ReportRequestLocalServiceImpl extends ReportRequestLocalServiceBaseImpl {

    @Override
    public ReportRequest addReportRequest(final long reportDefinitionId, String reportFormat,
            final Set<String> reportFields, Set<String> sortFields,
            final Map<ReportParameter, Serializable> reportParametersValues, ServiceContext serviceContext)
            throws PortalException {

        final User user = userLocalService.getUser(serviceContext.getGuestOrUserId());

        Date now = new Date();

        final long reportRequestId = counterLocalService.increment();

        ReportRequest reportRequest = reportRequestPersistence.create(reportRequestId);

        reportRequest.setGroupId(user.getGroupId());
        reportRequest.setCompanyId(user.getCompanyId());
        reportRequest.setUserId(user.getUserId());
        reportRequest.setUserName(user.getFullName());
        reportRequest.setCreateDate(serviceContext.getCreateDate(now));
        reportRequest.setModifiedDate(serviceContext.getModifiedDate(now));

        final ReportDefinition reportDefinition = reportDefinitionLocalService
                .getReportDefinition(reportDefinitionId);

        reportRequest.setReportDefinitionCategory(reportDefinition.getCategory());

        reportRequest.setReportFormat(reportFormat);
        reportRequest.setReportDefinitionId(reportDefinitionId);
        reportRequest.setReportDefinitionName(reportDefinition.getTitle(serviceContext.getLocale()));
        reportRequest.setSelectedFields(StringUtils.join(reportFields, StringPool.COMMA));
        reportRequest.setSortFields(StringUtils.join(sortFields, StringPool.COMMA));

        String reportParametersString = reportParametersValuesSerializer.serialize(reportParametersValues);

        reportRequest.setParameters(reportParametersString);

        reportRequest.setExpandoBridgeAttributes(serviceContext);

        reportRequestPersistence.update(reportRequest);

        /*
              // Resources
            
              resourceLocalService.addModelResources(reportRequest, serviceContext);
        */

        return reportRequest;
    }

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

        ReportRequest reportRequest = getReportRequest(reportRequestId);

        Folder folder = reportRequest.addAttachmentsFolder();

        portletFileRepository.addPortletFileEntry(reportRequest.getGroupId(), userId, ReportRequest.class.getName(),
                reportRequest.getPrimaryKey(), ReportPortletKeys.REPORT_GENERATION_REQUEST, folder.getFolderId(),
                file, fileName, mimeType, false);
    }

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

        ReportRequest reportRequest = getReportRequest(reportRequestId);

        Folder folder = reportRequest.addAttachmentsFolder();

        portletFileRepository.addPortletFileEntry(reportRequest.getGroupId(), userId, ReportRequest.class.getName(),
                reportRequest.getPrimaryKey(), ReportPortletKeys.REPORT_GENERATION_REQUEST, folder.getFolderId(),
                inputStream, fileName, mimeType, false);
    }

    @Override
    public ReportRequest completeReportRequest(long reportRequestId, boolean success, String errorMessage)
            throws PortalException {

        ReportRequest reportRequest = getReportRequest(reportRequestId);

        reportRequest.setModifiedDate(new Date());
        reportRequest.setReportRequestFinish(System.currentTimeMillis());
        reportRequest.setSuccess(success);

        if (_log.isInfoEnabled()) {
            _log.info("Completed Report Request: " + reportRequest.getReportRequestId() + " in "
                    + (reportRequest.getReportRequestFinish() - reportRequest.getReportRequestStart()) + "ms");
        }

        if (Validator.isNotNull(errorMessage)) {
            reportRequest.setErrorMessage(errorMessage);
        }

        return reportRequestPersistence.update(reportRequest);
    }

    @Override
    public ReportRequest deleteReportRequest(long reportRequestId) throws PortalException {

        ReportRequest reportRequest = getReportRequest(reportRequestId);

        return deleteReportRequest(reportRequest);
    }

    @Override
    public ReportRequest deleteReportRequest(ReportRequest reportRequest) throws PortalException {

        long folderId = reportRequest.getAttachmentsFolderId();

        if (folderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
            portletFileRepository.deletePortletFolder(folderId);
        }

        reportRequestPersistence.remove(reportRequest);

        /*
              // Resources
            
              resourceLocalService.deleteResource(
                 reportRequest, ResourceConstants.SCOPE_INDIVIDUAL);
        */

        return reportRequest;
    }

    @Override
    public List<ReportRequest> getReportRequestByRDC_U(String reportDefinitionCategory, long userId) {

        return reportRequestPersistence.findByRDC_U(reportDefinitionCategory, userId);
    }

    @Override
    public List<ReportRequest> getReportRequestByRDC_U(String reportDefinitionCategory, long userId, int start,
            int end) {

        return reportRequestPersistence.findByRDC_U(reportDefinitionCategory, userId, start, end);
    }

    @Override
    public List<ReportRequest> getReportRequestByRDC_U(String[] reportDefinitionCategories, long userId) {

        if (ArrayUtil.isEmpty(reportDefinitionCategories)) {
            return Collections.emptyList();
        }

        return reportRequestPersistence.findByRDC_U(reportDefinitionCategories, userId);
    }

    @Override
    public List<ReportRequest> getReportRequestByRDC_U(String[] reportDefinitionCategories, long userId, int start,
            int end) {

        if (ArrayUtil.isEmpty(reportDefinitionCategories)) {
            return Collections.emptyList();
        }

        return reportRequestPersistence.findByRDC_U(reportDefinitionCategories, userId, start, end);
    }

    @Override
    public List<ReportRequest> getReportRequests(long reportDefinitionId) {
        return reportRequestPersistence.findByReportDefinitionId(reportDefinitionId);
    }

    @Override
    public List<ReportRequest> getReportRequestsByC_G(long companyId, long groupId) {

        return reportRequestPersistence.findByC_G(companyId, groupId);
    }

    @Override
    public List<ReportRequest> getReportRequestsByRDIUser(long reportDefinitionId, long userId) {

        return reportRequestPersistence.findByRDI_U(reportDefinitionId, userId);
    }

    @Override
    public List<ReportRequest> getReportRequestsByUser(long userId, int start, int end) {

        return reportRequestPersistence.findByUserId(userId, start, end);
    }

    @Override
    public int getReportRequestsByUserCount(long userId) {
        return reportRequestPersistence.countByUserId(userId);
    }

    @Override
    public ReportRequest startReportRequest(long reportRequestId) throws PortalException {

        ReportRequest reportRequest = getReportRequest(reportRequestId);

        reportRequest.setModifiedDate(new Date());
        reportRequest.setReportRequestStart(System.currentTimeMillis());

        return reportRequestPersistence.update(reportRequest);
    }

    @ServiceReference(type = PortletFileRepository.class)
    protected PortletFileRepository portletFileRepository;

    @ServiceReference(type = ReportParametersValuesSerializer.class)
    protected ReportParametersValuesSerializer reportParametersValuesSerializer;

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

}