2 * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
\r
4 * This library is free software; you can redistribute it and/or modify it under
\r
5 * the terms of the GNU Lesser General Public License as published by the Free
\r
6 * Software Foundation; either version 2.1 of the License, or (at your option)
\r
9 * This library is distributed in the hope that it will be useful, but WITHOUT
\r
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
\r
11 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
\r
15 package com.liferay.portlet.messageboards.action;
\r
17 import java.io.InputStream;
\r
18 import java.util.Map;
\r
20 import javax.portlet.ActionRequest;
\r
21 import javax.portlet.ActionResponse;
\r
22 import javax.portlet.PortletConfig;
\r
23 import javax.servlet.http.HttpServletRequest;
\r
24 import javax.servlet.http.HttpServletResponse;
\r
26 import org.apache.struts.action.ActionForm;
\r
27 import org.apache.struts.action.ActionForward;
\r
28 import org.apache.struts.action.ActionMapping;
\r
30 import com.liferay.portal.kernel.util.ParamUtil;
\r
31 import com.liferay.portal.struts.ActionConstants;
\r
32 import com.liferay.portal.struts.PortletAction;
\r
33 import com.liferay.portal.util.PortalUtil;
\r
34 import com.liferay.portlet.documentlibrary.conversion.util.ENTDocumentConversionServiceUtil;
\r
35 import com.liferay.portlet.messageboards.model.MBMessage;
\r
36 import com.liferay.portlet.messageboards.service.MBMessageServiceUtil;
\r
37 import com.pentila.entSavoie.servlet.FLVPseudoStreamer;
\r
38 import com.pentila.entSavoie.servlet.ServletResponseServiceUtil;
\r
41 * @author Brian Wing Shun Chan
\r
43 public class GetMessageAttachmentAction extends PortletAction {
\r
46 public void processAction(
\r
47 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
\r
48 ActionRequest actionRequest, ActionResponse actionResponse)
\r
52 long messageId = ParamUtil.getLong(actionRequest, "messageId");
\r
53 String fileName = ParamUtil.getString(actionRequest, "attachment");
\r
55 //on recupere le targetExtension
\r
56 String targetExtension = ParamUtil.getString(actionRequest, "targetExtension", "");
\r
58 HttpServletRequest request = PortalUtil.getHttpServletRequest(
\r
60 HttpServletResponse response = PortalUtil.getHttpServletResponse(
\r
63 getFile(messageId, fileName, targetExtension, request, response);
\r
65 setForward(actionRequest, ActionConstants.COMMON_NULL);
\r
67 catch (Exception e) {
\r
68 PortalUtil.sendError(e, actionRequest, actionResponse);
\r
73 public ActionForward strutsExecute(
\r
74 ActionMapping mapping, ActionForm form, HttpServletRequest request,
\r
75 HttpServletResponse response)
\r
79 long messageId = ParamUtil.getLong(request, "messageId");
\r
80 String fileName = ParamUtil.getString(request, "attachment");
\r
82 //on recupere le targetExtension
\r
83 String targetExtension = ParamUtil.getString(request, "targetExtension", "");
\r
85 getFile(messageId, fileName, targetExtension, request, response);
\r
89 catch (Exception e) {
\r
90 PortalUtil.sendError(e, request, response);
\r
96 protected void getFile(
\r
97 long messageId, String fileName, String targetExtension, HttpServletRequest request,
\r
98 HttpServletResponse response)
\r
101 InputStream is = null;
\r
104 MBMessage message = MBMessageServiceUtil.getMessage(messageId);
\r
105 long companyId = message.getCompanyId();
\r
107 String path = message.getAttachmentsDir() + "/" + fileName;
\r
109 // realise la conversion du fichier ou nous retourne celui-ci si pas de conversion voulu
\r
110 Map<String, Object> fais = ENTDocumentConversionServiceUtil.getFileAsInputStream(
\r
117 String contentType = (String)fais.get("contentType");
\r
118 int contentLength = (Integer)fais.get("contentLength");
\r
119 fileName = (String)fais.get("fileName");
\r
120 is = (InputStream)fais.get("stream");
\r
122 String ppos = request.getParameter("start");
\r
123 long pos = ppos == null || ppos.length() == 0 ? 0 : Long.parseLong(ppos);
\r
125 String forceContentDisposition = ParamUtil.getString(request, "contentDispo");
\r
126 String fcd = forceContentDisposition == null ? "" : forceContentDisposition;
\r
128 if (pos!=0 && contentType.equals("application/x-shockwave-flash") && fcd.isEmpty()) {
\r
129 FLVPseudoStreamer flvPseudoStreamer = new FLVPseudoStreamer();
\r
130 flvPseudoStreamer.service(request, response, fileName, is, contentLength, contentType);
\r
133 ServletResponseServiceUtil.sendFile(
\r
134 response, fileName, is, contentLength, contentType, fcd);
\r
145 protected boolean isCheckMethodOnProcessAction() {
\r
146 return _CHECK_METHOD_ON_PROCESS_ACTION;
\r
149 private static final boolean _CHECK_METHOD_ON_PROCESS_ACTION = false;
\r