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