001
014
015 package com.liferay.portlet.exportimport.action;
016
017 import com.liferay.portal.NoSuchGroupException;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.log.Log;
020 import com.liferay.portal.kernel.log.LogFactoryUtil;
021 import com.liferay.portal.kernel.servlet.SessionErrors;
022 import com.liferay.portal.kernel.servlet.SessionMessages;
023 import com.liferay.portal.kernel.util.Constants;
024 import com.liferay.portal.kernel.util.MapUtil;
025 import com.liferay.portal.kernel.util.ParamUtil;
026 import com.liferay.portal.kernel.util.StringUtil;
027 import com.liferay.portal.kernel.util.Validator;
028 import com.liferay.portal.model.BackgroundTask;
029 import com.liferay.portal.model.TrashedModel;
030 import com.liferay.portal.security.auth.PrincipalException;
031 import com.liferay.portal.service.BackgroundTaskLocalServiceUtil;
032 import com.liferay.portal.struts.PortletAction;
033 import com.liferay.portal.util.PortalUtil;
034 import com.liferay.portlet.exportimport.configuration.ExportImportConfigurationConstants;
035 import com.liferay.portlet.exportimport.configuration.ExportImportConfigurationHelper;
036 import com.liferay.portlet.exportimport.configuration.ExportImportConfigurationSettingsMapFactory;
037 import com.liferay.portlet.exportimport.model.ExportImportConfiguration;
038 import com.liferay.portlet.exportimport.service.ExportImportConfigurationServiceUtil;
039 import com.liferay.portlet.exportimport.service.ExportImportServiceUtil;
040 import com.liferay.portlet.sites.action.ActionUtil;
041 import com.liferay.portlet.trash.service.TrashEntryServiceUtil;
042 import com.liferay.portlet.trash.util.TrashUtil;
043
044 import java.io.Serializable;
045
046 import java.util.ArrayList;
047 import java.util.List;
048 import java.util.Map;
049
050 import javax.portlet.ActionRequest;
051 import javax.portlet.ActionResponse;
052 import javax.portlet.PortletConfig;
053 import javax.portlet.PortletContext;
054 import javax.portlet.PortletRequestDispatcher;
055 import javax.portlet.RenderRequest;
056 import javax.portlet.RenderResponse;
057 import javax.portlet.ResourceRequest;
058 import javax.portlet.ResourceResponse;
059
060 import org.apache.struts.action.ActionForm;
061 import org.apache.struts.action.ActionForward;
062 import org.apache.struts.action.ActionMapping;
063
064
067 public class EditExportConfigurationAction extends PortletAction {
068
069 @Override
070 public void processAction(
071 ActionMapping actionMapping, ActionForm actionForm,
072 PortletConfig portletConfig, ActionRequest actionRequest,
073 ActionResponse actionResponse)
074 throws Exception {
075
076 hideDefaultSuccessMessage(actionRequest);
077
078 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
079
080 try {
081 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
082 updateExportConfiguration(actionRequest);
083 }
084 else if (cmd.equals(Constants.DELETE)) {
085 deleteExportImportConfiguration(actionRequest, false);
086 }
087 else if (cmd.equals(Constants.EXPORT)) {
088 long exportImportConfigurationId = ParamUtil.getLong(
089 actionRequest, "exportImportConfigurationId");
090
091 ExportImportServiceUtil.exportLayoutsAsFileInBackground(
092 exportImportConfigurationId);
093 }
094 else if (cmd.equals(Constants.MOVE_TO_TRASH)) {
095 deleteExportImportConfiguration(actionRequest, true);
096 }
097 else if (cmd.equals(Constants.RESTORE)) {
098 restoreTrashEntries(actionRequest);
099 }
100 else if (cmd.equals(Constants.RELAUNCH)) {
101 relaunchExportLayoutConfiguration(actionRequest);
102 }
103 else if (Validator.isNull(cmd)) {
104 addSessionMessages(actionRequest);
105 }
106
107 String redirect = ParamUtil.getString(actionRequest, "redirect");
108
109 sendRedirect(actionRequest, actionResponse, redirect);
110 }
111 catch (Exception e) {
112 _log.error(e, e);
113
114 SessionErrors.add(actionRequest, e.getClass());
115
116 sendRedirect(actionRequest, actionResponse);
117 }
118 }
119
120 @Override
121 public ActionForward render(
122 ActionMapping actionMapping, ActionForm actionForm,
123 PortletConfig portletConfig, RenderRequest renderRequest,
124 RenderResponse renderResponse)
125 throws Exception {
126
127 try {
128 ActionUtil.getGroup(renderRequest);
129 }
130 catch (Exception e) {
131 if (e instanceof NoSuchGroupException ||
132 e instanceof PrincipalException) {
133
134 SessionErrors.add(renderRequest, e.getClass());
135
136 return actionMapping.findForward("portlet.export_import.error");
137 }
138 else {
139 throw e;
140 }
141 }
142
143 return actionMapping.findForward(
144 getForward(renderRequest, "portlet.export_import.export_layouts"));
145 }
146
147 @Override
148 public void serveResource(
149 ActionMapping actionMapping, ActionForm actionForm,
150 PortletConfig portletConfig, ResourceRequest resourceRequest,
151 ResourceResponse resourceResponse)
152 throws Exception {
153
154 PortletContext portletContext = portletConfig.getPortletContext();
155
156 PortletRequestDispatcher portletRequestDispatcher =
157 portletContext.getRequestDispatcher(
158 "/html/portlet/export_import/export_layouts_processes.jsp");
159
160 portletRequestDispatcher.include(resourceRequest, resourceResponse);
161 }
162
163 protected void addSessionMessages(ActionRequest actionRequest)
164 throws Exception {
165
166 String portletId = PortalUtil.getPortletId(actionRequest);
167 long exportImportConfigurationId = ParamUtil.getLong(
168 actionRequest, "exportImportConfigurationId");
169
170 SessionMessages.add(
171 actionRequest, portletId + "exportImportConfigurationId",
172 exportImportConfigurationId);
173
174 String name = ParamUtil.getString(actionRequest, "name");
175 String description = ParamUtil.getString(actionRequest, "description");
176
177 SessionMessages.add(actionRequest, portletId + "name", name);
178 SessionMessages.add(
179 actionRequest, portletId + "description", description);
180
181 long groupId = ParamUtil.getLong(actionRequest, "groupId");
182
183 Map<String, Serializable> settingsMap =
184 ExportImportConfigurationSettingsMapFactory.buildSettingsMap(
185 actionRequest, groupId,
186 ExportImportConfigurationConstants.TYPE_EXPORT_LAYOUT);
187
188 SessionMessages.add(
189 actionRequest, portletId + "settingsMap", settingsMap);
190 }
191
192 protected void deleteExportImportConfiguration(
193 ActionRequest actionRequest, boolean moveToTrash)
194 throws PortalException {
195
196 long[] deleteExportImportConfigurationIds = null;
197
198 long exportImportConfigurationId = ParamUtil.getLong(
199 actionRequest, "exportImportConfigurationId");
200
201 if (exportImportConfigurationId > 0) {
202 deleteExportImportConfigurationIds =
203 new long[] {exportImportConfigurationId};
204 }
205 else {
206 deleteExportImportConfigurationIds = StringUtil.split(
207 ParamUtil.getString(
208 actionRequest, "deleteExportImportConfigurationIds"), 0L);
209 }
210
211 List<TrashedModel> trashedModels = new ArrayList<>();
212
213 for (long deleteExportImportConfigurationId :
214 deleteExportImportConfigurationIds) {
215
216 if (moveToTrash) {
217 ExportImportConfiguration exportImportConfiguration =
218 ExportImportConfigurationServiceUtil.
219 moveExportImportConfigurationToTrash(
220 deleteExportImportConfigurationId);
221
222 trashedModels.add(exportImportConfiguration);
223 }
224 else {
225 ExportImportConfigurationServiceUtil.
226 deleteExportImportConfiguration(
227 deleteExportImportConfigurationId);
228 }
229 }
230
231 if (moveToTrash && !trashedModels.isEmpty()) {
232 TrashUtil.addTrashSessionMessages(actionRequest, trashedModels);
233
234 hideDefaultSuccessMessage(actionRequest);
235 }
236 }
237
238 protected void relaunchExportLayoutConfiguration(
239 ActionRequest actionRequest)
240 throws Exception {
241
242 long backgroundTaskId = ParamUtil.getLong(
243 actionRequest, "backgroundTaskId");
244
245 BackgroundTask backgroundTask =
246 BackgroundTaskLocalServiceUtil.getBackgroundTask(backgroundTaskId);
247
248 Map<String, Serializable> taskContextMap =
249 backgroundTask.getTaskContextMap();
250
251 long exportImportConfigurationId = MapUtil.getLong(
252 taskContextMap, "exportImportConfigurationId");
253
254 ExportImportServiceUtil.exportLayoutsAsFileInBackground(
255 exportImportConfigurationId);
256 }
257
258 protected void restoreTrashEntries(ActionRequest actionRequest)
259 throws Exception {
260
261 long[] restoreTrashEntryIds = StringUtil.split(
262 ParamUtil.getString(actionRequest, "restoreTrashEntryIds"), 0L);
263
264 for (long restoreTrashEntryId : restoreTrashEntryIds) {
265 TrashEntryServiceUtil.restoreEntry(restoreTrashEntryId);
266 }
267 }
268
269 protected ExportImportConfiguration updateExportConfiguration(
270 ActionRequest actionRequest)
271 throws Exception {
272
273 long exportImportConfigurationId = ParamUtil.getLong(
274 actionRequest, "exportImportConfigurationId");
275
276 if (exportImportConfigurationId > 0) {
277 return ExportImportConfigurationHelper.
278 updateExportLayoutExportImportConfiguration(actionRequest);
279 }
280 else {
281 return ExportImportConfigurationHelper.
282 addExportLayoutExportImportConfiguration(actionRequest);
283 }
284 }
285
286 private static final Log _log = LogFactoryUtil.getLog(
287 EditExportConfigurationAction.class);
288
289 }