Author: vbriand Date: 2011-02-24 11:16:35 +0100 (Thu, 24 Feb 2011) New Revision: 213 Url: http://chorem.org/repositories/revision/bow/213 Log: The bookmarks are now exported using Struts2 Modified: trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java trunk/src/main/resources/struts.xml Modified: trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java 2011-02-24 09:06:09 UTC (rev 212) +++ trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java 2011-02-24 10:16:35 UTC (rev 213) @@ -23,10 +23,14 @@ */ package org.chorem.bow.action; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; import java.util.List; -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; @@ -39,19 +43,22 @@ /** * Export son bookmark au format HTML - * TODO poussin 20110211 n'y aurait-il pas une meilleur facon d'envoyer un fichier - * en struts ??? * * @author poussin */ public class ExportBookmarksAction extends BowBaseAction implements ServletResponseAware { private static final long serialVersionUID = 45880214686011946L; protected HttpServletResponse response; + protected InputStream inputStream; @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } + + public InputStream getInputStream() { + return inputStream; + } /** * Exports the bookmarks in HTML format @@ -63,20 +70,17 @@ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()).criteria(); List<BowBookmark> bookmarks = proxy.findAllByCriteria(BowBookmark.class, criteria).getAll(); String export = BookmarkUtils.getExportHtmlBookmark(bookmarks); - byte[] buff = export.getBytes(); - ServletOutputStream op; try { - op = response.getOutputStream(); - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment; filename=\"bookmarks.html\""); - response.setContentLength(buff.length); - op.write(buff, 0, buff.length); - op.flush(); - op.close(); + File tmp = File.createTempFile("bookmarks", "tmp.html"); + + tmp.deleteOnExit(); + BufferedWriter out = new BufferedWriter(new FileWriter(tmp)); + out.write(export); + out.close(); + inputStream = new FileInputStream(tmp); } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.error("Error when exporting bookmarks to HTML : " + e.getMessage()); } return SUCCESS; } Modified: trunk/src/main/resources/struts.xml =================================================================== --- trunk/src/main/resources/struts.xml 2011-02-24 09:06:09 UTC (rev 212) +++ trunk/src/main/resources/struts.xml 2011-02-24 10:16:35 UTC (rev 213) @@ -81,6 +81,11 @@ </action> <action name="exportBookmarks" class="org.chorem.bow.action.ExportBookmarksAction"> <interceptor-ref name="loginStack" /> + <result type="stream"> + <param name="contentType">application/octet-stream</param> + <param name="inputName">inputStream</param> + <param name="contentDisposition">attachment;filename="bookmarks.html"</param> + </result> </action> <action name="modifyBookmark" class="org.chorem.bow.action.ModifyBookmarkAction"> <interceptor-ref name="store">
participants (1)
-
vbriand@users.chorem.org