All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.batch.planner.web.internal.display.context.BatchPlannerPlanDisplayContext Maven / Gradle / Ivy

/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

package com.liferay.batch.planner.web.internal.display.context;

import com.liferay.batch.engine.constants.BatchEngineImportTaskConstants;
import com.liferay.batch.engine.model.BatchEngineExportTask;
import com.liferay.batch.engine.model.BatchEngineImportTask;
import com.liferay.batch.engine.service.BatchEngineExportTaskLocalServiceUtil;
import com.liferay.batch.engine.service.BatchEngineImportTaskLocalServiceUtil;
import com.liferay.batch.planner.batch.engine.task.TaskItemUtil;
import com.liferay.batch.planner.constants.BatchPlannerPlanConstants;
import com.liferay.batch.planner.constants.BatchPlannerPortletKeys;
import com.liferay.batch.planner.model.BatchPlannerPlan;
import com.liferay.batch.planner.service.BatchPlannerPlanServiceUtil;
import com.liferay.batch.planner.web.internal.display.BatchPlannerPlanDisplay;
import com.liferay.petra.function.transform.TransformUtil;
import com.liferay.portal.kernel.dao.search.SearchContainer;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.portlet.SearchOrderByUtil;
import com.liferay.portal.kernel.portlet.url.builder.PortletURLBuilder;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.Validator;

import java.util.Objects;

import javax.portlet.PortletURL;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

/**
 * @author Matija Petanjek
 */
public class BatchPlannerPlanDisplayContext extends BaseDisplayContext {

	public BatchPlannerPlanDisplayContext(
		RenderRequest renderRequest, RenderResponse renderResponse) {

		super(renderRequest, renderResponse);
	}

	public PortletURL getPortletURL() {
		return PortletURLBuilder.createRenderURL(
			renderResponse
		).setNavigation(
			ParamUtil.getString(renderRequest, "navigation", "all")
		).setTabs1(
			"batch-planner-plans"
		).setParameter(
			"delta", () -> ParamUtil.getString(renderRequest, "delta")
		).buildPortletURL();
	}

	public SearchContainer getSearchContainer() {
		try {
			return _getSearchContainer();
		}
		catch (Exception exception) {
			Class clazz = exception.getClass();

			SessionErrors.add(renderRequest, clazz.getName());
		}

		return new SearchContainer<>(
			renderRequest, getPortletURL(), null, "no-items-were-found");
	}

	private String _getAction(boolean export) {
		if (export) {
			return "export";
		}

		return "import";
	}

	private String _getOrderByCol() {
		if (Validator.isNotNull(_orderByCol)) {
			return _orderByCol;
		}

		_orderByCol = SearchOrderByUtil.getOrderByCol(
			httpServletRequest, BatchPlannerPortletKeys.BATCH_PLANNER,
			"plan-order-by-col", "modifiedDate");

		return _orderByCol;
	}

	private String _getOrderByType() {
		if (Validator.isNotNull(_orderByType)) {
			return _orderByType;
		}

		_orderByType = SearchOrderByUtil.getOrderByType(
			httpServletRequest, BatchPlannerPortletKeys.BATCH_PLANNER,
			"plan-order-by-type", "desc");

		return _orderByType;
	}

	private int _getProcessedItemsCount(
		BatchEngineImportTask batchEngineImportTask,
		int batchEngineImportTaskErrorsCount) {

		if (batchEngineImportTask.getImportStrategy() ==
				BatchEngineImportTaskConstants.IMPORT_STRATEGY_ON_ERROR_FAIL) {

			return batchEngineImportTask.getProcessedItemsCount();
		}

		return batchEngineImportTask.getTotalItemsCount() -
			batchEngineImportTaskErrorsCount;
	}

	private SearchContainer _getSearchContainer()
		throws PortalException {

		if (_searchContainer != null) {
			return _searchContainer;
		}

		_searchContainer = new SearchContainer<>(
			renderRequest, getPortletURL(), null, "no-items-were-found");

		_searchContainer.setOrderByCol(_getOrderByCol());
		_searchContainer.setOrderByType(_getOrderByType());

		String navigation = ParamUtil.getString(
			renderRequest, "navigation", "all");

		long companyId = PortalUtil.getCompanyId(renderRequest);
		String searchByKeyword = ParamUtil.getString(
			renderRequest, "keywords", "");

		if (navigation.equals("all")) {
			_searchContainer.setResultsAndTotal(
				() -> TransformUtil.transform(
					BatchPlannerPlanServiceUtil.getBatchPlannerPlans(
						companyId, false, searchByKeyword,
						_searchContainer.getStart(), _searchContainer.getEnd(),
						OrderByComparatorFactoryUtil.create(
							"BatchPlannerPlan",
							_searchContainer.getOrderByCol(),
							Objects.equals(
								_searchContainer.getOrderByType(), "asc"))),
					this::_toBatchPlannerPlanDisplay),
				BatchPlannerPlanServiceUtil.getBatchPlannerPlansCount(
					companyId, false, searchByKeyword));
		}
		else {
			_searchContainer.setResultsAndTotal(
				() -> TransformUtil.transform(
					BatchPlannerPlanServiceUtil.getBatchPlannerPlans(
						companyId, isExport(navigation), false, searchByKeyword,
						_searchContainer.getStart(), _searchContainer.getEnd(),
						OrderByComparatorFactoryUtil.create(
							"BatchPlannerPlan",
							_searchContainer.getOrderByCol(),
							Objects.equals(
								_searchContainer.getOrderByType(), "asc"))),
					this::_toBatchPlannerPlanDisplay),
				BatchPlannerPlanServiceUtil.getBatchPlannerPlansCount(
					companyId, isExport(navigation), false, searchByKeyword));
		}

		return _searchContainer;
	}

	private BatchPlannerPlanDisplay _toBatchPlannerPlanDisplay(
			BatchPlannerPlan batchPlannerPlan)
		throws PortalException {

		BatchPlannerPlanDisplay.Builder builder =
			new BatchPlannerPlanDisplay.Builder();

		builder.action(
			_getAction(batchPlannerPlan.isExport())
		).batchPlannerPlanId(
			batchPlannerPlan.getBatchPlannerPlanId()
		).createDate(
			batchPlannerPlan.getCreateDate()
		).export(
			batchPlannerPlan.isExport()
		).internalClassNameKey(
			TaskItemUtil.getInternalClassNameKey(
				batchPlannerPlan.getInternalClassName(),
				batchPlannerPlan.getTaskItemDelegateName())
		).title(
			batchPlannerPlan.getName()
		).userId(
			batchPlannerPlan.getUserId()
		).status(
			BatchPlannerPlanConstants.STATUS_INACTIVE
		);

		if (!batchPlannerPlan.isActive()) {
			return builder.build();
		}

		builder.status(batchPlannerPlan.getStatus());

		if (batchPlannerPlan.isExport()) {
			BatchEngineExportTask batchEngineExportTask =
				BatchEngineExportTaskLocalServiceUtil.
					getBatchEngineExportTaskByExternalReferenceCode(
						String.valueOf(
							batchPlannerPlan.getBatchPlannerPlanId()),
						batchPlannerPlan.getCompanyId());

			builder.processedItemsCount(
				batchEngineExportTask.getProcessedItemsCount()
			).totalItemsCount(
				batchEngineExportTask.getTotalItemsCount()
			);
		}
		else {
			BatchEngineImportTask batchEngineImportTask =
				BatchEngineImportTaskLocalServiceUtil.
					getBatchEngineImportTaskByExternalReferenceCode(
						String.valueOf(
							batchPlannerPlan.getBatchPlannerPlanId()),
						batchPlannerPlan.getCompanyId());

			int batchEngineImportTaskErrorsCount =
				batchEngineImportTask.getBatchEngineImportTaskErrorsCount();

			builder.failedItemsCount(
				batchEngineImportTaskErrorsCount
			).processedItemsCount(
				_getProcessedItemsCount(
					batchEngineImportTask, batchEngineImportTaskErrorsCount)
			).totalItemsCount(
				batchEngineImportTask.getTotalItemsCount()
			);
		}

		return builder.build();
	}

	private String _orderByCol;
	private String _orderByType;
	private SearchContainer _searchContainer;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy