/** * 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.liferay.exportimport.internal.background.task; import com.liferay.exportimport.kernel.lar.ExportImportClassedModelUtil; import com.liferay.exportimport.kernel.lar.ManifestSummary; import com.liferay.exportimport.kernel.lar.PortletDataHandler; import com.liferay.exportimport.kernel.lar.PortletDataHandlerStatusMessageSender; import com.liferay.exportimport.kernel.lar.StagedModelDataHandler; import com.liferay.exportimport.kernel.lar.StagedModelDataHandlerRegistryUtil; import com.liferay.exportimport.portlet.data.handler.provider.PortletDataHandlerProvider; import com.liferay.portal.kernel.backgroundtask.BackgroundTaskConstants; import com.liferay.portal.kernel.backgroundtask.BackgroundTaskStatusMessageSender; import com.liferay.portal.kernel.backgroundtask.BackgroundTaskThreadLocal; import com.liferay.portal.kernel.messaging.Message; import com.liferay.portal.kernel.model.StagedModel; import com.liferay.portal.kernel.util.LongWrapper; import java.util.HashMap; import java.util.Map; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; /** * @author Michael C. Han */ @Component( immediate = true, service = PortletDataHandlerStatusMessageSender.class ) public class PortletDataHandlerStatusMessageSenderImpl implements PortletDataHandlerStatusMessageSender { /** * @deprecated As of 3.0.0, replaced by {@link #sendStatusMessage(String, * String[], ManifestSummary)} */ @Deprecated @Override public void sendStatusMessage( String messageType, ManifestSummary manifestSummary) { sendStatusMessage(messageType, (String[])null, manifestSummary); } @Override public void sendStatusMessage( String messageType, String portletId, ManifestSummary manifestSummary) { Message message = new Message(); init(message, messageType, manifestSummary); message.put("portletId", portletId); PortletDataHandler portletDataHandler = _portletDataHandlerProvider.provide(portletId); if (portletDataHandler == null) { _backgroundTaskStatusMessageSender.sendBackgroundTaskStatusMessage( message); return; } long portletModelAdditionCountersTotal = portletDataHandler.getExportModelCount(manifestSummary); if (portletModelAdditionCountersTotal < 0) { portletModelAdditionCountersTotal = 0; } message.put( "portletModelAdditionCountersTotal", portletModelAdditionCountersTotal); _backgroundTaskStatusMessageSender.sendBackgroundTaskStatusMessage( message); } @Override public void sendStatusMessage( String messageType, String[] portletIds, ManifestSummary manifestSummary) { Message message = new Message(); init(message, messageType, manifestSummary); message.put("portletIds", portletIds); _backgroundTaskStatusMessageSender.sendBackgroundTaskStatusMessage( message); } @Override public <T extends StagedModel> void sendStatusMessage( String messageType, T stagedModel, ManifestSummary manifestSummary) { Message message = new Message(); init(message, messageType, manifestSummary); StagedModelDataHandler<T> stagedModelDataHandler = (StagedModelDataHandler<T>) StagedModelDataHandlerRegistryUtil.getStagedModelDataHandler( ExportImportClassedModelUtil.getClassName(stagedModel)); message.put( "stagedModelName", stagedModelDataHandler.getDisplayName(stagedModel)); message.put( "stagedModelType", String.valueOf(stagedModel.getStagedModelType())); message.put("uuid", stagedModel.getUuid()); _backgroundTaskStatusMessageSender.sendBackgroundTaskStatusMessage( message); } protected void init( Message message, String messageType, ManifestSummary manifestSummary) { message.put( BackgroundTaskConstants.BACKGROUND_TASK_ID, BackgroundTaskThreadLocal.getBackgroundTaskId()); message.put("messageType", messageType); Map<String, LongWrapper> modelAdditionCounters = manifestSummary.getModelAdditionCounters(); message.put( "modelAdditionCounters", new HashMap<>(modelAdditionCounters)); Map<String, LongWrapper> modelDeletionCounters = manifestSummary.getModelDeletionCounters(); message.put( "modelDeletionCounters", new HashMap<>(modelDeletionCounters)); } @Reference private BackgroundTaskStatusMessageSender _backgroundTaskStatusMessageSender; @Reference private PortletDataHandlerProvider _portletDataHandlerProvider; }