List of usage examples for com.liferay.portal.kernel.portlet PortletResponseUtil sendFile
public static void sendFile(PortletRequest portletRequest, MimeResponse mimeResponse, String fileName, InputStream inputStream) throws IOException
From source file:com.liferay.events.global.mobile.portlet.PollsPortlet.java
License:Open Source License
@Override public void serveResource(ResourceRequest request, ResourceResponse response) throws PortletException, IOException { // do search and return result String cmd = ParamUtil.getString(request, "cmd"); long questionId = ParamUtil.getLong(request, "questionId"); EventPollQuestion question;// w ww . j a v a 2s . c om List<EventPollAnswer> answers; try { question = EventPollQuestionLocalServiceUtil.getEventPollQuestion(questionId); answers = EventPollAnswerLocalServiceUtil.getAllAnswerObjs(questionId); } catch (SystemException e) { throw new PortletException("Cannot get answers for questionId " + questionId); } catch (PortalException e) { throw new PortletException("Cannot get question or answers for questionId " + questionId); } if (Validator.equals(cmd, "exportAnswersCSV")) { File f = FileUtil.createTempFile(); CSVWriter writer = new CSVWriter(new FileWriter(f), ','); // find out all headers List<String> headers = new ArrayList<String>(); headers.add("ID"); headers.add("RAW ANSWER"); Set<String> payloadHeaders = new HashSet<String>(); for (EventPollAnswer answer : answers) { JSONObject payloadObj = null; try { payloadObj = JSONFactoryUtil.createJSONObject(answer.getPayload()); if (Validator.isNull(payloadObj)) { continue; } } catch (JSONException e) { throw new PortletException("cannot read payload: " + answer.getPayload()); } Iterator<String> keyIt = payloadObj.keys(); while (keyIt.hasNext()) { String key = keyIt.next(); payloadHeaders.add(key); } } headers.addAll(payloadHeaders); Map<String, Integer> headerCols = new HashMap<String, Integer>(); for (int i = 0; i < headers.size(); i++) { headerCols.put(headers.get(i), i); } // now print them writer.writeNext(headers.toArray(new String[] {})); for (EventPollAnswer answer : answers) { List<String> vals = new ArrayList<String>(); JSONObject payloadObj = null; try { payloadObj = JSONFactoryUtil.createJSONObject(answer.getPayload()); if (Validator.isNull(payloadObj)) { continue; } } catch (JSONException e) { throw new PortletException("cannot read payload: " + answer.getPayload()); } for (String headerCol : headers) { String val; if (headerCol.equals("ID")) { val = String.valueOf(answer.getAnswerId()); } else if (headerCol.equals("RAW ANSWER")) { val = String.valueOf(answer.getAnswer()); } else { val = payloadObj.getString(headerCol); } if (Validator.isNull(val)) { val = ""; } vals.add(val); } writer.writeNext(vals.toArray(new String[] {})); } writer.flush(); writer.close(); PortletResponseUtil.sendFile(request, response, question.getShortTitle().replaceAll("[^0-9A-Za-z]", "-") + ".csv", new FileInputStream(f)); } else if (Validator.equals(cmd, "exportAnswersXLSX")) { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("Poll Answers"); Row headerRow = sheet.createRow(0); Cell headerCell = headerRow.createCell(0); headerCell.setCellValue("ID"); headerCell = headerRow.createCell(1); headerCell.setCellValue("Raw Answer"); HashMap<String, Integer> rowMap = new HashMap<String, Integer>(); int currentRow = 1; int nextHeaderCol = 2; for (EventPollAnswer answer : answers) { Row row = sheet.createRow(currentRow); currentRow++; JSONObject payloadObj = null; long answerId = answer.getAnswerId(); Cell idCell = row.createCell(0); idCell.setCellValue(String.valueOf(answerId)); try { payloadObj = JSONFactoryUtil.createJSONObject(answer.getPayload()); if (Validator.isNull(payloadObj)) { continue; } } catch (JSONException e) { throw new PortletException("cannot read payload: " + answer.getPayload()); } Cell answerCell = row.createCell(1); answerCell.setCellValue(String.valueOf(answer.getAnswer())); Iterator<String> keyIt = payloadObj.keys(); while (keyIt.hasNext()) { String key = keyIt.next(); Integer headerCol = rowMap.get(key); if (Validator.isNull(headerCol)) { rowMap.put(key, nextHeaderCol); Cell nextHeaderCell = headerRow.createCell(nextHeaderCol); nextHeaderCell.setCellValue(key.toUpperCase()); headerCol = nextHeaderCol; nextHeaderCol++; } Cell cell = row.createCell(headerCol); cell.setCellValue(payloadObj.getString(key)); } } File f = FileUtil.createTempFile(); FileOutputStream fos = new FileOutputStream(f); workbook.write(fos); fos.flush(); fos.close(); PortletResponseUtil.sendFile(request, response, question.getShortTitle().replaceAll("[^0-9A-Za-z]", "-") + ".xlsx", new FileInputStream(f)); } }
From source file:org.politaktiv.communitynewsletter.application.CommunityNewsletterPortlet.java
License:Apache License
@Override public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) { ThemeDisplay themeDisplay = (ThemeDisplay) resourceRequest.getAttribute(WebKeys.THEME_DISPLAY); List<User> currentGroupUserList = null; try {/* ww w . j a v a2 s . co m*/ currentGroupUserList = UserLocalServiceUtil.getGroupUsers(themeDisplay.getScopeGroupId()); StringBuilder csvStringBuilder = new StringBuilder(); ByteArrayOutputStream csvByteArrayOutputStream = new ByteArrayOutputStream(); csvStringBuilder.append("first name"); csvStringBuilder.append(","); csvStringBuilder.append("last name"); csvStringBuilder.append(","); csvStringBuilder.append("email adress"); csvStringBuilder.append("\n"); for (User user : currentGroupUserList) { csvStringBuilder.append(user.getFirstName()); csvStringBuilder.append(","); csvStringBuilder.append(user.getLastName()); csvStringBuilder.append(","); csvStringBuilder.append(user.getEmailAddress()); csvStringBuilder.append("\n"); } csvByteArrayOutputStream.write(csvStringBuilder.toString().getBytes()); Date todayDate = new Date(); resourceResponse.setCharacterEncoding("utf-8"); resourceResponse.setContentType("text/csv"); PortletResponseUtil.sendFile(resourceRequest, resourceResponse, themeDisplay.getScopeGroupName() + "-" + todayDate.toString() + "-CommunityMemberList.csv", csvByteArrayOutputStream.toByteArray()); csvByteArrayOutputStream.close(); } catch (SystemException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (PortalException e) { // TODO Auto-generated catch block e.printStackTrace(); } }