Example usage for com.liferay.portal.kernel.portlet PortletResponseUtil sendFile

List of usage examples for com.liferay.portal.kernel.portlet PortletResponseUtil sendFile

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.portlet PortletResponseUtil sendFile.

Prototype

public static void sendFile(PortletRequest portletRequest, MimeResponse mimeResponse, String fileName,
            InputStream inputStream) throws IOException 

Source Link

Usage

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();
    }
}