1
22
23 package com.liferay.portlet.journal.action;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.kernel.util.ContentTypes;
27 import com.liferay.portal.kernel.util.ParamUtil;
28 import com.liferay.portal.security.auth.PrincipalException;
29 import com.liferay.portal.struts.ActionConstants;
30 import com.liferay.portal.util.PortalUtil;
31 import com.liferay.portlet.journal.NoSuchStructureException;
32 import com.liferay.portlet.journal.model.JournalStructure;
33 import com.liferay.portlet.journal.service.JournalStructureLocalServiceUtil;
34 import com.liferay.util.servlet.ServletResponseUtil;
35
36 import javax.servlet.http.HttpServletRequest;
37 import javax.servlet.http.HttpServletResponse;
38 import javax.servlet.jsp.PageContext;
39
40 import org.apache.struts.action.Action;
41 import org.apache.struts.action.ActionForm;
42 import org.apache.struts.action.ActionForward;
43 import org.apache.struts.action.ActionMapping;
44
45
52 public class GetStructureAction extends Action {
53
54 public ActionForward execute(
55 ActionMapping mapping, ActionForm form, HttpServletRequest req,
56 HttpServletResponse res)
57 throws Exception {
58
59 try {
60 long groupId = ParamUtil.getLong(req, "groupId");
61 String structureId = ParamUtil.getString(req, "structureId");
62
63 JournalStructure structure =
64 JournalStructureLocalServiceUtil.getStructure(
65 groupId, structureId);
66
67 String fileName = null;
68 byte[] byteArray = structure.getXsd().getBytes();
69
70 ServletResponseUtil.sendFile(
71 res, fileName, byteArray, ContentTypes.TEXT_XML_UTF8);
72
73 return null;
74 }
75 catch (PortalException pe) {
76 if (pe instanceof PrincipalException) {
77 PortalUtil.sendError(
78 HttpServletResponse.SC_FORBIDDEN, pe, req, res);
79 }
80 else if (pe instanceof NoSuchStructureException) {
81 PortalUtil.sendError(
82 HttpServletResponse.SC_NOT_FOUND, pe, req, res);
83 }
84
85 return null;
86 }
87 catch (Exception e) {
88 req.setAttribute(PageContext.EXCEPTION, e);
89
90 return mapping.findForward(ActionConstants.COMMON_ERROR);
91 }
92 }
93
94 }