001
014
015 package com.liferay.portal.lar.backgroundtask;
016
017 import com.liferay.portal.kernel.backgroundtask.BackgroundTaskConstants;
018 import com.liferay.portal.kernel.backgroundtask.BackgroundTaskResult;
019 import com.liferay.portal.kernel.backgroundtask.BackgroundTaskStatus;
020 import com.liferay.portal.kernel.backgroundtask.BackgroundTaskStatusRegistryUtil;
021 import com.liferay.portal.kernel.backgroundtask.BaseBackgroundTaskExecutor;
022 import com.liferay.portal.kernel.json.JSONArray;
023 import com.liferay.portal.kernel.json.JSONObject;
024 import com.liferay.portal.kernel.lar.MissingReference;
025 import com.liferay.portal.kernel.lar.MissingReferences;
026 import com.liferay.portal.kernel.staging.StagingUtil;
027 import com.liferay.portal.kernel.util.Validator;
028 import com.liferay.portal.model.BackgroundTask;
029 import com.liferay.portal.service.BackgroundTaskLocalServiceUtil;
030
031 import java.io.Serializable;
032
033 import java.util.HashMap;
034 import java.util.Map;
035
036
039 public abstract class BaseStagingBackgroundTaskExecutor
040 extends BaseBackgroundTaskExecutor {
041
042 public BaseStagingBackgroundTaskExecutor() {
043 setBackgroundTaskStatusMessageTranslator(
044 new DefaultExportImportBackgroundTaskStatusMessageTranslator());
045
046 setSerial(true);
047 }
048
049 @Override
050 public String handleException(BackgroundTask backgroundTask, Exception e) {
051 JSONObject jsonObject = StagingUtil.getExceptionMessagesJSONObject(
052 getLocale(backgroundTask), e, backgroundTask.getTaskContextMap());
053
054 return jsonObject.toString();
055 }
056
057 protected void clearBackgroundTaskStatus(BackgroundTask backgroundTask) {
058 BackgroundTaskStatus backgroundTaskStatus =
059 BackgroundTaskStatusRegistryUtil.getBackgroundTaskStatus(
060 backgroundTask.getBackgroundTaskId());
061
062 backgroundTaskStatus.clearAttributes();
063 }
064
065 protected void markBackgroundTask(
066 long backgroundTaskId, String backgroundTaskState) {
067
068 BackgroundTask backgroundTask =
069 BackgroundTaskLocalServiceUtil.fetchBackgroundTask(
070 backgroundTaskId);
071
072 if ((backgroundTask == null) || Validator.isNull(backgroundTaskState)) {
073 return;
074 }
075
076 Map<String, Serializable> taskContextMap =
077 backgroundTask.getTaskContextMap();
078
079 if (taskContextMap == null) {
080 taskContextMap = new HashMap<String, Serializable>();
081 }
082
083 taskContextMap.put(backgroundTaskState, Boolean.TRUE);
084
085 backgroundTask.setTaskContextMap(taskContextMap);
086
087 BackgroundTaskLocalServiceUtil.updateBackgroundTask(backgroundTask);
088 }
089
090 protected BackgroundTaskResult processMissingReferences(
091 long backgroundTaskId, MissingReferences missingReferences) {
092
093 BackgroundTaskResult backgroundTaskResult = new BackgroundTaskResult(
094 BackgroundTaskConstants.STATUS_SUCCESSFUL);
095
096 Map<String, MissingReference> weakMissingReferences =
097 missingReferences.getWeakMissingReferences();
098
099 if ((weakMissingReferences != null) &&
100 !weakMissingReferences.isEmpty()) {
101
102 BackgroundTask backgroundTask =
103 BackgroundTaskLocalServiceUtil.fetchBackgroundTask(
104 backgroundTaskId);
105
106 JSONArray jsonArray = StagingUtil.getWarningMessagesJSONArray(
107 getLocale(backgroundTask), weakMissingReferences,
108 backgroundTask.getTaskContextMap());
109
110 backgroundTaskResult.setStatusMessage(jsonArray.toString());
111 }
112
113 return backgroundTaskResult;
114 }
115
116 }