Example usage for org.apache.commons.text StringEscapeUtils escapeHtml4

List of usage examples for org.apache.commons.text StringEscapeUtils escapeHtml4

Introduction

In this page you can find the example usage for org.apache.commons.text StringEscapeUtils escapeHtml4.

Prototype

public static final String escapeHtml4(final String input) 

Source Link

Document

Escapes the characters in a String using HTML entities.

For example:

"bread" & "butter"

becomes:

"bread" & "butter".

Usage

From source file:org.openestate.tool.helloworld.HelloWorldFrameSidebarExtension.java

private JPopupMenu createActionMenu(final DbHelloWorldObject object) {
    // create a popup menu for the Hello World sidebar
    final JPopupMenu popup = new JPopupMenu();

    // add action into the popup menu for sidebar refresh
    popup.add(new JMenuItem(new HelloWorldPlugin.SidebarRefreshAction()));

    // add action into the popup menu for a new object
    popup.add(new JMenuItem(new HelloWorldPlugin.ObjectFormAction()));

    // no object is selected in the sidebar
    //noinspection StatementWithEmptyBody
    if (object == null) {
    }//www .ja v  a2 s  .  c  o m

    // add further actions for the selected sidebar entry
    else {
        String title = StringUtils.abbreviate(StringUtils.trimToEmpty(object.name), 30);
        popup.add(
                ImmoToolUtils.createMenuSeparator("<html>" + StringEscapeUtils.escapeHtml4(title) + "</html>"));

        // add action into the popup menu for editing the selected object
        popup.add(new HelloWorldPlugin.ObjectFormAction(object.id));

        // add action into the popup menu for removing the selected object
        popup.add(new HelloWorldPlugin.ObjectRemoveAction(object.id));
    }

    // return the created popup menu
    return popup;
}

From source file:org.sakaiproject.assignment.impl.AssignmentServiceImpl.java

private void zipSubmissions(String assignmentReference, String assignmentTitle, Assignment.GradeType gradeType,
        Assignment.SubmissionType typeOfSubmission, Iterator submissions, OutputStream outputStream,
        StringBuilder exceptionMessage, boolean withStudentSubmissionText,
        boolean withStudentSubmissionAttachment, boolean withGradeFile, boolean withFeedbackText,
        boolean withFeedbackComment, boolean withFeedbackAttachment, boolean withoutFolders,
        String gradeFileFormat, boolean includeNotSubmitted, String siteId) {
    ZipOutputStream out = null;//from ww  w.ja  va 2s  .  c  o  m

    boolean isAdditionalNotesEnabled = false;
    Site st = null;
    try {
        st = siteService.getSite(siteId);
        isAdditionalNotesEnabled = candidateDetailProvider != null
                && candidateDetailProvider.isAdditionalNotesEnabled(st);
    } catch (IdUnusedException e) {
        log.warn("Could not find site {} - isAdditionalNotesEnabled set to false", siteId);
    }

    try {
        out = new ZipOutputStream(outputStream);

        // create the folder structure - named after the assignment's title
        final String root = escapeInvalidCharsEntry(Validator.escapeZipEntry(assignmentTitle))
                + Entity.SEPARATOR;

        final SpreadsheetExporter.Type type = SpreadsheetExporter.Type.valueOf(gradeFileFormat.toUpperCase());
        final SpreadsheetExporter sheet = SpreadsheetExporter.getInstance(type, assignmentTitle,
                gradeType.toString(), getCsvSeparator());

        String submittedText = "";
        if (!submissions.hasNext()) {
            exceptionMessage.append("There is no submission yet. ");
        }

        if (isAdditionalNotesEnabled) {
            sheet.addHeader(resourceLoader.getString("grades.id"), resourceLoader.getString("grades.eid"),
                    resourceLoader.getString("grades.lastname"), resourceLoader.getString("grades.firstname"),
                    resourceLoader.getString("grades.grade"), resourceLoader.getString("grades.submissionTime"),
                    resourceLoader.getString("grades.late"), resourceLoader.getString("gen.notes"));
        } else {
            sheet.addHeader(resourceLoader.getString("grades.id"), resourceLoader.getString("grades.eid"),
                    resourceLoader.getString("grades.lastname"), resourceLoader.getString("grades.firstname"),
                    resourceLoader.getString("grades.grade"), resourceLoader.getString("grades.submissionTime"),
                    resourceLoader.getString("grades.late"));
        }

        // allow add assignment members
        final List<User> allowAddSubmissionUsers = allowAddSubmissionUsers(assignmentReference);

        // Create the ZIP file
        String caughtException = null;
        String caughtStackTrace = null;
        final StringBuilder submittersAdditionalNotesHtml = new StringBuilder();

        while (submissions.hasNext()) {
            final AssignmentSubmission s = (AssignmentSubmission) submissions.next();
            boolean isAnon = assignmentUsesAnonymousGrading(s.getAssignment());
            //SAK-29314 added a new value where it's by default submitted but is marked when the user submits
            if ((s.getSubmitted() && s.getUserSubmission()) || includeNotSubmitted) {
                // get the submitter who submitted the submission see if the user is still in site
                final Optional<AssignmentSubmissionSubmitter> assignmentSubmitter = s.getSubmitters().stream()
                        .findAny();
                try {
                    User u = null;
                    if (assignmentSubmitter.isPresent()) {
                        u = userDirectoryService.getUser(assignmentSubmitter.get().getSubmitter());
                    }
                    if (allowAddSubmissionUsers.contains(u)) {
                        String submittersName = root;

                        final User[] submitters = s.getSubmitters().stream().map(p -> {
                            try {
                                return userDirectoryService.getUser(p.getSubmitter());
                            } catch (UserNotDefinedException e) {
                                log.warn("User not found {}, {}", p.getSubmitter(), e.getMessage());
                            }
                            return null;
                        }).filter(Objects::nonNull).toArray(User[]::new);

                        String submittersString = "";
                        for (int i = 0; i < submitters.length; i++) {
                            if (i > 0) {
                                submittersString = submittersString.concat("; ");
                            }
                            String fullName = submitters[i].getSortName();
                            // in case the user doesn't have first name or last name
                            if (!fullName.contains(",")) {
                                fullName = fullName.concat(",");
                            }
                            submittersString = submittersString.concat(fullName);
                            // add the eid to the end of it to guarantee folder name uniqness
                            // if user Eid contains non ascii characters, the user internal id will be used
                            final String userEid = submitters[i].getEid();
                            final String candidateEid = escapeInvalidCharsEntry(userEid);
                            if (candidateEid.equals(userEid)) {
                                submittersString = submittersString + "(" + candidateEid + ")";
                            } else {
                                submittersString = submittersString + "(" + submitters[i].getId() + ")";
                            }
                            submittersString = escapeInvalidCharsEntry(submittersString);
                            // Work out if submission is late.
                            final String latenessStatus = whenSubmissionMade(s);
                            log.debug("latenessStatus: " + latenessStatus);

                            final String anonTitle = resourceLoader.getString("grading.anonymous.title");
                            final String fullAnonId = s.getId() + " " + anonTitle;

                            String[] params = new String[7];
                            if (isAdditionalNotesEnabled && candidateDetailProvider != null) {
                                final List<String> notes = candidateDetailProvider
                                        .getAdditionalNotes(submitters[i], st).orElse(new ArrayList<String>());

                                if (!notes.isEmpty()) {
                                    params = new String[notes.size() + 7];
                                    System.arraycopy(notes.toArray(new String[notes.size()]), 0, params, 7,
                                            notes.size());
                                }
                            }

                            // SAK-17606
                            if (!isAnon) {
                                log.debug("Zip user: " + submitters[i].toString());
                                params[0] = submitters[i].getDisplayId();
                                params[1] = submitters[i].getEid();
                                params[2] = submitters[i].getLastName();
                                params[3] = submitters[i].getFirstName();
                                params[4] = this.getGradeForSubmitter(s, submitters[i].getId());
                                if (s.getDateSubmitted() != null) {
                                    params[5] = s.getDateSubmitted().toString(); // TODO may need to be formatted
                                } else {
                                    params[5] = "";
                                }
                                params[6] = latenessStatus;
                            } else {
                                params[0] = fullAnonId;
                                params[1] = fullAnonId;
                                params[2] = anonTitle;
                                params[3] = anonTitle;
                                params[4] = this.getGradeForSubmitter(s, submitters[i].getId());
                                if (s.getDateSubmitted() != null) {
                                    params[5] = s.getDateSubmitted().toString(); // TODO may need to be formatted
                                } else {
                                    params[5] = "";
                                }
                                params[6] = latenessStatus;
                            }
                            sheet.addRow(params);
                        }

                        if (StringUtils.trimToNull(submittersString) != null) {
                            submittersName = submittersName.concat(StringUtils.trimToNull(submittersString));
                            submittedText = s.getSubmittedText();

                            // SAK-17606
                            if (isAnon) {
                                submittersString = s.getId() + " "
                                        + resourceLoader.getString("grading.anonymous.title");
                                submittersName = root + submittersString;
                            }

                            if (!withoutFolders) {
                                submittersName = submittersName.concat("/");
                            } else {
                                submittersName = submittersName.concat("_");
                            }

                            // record submission timestamp
                            if (!withoutFolders && s.getSubmitted() && s.getDateSubmitted() != null) {
                                final String zipEntryName = submittersName + "timestamp.txt";
                                final String textEntryString = s.getDateSubmitted().toString();
                                createTextZipEntry(out, zipEntryName, textEntryString);
                            }

                            // create the folder structure - named after the submitter's name
                            if (typeOfSubmission != Assignment.SubmissionType.ATTACHMENT_ONLY_ASSIGNMENT_SUBMISSION
                                    && typeOfSubmission != Assignment.SubmissionType.NON_ELECTRONIC_ASSIGNMENT_SUBMISSION) {
                                // include student submission text
                                if (withStudentSubmissionText) {
                                    // create the text file only when a text submission is allowed
                                    final StringBuilder submittersNameString = new StringBuilder(
                                            submittersName);
                                    //remove folder name if Download All is without user folders
                                    if (!withoutFolders) {
                                        submittersNameString.append(submittersString);
                                    }

                                    final String zipEntryName = submittersNameString
                                            .append("_submissionText"
                                                    + AssignmentConstants.ZIP_SUBMITTED_TEXT_FILE_TYPE)
                                            .toString();
                                    createTextZipEntry(out, zipEntryName, submittedText);
                                }

                                // include student submission feedback text
                                if (withFeedbackText) {
                                    // create a feedbackText file into zip
                                    final String zipEntryName = submittersName + "feedbackText.html";
                                    final String textEntryString = s.getFeedbackText();
                                    createTextZipEntry(out, zipEntryName, textEntryString);
                                }
                            }

                            if (typeOfSubmission != Assignment.SubmissionType.TEXT_ONLY_ASSIGNMENT_SUBMISSION
                                    && typeOfSubmission != Assignment.SubmissionType.NON_ELECTRONIC_ASSIGNMENT_SUBMISSION
                                    && withStudentSubmissionAttachment) {
                                // include student submission attachment
                                //remove "/" that creates a folder if Download All is without user folders
                                String sSubAttachmentFolder = submittersName
                                        + resourceLoader.getString("stuviewsubm.submissatt");//jh + "/";
                                if (!withoutFolders) {
                                    // create a attachment folder for the submission attachments
                                    sSubAttachmentFolder = submittersName
                                            + resourceLoader.getString("stuviewsubm.submissatt") + "/";
                                    sSubAttachmentFolder = escapeInvalidCharsEntry(sSubAttachmentFolder);
                                    final ZipEntry sSubAttachmentFolderEntry = new ZipEntry(
                                            sSubAttachmentFolder);
                                    out.putNextEntry(sSubAttachmentFolderEntry);
                                } else {
                                    sSubAttachmentFolder += "_";
                                    //submittersName = submittersName.concat("_");
                                }

                                // add all submission attachment into the submission attachment folder
                                zipAttachments(out, submittersName, sSubAttachmentFolder, s.getAttachments());
                                out.closeEntry();
                            }

                            if (withFeedbackComment) {
                                // the comments.txt file to show instructor's comments
                                final String zipEntryName = submittersName + "comments"
                                        + AssignmentConstants.ZIP_COMMENT_FILE_TYPE;
                                final String textEntryString = formattedText
                                        .encodeUnicode(s.getFeedbackComment());
                                createTextZipEntry(out, zipEntryName, textEntryString);
                            }

                            if (withFeedbackAttachment) {
                                // create an attachment folder for the feedback attachments
                                String feedbackSubAttachmentFolder = submittersName
                                        + resourceLoader.getString("download.feedback.attachment");
                                if (!withoutFolders) {
                                    feedbackSubAttachmentFolder += "/";
                                    final ZipEntry feedbackSubAttachmentFolderEntry = new ZipEntry(
                                            feedbackSubAttachmentFolder);
                                    out.putNextEntry(feedbackSubAttachmentFolderEntry);
                                } else {
                                    submittersName = submittersName.concat("_");
                                }

                                // add all feedback attachment folder
                                zipAttachments(out, submittersName, feedbackSubAttachmentFolder,
                                        s.getFeedbackAttachments());
                                out.closeEntry();
                            }
                        } // if

                        if (isAdditionalNotesEnabled && candidateDetailProvider != null) {
                            final List<String> notes = candidateDetailProvider.getAdditionalNotes(u, st)
                                    .orElse(new ArrayList<String>());
                            if (!notes.isEmpty()) {
                                final StringBuilder noteList = new StringBuilder("<ul>");
                                for (String note : notes) {
                                    noteList.append("<li>" + StringEscapeUtils.escapeHtml4(note) + "</li>");
                                }
                                noteList.append("</ul>");
                                submittersAdditionalNotesHtml
                                        .append("<tr><td style='padding-right:10px;padding-left:10px'>"
                                                + submittersString + "</td><td style='padding-right:10px'>"
                                                + noteList + "</td></tr>");
                            }
                        }
                    } else {
                        log.warn(
                                "Can't add submission: {} to zip, missing the submittee or they are no longer allowed to submit in the site",
                                s.getId());
                    }
                } catch (Exception e) {
                    caughtException = e.toString();
                    if (log.isDebugEnabled()) {
                        caughtStackTrace = ExceptionUtils.getStackTrace(e);
                    }
                    break;
                }
            } // if the user is still in site

        } // while -- there is submission

        if (caughtException == null) {
            // continue
            if (withGradeFile) {
                final ZipEntry gradesCSVEntry = new ZipEntry(root + "grades." + sheet.getFileExtension());
                out.putNextEntry(gradesCSVEntry);
                sheet.write(out);
                out.closeEntry();
            }

            if (isAdditionalNotesEnabled) {
                final ZipEntry additionalEntry = new ZipEntry(
                        root + resourceLoader.getString("assignment.additional.notes.file.title") + ".html");
                out.putNextEntry(additionalEntry);

                String htmlString = emailUtil.htmlPreamble("additionalnotes");
                htmlString += "<h1>" + resourceLoader.getString("assignment.additional.notes.export.title")
                        + "</h1>";
                htmlString += "<div>" + resourceLoader.getString("assignment.additional.notes.export.header")
                        + "</div><br/>";
                htmlString += "<table border=\"1\"  style=\"border-collapse:collapse;\"><tr><th>"
                        + resourceLoader.getString("gen.student") + "</th><th>"
                        + resourceLoader.getString("gen.notes") + "</th>" + submittersAdditionalNotesHtml
                        + "</table>";
                htmlString += "<br/><div>"
                        + resourceLoader.getString("assignment.additional.notes.export.footer") + "</div>";
                htmlString += emailUtil.htmlEnd();
                log.debug("Additional information html: " + htmlString);

                final byte[] wes = htmlString.getBytes();
                out.write(wes);
                additionalEntry.setSize(wes.length);
                out.closeEntry();
            }
        } else {
            // log the error
            exceptionMessage.append(" Exception " + caughtException
                    + " for creating submission zip file for assignment " + "\"" + assignmentTitle + "\"\n");
            if (log.isDebugEnabled()) {
                exceptionMessage.append(caughtStackTrace);
            }
        }
    } catch (IOException e) {
        exceptionMessage.append("IOException for creating submission zip file for assignment " + "\""
                + assignmentTitle + "\" exception: " + e + "\n");
    } finally {
        // Complete the ZIP file
        if (out != null) {
            try {
                out.finish();
                out.flush();
            } catch (IOException e) {
                // tried
            }
            try {
                out.close();
            } catch (IOException e) {
                // tried
            }
        }
    }
}

From source file:org.tightblog.domain.WeblogEntryComment.java

public void setReferrer(String referrer) {
    this.referrer = StringEscapeUtils.escapeHtml4(referrer);
}

From source file:org.zanata.action.CacheAction.java

/**
 * Return some sanitised HTML for the display name of the cache
 *
 * @param cacheName// ww w .ja  v a2  s.co  m
 * @return
 */
public String getDisplayName(String cacheName) {
    String emptyString = msgs.get("jsf.cacheStats.emptyString");
    if (cacheName.isEmpty()) {
        return "<em>(" + emptyString + ")</em>";
    } else {
        // Escape cache name in case it includes user input in future
        return StringEscapeUtils.escapeHtml4(cacheName);
    }
}

From source file:org.zanata.ui.ActivityEntry.java

public String getActivityMessage(Activity activity) {
    boolean isVersionDeleted = isVersionDeleted(activity);
    boolean isProjectDeleted = isProjectDeleted(activity);
    switch (activity.getActivityType()) {
    case UPDATE_TRANSLATION:
        if (isProjectDeleted) {
            return msgs.format("jsf.dashboard.activity.translate.message.projectDeleted",
                    activity.getWordCount(), getProjectName(activity),
                    StringEscapeUtils.escapeHtml4(getLastTextFlowContent(activity)));
        } else if (isVersionDeleted) {
            return msgs.format("jsf.dashboard.activity.translate.message.versionDeleted",
                    activity.getWordCount(), getProjectUrl(activity), getProjectName(activity),
                    StringEscapeUtils.escapeHtml4(getLastTextFlowContent(activity)));
        } else {// w  w  w.j ava 2s.c  o  m
            return msgs.format("jsf.dashboard.activity.translate.message", activity.getWordCount(),
                    getProjectUrl(activity), getProjectName(activity), getEditorUrl(activity),
                    StringEscapeUtils.escapeHtml4(getLastTextFlowContent(activity)));
        }

    case REVIEWED_TRANSLATION:
        if (isProjectDeleted) {
            return msgs.format("jsf.dashboard.activity.review.message.projectDeleted", activity.getWordCount(),
                    getProjectName(activity), StringEscapeUtils.escapeHtml4(getLastTextFlowContent(activity)));
        } else if (isVersionDeleted) {
            return msgs.format("jsf.dashboard.activity.review.message.versionDeleted", activity.getWordCount(),
                    getProjectUrl(activity), getProjectName(activity),
                    StringEscapeUtils.escapeHtml4(getLastTextFlowContent(activity)));
        } else {
            return msgs.format("jsf.dashboard.activity.review.message", activity.getWordCount(),
                    getProjectUrl(activity), getProjectName(activity), getEditorUrl(activity),
                    StringEscapeUtils.escapeHtml4(getLastTextFlowContent(activity)));
        }

    case UPLOAD_SOURCE_DOCUMENT:
        if (isProjectDeleted) {
            return msgs.format("jsf.dashboard.activity.uploadSource.message.projectDeleted",
                    activity.getWordCount(), getProjectName(activity));
        } else {
            return msgs.format("jsf.dashboard.activity.uploadSource.message", activity.getWordCount(),
                    getProjectUrl(activity), getProjectName(activity));
        }

    case UPLOAD_TRANSLATION_DOCUMENT:
        if (isProjectDeleted) {
            return msgs.format("jsf.dashboard.activity.uploadTranslation.message.projectDeleted",
                    activity.getWordCount(), getProjectName(activity));
        } else {
            return msgs.format("jsf.dashboard.activity.uploadTranslation.message", activity.getWordCount(),
                    getProjectUrl(activity), getProjectName(activity));
        }

    default:
        return "";

    }
}

From source file:pt.up.fe.specs.lang.ApacheStrings.java

public static String escapeHtml(String html) {
    return StringEscapeUtils.escapeHtml4(html);
}