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

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

Introduction

In this page you can find the example usage for org.apache.commons.lang3 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:net.java.sip.communicator.impl.gui.main.chat.ChatPanel.java

/**
 * Notifies the user if any member of the chatroom changes nickname.
 *
 * @param event a <tt>ChatRoomMemberPropertyChangeEvent</tt> which carries
 * the specific of the change//from w w w .  j  a v a2s .c  o m
 */
public void chatRoomPropertyChanged(ChatRoomMemberPropertyChangeEvent event) {
    if (ChatRoomMemberPropertyChangeEvent.MEMBER_NICKNAME.equals(event.getPropertyName())) {
        String message = GuiActivator.getResources().getI18NString("service.gui.CHAT_NICKNAME_CHANGE",
                new String[] { (String) event.getOldValue(), (String) event.getNewValue() });
        this.conversationPanel.appendMessageToEnd("<DIV identifier=\"message\" style=\"color:#707070;\">"
                + StringEscapeUtils.escapeHtml4(message) + "</DIV>", ChatHtmlUtils.HTML_CONTENT_TYPE);
    }
}

From source file:com.crushpaper.Servlet.java

/** Helper method. Converts `errors` to HTML. */
private void errorsToHTML(Errors errors, PrintWriter writer) {
    if (errors != null && errors.hasErrors()) {
        writer.print("<ol>");

        for (final String text : errors.getTexts()) {
            writer.print("<li>");
            writer.print(StringEscapeUtils.escapeHtml4(text));
            writer.print("</li>");
        }//from  w w  w  . j  a  v  a 2 s . c  o  m

        writer.print("</ol>");
    }
}

From source file:com.crushpaper.Servlet.java

/** Part of the HTML API. Shows search results and displays form. */
private void handleHtmlSearch(RequestAndResponse requestAndResponse) throws IOException, ServletException {
    final String title = servletText.pageTitleSearch();
    if (addTitle(requestAndResponse, title)) {
        return;/*from   w w w  .j  a v a  2 s  . c  o m*/
    }

    String query = requestAndResponse.getParameter("q");
    final boolean queryWasNull = query == null;
    if (query == null) {
        query = "";
    }

    String dataSet = requestAndResponse.getParameter("s");
    if (dataSet == null || (!dataSet.equals("quotations") && !dataSet.equals("sources")
            && !dataSet.equals("accounts") && !dataSet.equals("notebooks"))) {
        dataSet = "notes";
    }

    if (!isUserAnAdmin(requestAndResponse) && dataSet.equals("accounts")) {
        dataSet = "notes";
    }

    query = query.trim();

    final String paneId = "search";
    final PageWrapper pageWrapper = new PageWrapper(requestAndResponse, title, false).setPaneId(paneId);
    pageWrapper.addHeader();

    requestAndResponse.print("<form action=\""
            + StringEscapeUtils.escapeHtml4(requestAndResponse.getRequestURI())
            + "\" method=\"GET\"><table class=\"nopadding\"><tr><td>" + "<input class=\"searchbox\" title=\""
            + servletText.tooltipSearch() + "\" placeholder=\"" + servletText.placeholderSearch()
            + "\" type=\"text\" name=\"q\" value=\"" + StringEscapeUtils.escapeHtml4(query)
            + "\" autofocus></td></tr><tr><td>"
            + "<span class=\"searchRadio\"><input type=\"radio\" name=\"s\" value=\"notes\" id=\"searchNotes\""
            + isInputChecked(dataSet, "notes") + "><label for=\"searchNotes\">" + servletText.labelSearchNotes()
            + "</label></span> "
            + "<span class=\"searchRadio\"><input type=\"radio\" name=\"s\" value=\"quotations\" id=\"searchQuotations\""
            + isInputChecked(dataSet, "quotations") + "><label for=\"searchQuotations\">"
            + servletText.labelSearchQuotations() + "</label></span> "
            + "<span class=\"searchRadio\"><input type=\"radio\" name=\"s\" value=\"sources\" id=\"searchSources\""
            + isInputChecked(dataSet, "sources") + "><label for=\"searchSources\">"
            + servletText.labelSearchSources() + "</label></span> "
            + "<span class=\"searchRadio\"><input type=\"radio\" name=\"s\" value=\"notebooks\" id=\"searchNotebooks\""
            + isInputChecked(dataSet, "notebooks") + "><label for=\"searchNotebooks\">"
            + servletText.labelSearchNotebooks() + "</label></span>"
            + (!isUserAnAdmin(requestAndResponse) ? ""
                    : "<input type=\"radio\" name=\"s\" value=\"accounts\" id=\"searchAccounts\""
                            + isInputChecked(dataSet, "accounts") + "><label for=\"searchAccounts\">"
                            + servletText.labelSearchAccounts() + "</label>")
            + "</td></tr>" + "<tr><td><button onclick=\"replacePaneForForm(event, '"
            + servletText.buttonSearch()
            + "'); return false;\" class=\"specialbutton\" style=\"margin:10px 0px 10px 0px\">"
            + servletText.buttonSearch() + "</button></td></tr></table></form>");

    if (!queryWasNull && query.isEmpty()) {
        requestAndResponse.print(servletText.errorQueryIsRequired());
    } else if (dataSet == null || dataSet.isEmpty()) {
        requestAndResponse.print(servletText.errorSearchDataSetIsRequired());
    } else if (!query.isEmpty()) {
        pageWrapper.addMetaData(new KeyAndValue("paneType", dataSet));

        if (dataSet.equals("notes")) {
            handleHtmlSearchNotes(pageWrapper, requestAndResponse, query, paneId);
        } else if (dataSet.equals("quotations")) {
            handleHtmlSearchQuotations(pageWrapper, requestAndResponse, query, paneId);
        } else if (dataSet.equals("sources")) {
            handleHtmlSearchSources(pageWrapper, requestAndResponse, query, paneId);
        } else if (dataSet.equals("notebooks")) {
            handleHtmlSearchNotebooks(pageWrapper, requestAndResponse, query, paneId);
        } else if (dataSet.equals("accounts")) {
            pageWrapper.addMetaData(new KeyAndValue("notEditable", true));
            handleHtmlSearchAccounts(pageWrapper, requestAndResponse, query, paneId);
        } else {
            requestAndResponse.print(servletText.errorSearchDataSetIsRequired());
        }
    }

    pageWrapper.addFooter();
}

From source file:com.crushpaper.Servlet.java

/** Converts to preish HTML. */
private String textToPreishHtml(final String value, boolean nbsps) {
    if (value == null) {
        return "";
    }/* ww  w .  ja  v a2  s .co m*/

    String lines = StringEscapeUtils.escapeHtml4(value).replace("\n", "<br>");
    if (nbsps) {
        return lines.replace(" ", "&nbsp;");
    }

    return lines;
}

From source file:com.crushpaper.Servlet.java

/** Part of the HTML API. Restores a db backup. */
private void handleHtmlShowRestoreDbBackupCommand(RequestAndResponse requestAndResponse)
        throws IOException, ServletException {
    final String title = servletText.pageTitleRestoreBackupCommandDb();
    if (addTitle(requestAndResponse, title)) {
        return;//from   w  w  w .  j  ava  2 s. c om
    }

    final PageWrapper pageWrapper = new PageWrapper(requestAndResponse, title, true);
    pageWrapper.addHeader();

    if (!isUserAnAdmin(requestAndResponse)) {
        requestAndResponse.print(servletText.errorPageNotAllowed());
    } else {
        final String name = requestAndResponse.getParameter("name");
        if (name == null) {
            requestAndResponse.print(servletText.errorNoNameSpecifiedForRestoration());
        } else {
            final File source = new File(new File(dbLogic.getDbDirectory().getParent(), "backups"), name);

            boolean isOnlineBackup = false;

            // Determine if the backup directory is the result of an online
            // or offline backup.
            final File[] listOfFiles = source.listFiles();
            if (listOfFiles != null) {
                for (int i = 0; i < listOfFiles.length; i++) {
                    if (listOfFiles[i].getName().endsWith(".csv")) {
                        isOnlineBackup = true;
                        break;
                    }
                }
            }

            String cmd = null;
            if (isOnlineBackup) {
                cmd = "DELETE * FROM USR;\n";
                cmd += "DELETE * FROM ENTRY;\n";
                cmd += "INSERT INTO USR SELECT * FROM CSVREAD('"
                        + (source.getAbsolutePath() + File.separator).replace("\\", "\\\\") + "usr.csv');\n";
                cmd += "INSERT INTO ENTRY SELECT * FROM CSVREAD('"
                        + (source.getAbsolutePath() + File.separator).replace("\\", "\\\\") + "entry.csv');";
            } else {
                final String destination = dbLogic.getDbDirectory().getAbsolutePath();
                cmd = CommandLineUtil.getArgsForCopyAndPaste(CommandLineUtil.getRmDirArgs(destination)) + " && "
                        + CommandLineUtil.getArgsForCopyAndPaste(
                                CommandLineUtil.getCopyDirectoryArgs(source.getAbsolutePath(), destination));
            }

            String htmlCmd = StringEscapeUtils.escapeHtml4(cmd);
            htmlCmd = htmlCmd.replace("\n", "<br><br>");
            requestAndResponse.print(servletText.sentenceCmdForDbRestore() + "<br><br>" + htmlCmd);
        }
    }

    pageWrapper.addFooter();
}

From source file:com.crushpaper.Servlet.java

/** Part of the HTML API. Show the account page. */
private void handleHtmlShowAccount(RequestAndResponse requestAndResponse) throws IOException, ServletException {
    final String title = servletText.pageTitleViewAccount();
    if (addTitle(requestAndResponse, title)) {
        return;/*  ww  w  .ja va  2s . co m*/
    }

    final PageWrapper pageWrapper = new PageWrapper(requestAndResponse, title, false).setPaneId("account");

    pageWrapper.addHeader();

    if (isUserALocalAdminOrNotClosed(requestAndResponse)) {
        try {
            final String userId = getURIParameterOrUserId(requestAndResponse);

            final User currentUser = dbLogic.getUserById(getEffectiveUserId(requestAndResponse));

            final User editedUser = dbLogic.getUserById(userId);

            if (editedUser == null) {
                requestAndResponse.print(servletText.errorNoAccountFound());
            } else {
                final boolean currentIsEditedUser = isCurrentUserTheEditedUser(currentUser, editedUser);
                final boolean isUserAdmin = isUserAnAdmin(requestAndResponse);
                if (!isUserAdmin && !currentIsEditedUser) {
                    requestAndResponse.print(servletText.errorPageNotAllowed());
                } else {
                    final boolean canChangeIsAdmin = isUserAdmin;

                    requestAndResponse.print(servletText.sentenceUsernameIs(currentIsEditedUser,
                            StringEscapeUtils.escapeHtml4(editedUser.getUserName())) + "<br>");

                    requestAndResponse.print(servletText.sentenceEmailIs(currentIsEditedUser,
                            StringEscapeUtils.escapeHtml4(editedUser.getEmailOrBlank())) + "<br>");

                    requestAndResponse.print(
                            servletText.sentenceMayBeContacted(currentIsEditedUser, editedUser.getMayContact())
                                    + "<br>");

                    if (canChangeIsAdmin) {
                        if (editedUser.getIsAccountClosed()) {
                            requestAndResponse
                                    .print(servletText.sentenceAccountIsClosed(currentIsEditedUser) + "<br>");
                        }

                        if (editedUser.getIsAdmin()) {
                            requestAndResponse
                                    .print(servletText.sentenceIsAnAdmin(currentIsEditedUser) + "<br>");
                        }
                    }

                    requestAndResponse.print("<table class=\"accountButtons\"><tr><td>");

                    requestAndResponse
                            .print("<form action=\"/changeAccount/" + (currentIsEditedUser ? "" : userId)
                                    + "\" method=\"GET\">" + "<button onclick=\"replacePaneForForm(event, '"
                                    + servletText.buttonChangeAccountDetails()
                                    + "'); return false;\" class=\"specialbutton\">"
                                    + servletText.buttonChangeAccountDetails() + "</button></form><br>");

                    requestAndResponse.print("</td><td>");

                    requestAndResponse
                            .print("<form action=\"/changePassword/" + (currentIsEditedUser ? "" : userId)
                                    + "\" method=\"GET\">" + "<button onclick=\"replacePaneForForm(event, '"
                                    + servletText.buttonChangePassword()
                                    + "'); return false;\" class=\"specialbutton\">"
                                    + servletText.buttonChangePassword() + "</button></form><br>");

                    if (!editedUser.getIsAccountClosed()) {
                        requestAndResponse.print("</td><td>");
                        requestAndResponse
                                .print("<form action=\"/closeAccount/" + (currentIsEditedUser ? "" : userId)
                                        + "\" method=\"GET\">" + "<button onclick=\"replacePaneForForm(event, '"
                                        + servletText.buttonCloseAccount()
                                        + "'); return false;\" class=\"specialbutton\">"
                                        + servletText.buttonCloseAccount() + "</button></form><br>");
                    }

                    requestAndResponse.print("</td></tr></table>");

                    if (!currentIsEditedUser) {
                        requestAndResponse.print(
                                "<hr class=\"title\"/>" + servletText.sentenceSeeWhatTheUserSees() + "<ul>");

                        addUserLink(requestAndResponse, servletText.pageTitleNotebooks(),
                                servletText.pageTitleUsersNotebooksTooltip(), "/notebooks", "notebooks",
                                editedUser);
                        addUserLink(requestAndResponse, servletText.pageTitleQuotations(),
                                servletText.pageTitleUsersQuotationsTooltip(), "/quotations", "quotations",
                                editedUser);
                        addUserLink(requestAndResponse, servletText.pageTitleSources(),
                                servletText.pageTitleUsersSourcesTooltip(), "/sources", "sources", editedUser);
                        addUserLink(requestAndResponse, servletText.pageTitleSearch(),
                                servletText.pageTitleUsersSearchTooltip(), "/search", "search", editedUser);

                        requestAndResponse.print("</ul>");
                    }
                }
            }

            dbLogic.commit();
        } catch (final PersistenceException e) {
            requestAndResponse.print(servletText.errorInternalDatabase());
        }
    }

    pageWrapper.addFooter();
}

From source file:com.crushpaper.Servlet.java

/** Part of the HTML API. Show the change account form. */
private void handleHtmlChangeAccount(RequestAndResponse requestAndResponse)
        throws IOException, ServletException {
    final String title = servletText.pageTitleChangeAccount();
    if (addTitle(requestAndResponse, title)) {
        return;/*from w  ww.  j a v  a2s .c  om*/
    }

    final PageWrapper pageWrapper = new PageWrapper(requestAndResponse, title, false).setPaneId("account");
    pageWrapper.addHeader();

    if (isUserALocalAdminOrNotClosed(requestAndResponse)) {
        try {
            final String userId = getURIParameterOrUserId(requestAndResponse);

            final User currentUser = dbLogic.getUserById(getEffectiveUserId(requestAndResponse));

            final User editedUser = dbLogic.getUserById(userId);
            if (editedUser == null) {
                requestAndResponse.print(servletText.errorNoAccountFound());
            } else {
                final boolean currentIsEditedUser = isCurrentUserTheEditedUser(currentUser, editedUser);
                final boolean isUserAdmin = isUserAnAdmin(requestAndResponse);
                if (!isUserAdmin && !currentIsEditedUser) {
                    requestAndResponse.print(servletText.errorPageNotAllowed());
                } else {
                    final boolean canChangeIsAdmin = isUserAdmin;
                    final String submitted = requestAndResponse.request.getParameter("save");
                    boolean needsForm = true;
                    if (submitted != null) {
                        boolean needsChange = false;
                        boolean hasErrors = false;

                        if (isTheCsrftWrong(requestAndResponse,
                                requestAndResponse.request.getParameter("csrft"))) {
                            requestAndResponse.print(servletText.errorRequiresSignIn(false));
                            needsForm = false;
                        }

                        // Validate the new password.
                        String changedPassword = null;
                        if (doesUserNotHavePasswordAndNeedsIt(editedUser)) {
                            final String newPassword = requestAndResponse.request.getParameter("newpassword");
                            final String newPassword2 = requestAndResponse.request.getParameter("newpassword2");
                            hasErrors = validateNewPassword(requestAndResponse, editedUser, currentIsEditedUser,
                                    newPassword, newPassword2);
                            if (!hasErrors) {
                                changedPassword = newPassword;
                                needsChange = true;
                            }
                        }

                        // Validate the new username.
                        String changedUserName = null;
                        String newUserName = requestAndResponse.request.getParameter("username");
                        if (newUserName != null) {
                            newUserName = newUserName.toLowerCase();
                        }

                        final String oldUserName = editedUser.getUserName();
                        if (newUserName != null && !newUserName.isEmpty() && !newUserName.equals(oldUserName)) {
                            if (!editedUser.getIsAnon()) {
                                addErrorMessage(requestAndResponse, servletText.errorUsernameMayNotBeChanged());
                                hasErrors = true;
                            } else if (!AccountAttributeValidator.isUserNameValid(newUserName)) {
                                addErrorMessage(requestAndResponse, servletText.errorUserNameIsNotValid());
                                hasErrors = true;
                            } else if (dbLogic.getUserByUserName(newUserName) != null) {
                                addErrorMessage(requestAndResponse, servletText.errorUserNameIsAlreadyTaken());
                                hasErrors = true;
                            } else {
                                changedUserName = newUserName;
                                needsChange = true;
                            }
                        }

                        // Validate email.
                        String changedEmail = null;
                        String email = requestAndResponse.request.getParameter("email");
                        if (email != null && email.isEmpty()) {
                            email = null;
                        }

                        boolean emailIsChanged = false;
                        if (email == null && editedUser.getEmail() != null) {
                            changedEmail = email;
                            needsChange = true;
                            emailIsChanged = true;
                        } else if (email != null && !AccountAttributeValidator.isEmailValid(email)) {
                            addErrorMessage(requestAndResponse, servletText.errorEmailIsNotValid());
                            hasErrors = true;
                        } else if (email != null) {
                            changedEmail = email;
                            needsChange = true;
                            emailIsChanged = true;
                        }

                        // Validate mayContact.
                        final boolean mayContact = getCheckBoxValue(requestAndResponse, "mayContact");
                        if (mayContact != editedUser.getMayContact()) {
                            needsChange = true;
                        }

                        // Validate isAccountClosed.
                        final boolean isAccountClosed = getCheckBoxValue(requestAndResponse, "isAccountClosed");
                        if (isAccountClosed != editedUser.getIsAccountClosed()) {
                            needsChange = true;
                        }

                        // Validate isAdmin.
                        final boolean isAdmin = getCheckBoxValue(requestAndResponse, "isAdmin");
                        if (isAdmin != editedUser.getIsAdmin()) {
                            if (!isAdmin && editedUser.getIsSingleUser()) {
                                hasErrors = true;
                                addErrorMessage(requestAndResponse,
                                        servletText.errorSingleUserMustStayAnAdmin());
                            }

                            if (!canChangeIsAdmin) {
                                hasErrors = true;
                                addErrorMessage(requestAndResponse,
                                        servletText.errorOnlyAnAdminCanChangeIsAdmin());
                            }

                            needsChange = true;
                        }

                        // Make the changes.
                        if (needsChange && !hasErrors) {
                            final Long time = new Long(System.currentTimeMillis());
                            editedUser.setModTime(time);

                            if (changedPassword != null) {
                                editedUser.setPassword(DigestUtils.sha1Hex(changedPassword));
                            }

                            if (changedUserName != null) {
                                editedUser.setUserName(changedUserName);
                                editedUser.setIsAnon(false);
                            }

                            if (emailIsChanged) {
                                editedUser.setEmail(changedEmail);
                            }

                            editedUser.setMayContact(mayContact);

                            if (canChangeIsAdmin) {
                                editedUser.setIsAdmin(isAdmin);
                                editedUser.setIsAccountClosed(isAccountClosed);
                            }

                            addSuccessMessage(requestAndResponse, servletText.sentenceChangesWereSaved());
                            needsForm = false;
                        } else if (hasErrors) {
                            addErrorMessage(requestAndResponse, servletText.errorChangesWereNotSaved());
                        } else {
                            addErrorMessage(requestAndResponse, servletText.errorNoChangesToSave());
                        }
                    }

                    if (needsForm) {
                        requestAndResponse.print(
                                "<div class=\"infoheader\">" + servletText.sentenceEnterNewAccountDetailsHere(
                                        currentIsEditedUser, editedUser.getUserName()) + "</div>");

                        requestAndResponse
                                .print("<form action=\"/changeAccount/" + (currentIsEditedUser ? "" : userId)
                                        + "\" method=\"POST\"><div class=\"account\">"
                                        + "<input type=\"hidden\" name=\"csrft\" value=\""
                                        + getCsrft(requestAndResponse) + "\">");

                        if (editedUser.getIsAnon()) {
                            requestAndResponse.print("<div class=\"infoheader\">"
                                    + servletText.sentencePleaseChangeNameFromGenerated(currentIsEditedUser,
                                            editedUser.getUserName())
                                    + "</div>");

                            requestAndResponse.print(
                                    "<input autocorrect=\"off\" type=\"text\" id=\"username\" name=\"username\" placeholder=\""
                                            + servletText.sentenceChooseAUserName()
                                            + "\" maxlength=\"20\"><br>");
                        }

                        // Validate new passwords.
                        if (doesUserNotHavePasswordAndNeedsIt(editedUser)) {
                            addNewPasswordFormFields(requestAndResponse, editedUser, currentIsEditedUser);
                        }

                        requestAndResponse
                                .print("<input type=\"email\" id=\"email\" name=\"email\" placeholder=\""
                                        + servletText.sentenceEmailOptional() + "\" maxlength=\"100\" value=\""
                                        + StringEscapeUtils.escapeHtml4(editedUser.getEmailOrBlank())
                                        + "\"><br>");

                        requestAndResponse
                                .print("<input type=\"checkbox\" name=\"mayContact\" id=\"mayContact\""
                                        + (editedUser.getMayContact() ? " checked" : "")
                                        + "><label for=\"mayContact\">"
                                        + (currentIsEditedUser ? servletText.sentenceIMayBeContacted()
                                                : servletText.sentenceUserMayBeContacted())
                                        + "</label><br>");

                        if (canChangeIsAdmin) {
                            requestAndResponse.print(
                                    "<input type=\"checkbox\" name=\"isAccountClosed\" id=\"isAccountClosed\""
                                            + (editedUser.getIsAccountClosed() ? " checked" : "")
                                            + "><label for=\"isAccountClosed\">"
                                            + servletText.sentenceIsAccountClosed() + "</label><br>");

                            requestAndResponse.print("<input type=\"checkbox\" name=\"isAdmin\" id=\"isAdmin\""
                                    + (editedUser.getIsAdmin() ? " checked" : "") + "><label for=\"isAdmin\">"
                                    + servletText.sentenceUserIsAnAdmin() + "</label><br>");
                        }

                        requestAndResponse.print("<table class=\"responseAndSave\"><tr>"
                                + "<td><div id=\"response\"></div></td>"
                                + "<td><button onclick=\"replacePaneForForm(event, '"
                                + servletText.buttonChangeAccountDetails()
                                + "'); return false;\" id=\"save\" name=\"save\" class=\"specialbutton\" style=\"float:right; margin-top:10px;\">"
                                + servletText.buttonChangeAccountDetails() + "</button></td>"
                                + "</tr></table></div>" + "</form>");
                    }
                }
            }

            dbLogic.commit();
        } catch (final PersistenceException e) {
            requestAndResponse.print(servletText.errorInternalDatabase());
        }
    }

    pageWrapper.addFooter();
}

From source file:com.crushpaper.Servlet.java

/** Part of the HTML API. Show the close account form. */
private void handleHtmlCloseAccount(RequestAndResponse requestAndResponse)
        throws IOException, ServletException {
    final String title = servletText.pageTitleCloseAccount();
    if (addTitle(requestAndResponse, title)) {
        return;/* www  . ja v  a2 s  .  co  m*/
    }

    final PageWrapper pageWrapper = new PageWrapper(requestAndResponse, title, false).setPaneId("account");
    pageWrapper.addHeader();

    if (isUserALocalAdminOrNotClosed(requestAndResponse)) {
        try {
            final String userId = getURIParameterOrUserId(requestAndResponse);

            final User currentUser = dbLogic.getUserById(getEffectiveUserId(requestAndResponse));

            final User editedUser = dbLogic.getUserById(userId);
            if (editedUser == null) {
                requestAndResponse.print(servletText.errorNoAccountFound());
            } else {
                final boolean currentIsEditedUser = isCurrentUserTheEditedUser(currentUser, editedUser);
                final boolean isUserAdmin = isUserAnAdmin(requestAndResponse);
                if (!isUserAdmin && !currentIsEditedUser) {
                    requestAndResponse.print(servletText.errorPageNotAllowed());
                } else {
                    boolean needsForm = true;
                    boolean needsCurrentPassword = isCurrentPasswordNeeded(editedUser, currentIsEditedUser,
                            isUserAdmin);
                    final String submitted = requestAndResponse.request.getParameter("save");
                    if (submitted != null) {
                        boolean needsChange = false;
                        boolean hasErrors = false;

                        if (isTheCsrftWrong(requestAndResponse,
                                requestAndResponse.request.getParameter("csrft"))) {
                            requestAndResponse.print(servletText.errorRequiresSignIn(false));
                            needsForm = false;
                        } else {
                            // Validate old password.
                            if (needsCurrentPassword) {
                                final String realPassword = editedUser.getPassword();
                                final String currentPassword = requestAndResponse.request
                                        .getParameter("currentpassword");
                                if (currentPassword == null || currentPassword.isEmpty()) {
                                    addErrorMessage(requestAndResponse,
                                            servletText.errorPasswordMustNotBeBlank());
                                    hasErrors = true;
                                } else if (!AccountAttributeValidator.isPasswordValid(currentPassword)) {
                                    addErrorMessage(requestAndResponse,
                                            servletText.errorCurrentPasswordIsIncorrect());
                                    hasErrors = true;
                                } else if (realPassword == null
                                        || !realPassword.equals(DigestUtils.sha1Hex(currentPassword))) {
                                    addErrorMessage(requestAndResponse,
                                            servletText.errorCurrentPasswordIsIncorrect());
                                    hasErrors = true;
                                }
                            }

                            needsChange = !editedUser.getIsAccountClosed();

                            // Make the changes.
                            if (needsChange && !hasErrors) {
                                final Long time = new Long(System.currentTimeMillis());
                                editedUser.setModTime(time);

                                editedUser.setIsAccountClosed(true);

                                addSuccessMessage(requestAndResponse, servletText.sentenceChangesWereSaved());
                                needsForm = false;
                            } else if (hasErrors) {
                                addErrorMessage(requestAndResponse, servletText.errorChangesWereNotSaved());
                            } else {
                                addErrorMessage(requestAndResponse, servletText.errorNoChangesToSave());
                                needsForm = false;
                            }
                        }
                    }

                    if (needsForm) {
                        // Recompute this in case the values have changed.
                        needsCurrentPassword = isCurrentPasswordNeeded(editedUser, currentIsEditedUser,
                                isUserAdmin);

                        requestAndResponse
                                .print("<form action=\"/closeAccount/" + (currentIsEditedUser ? "" : userId)
                                        + "\" method=\"POST\"><div class=\"account\">"
                                        + "<input type=\"hidden\" name=\"csrft\" value=\""
                                        + getCsrft(requestAndResponse) + "\">" + "<div class=\"infoheader\">"
                                        + servletText.sentenceSureYouWantToCloseAccount(currentIsEditedUser,
                                                StringEscapeUtils.escapeHtml4(editedUser.getUserName()))
                                        + "</div>");

                        if (needsCurrentPassword) {
                            requestAndResponse.print(
                                    "<input type=\"password\" id=\"currentpassword\" name=\"currentpassword\" placeholder=\""
                                            + servletText.sentenceCurrentPassword(currentIsEditedUser)
                                            + "\" maxlength=\"20\"><br>");
                        }

                        requestAndResponse.print("<table class=\"responseAndSave\"><tr>"
                                + "<td><div id=\"response\"></div></td>"
                                + "<td><button onclick=\"replacePaneForForm(event, '"
                                + servletText.buttonCloseAccount()
                                + "'); return false;\" id=\"save\" name=\"save\" class=\"specialbutton\" style=\"float:right; margin-top:10px;\">"
                                + servletText.buttonCloseAccount() + "</button></td>" + "</tr></table></div>"
                                + "</form>");
                    }
                }
            }

            dbLogic.commit();
        } catch (final PersistenceException e) {
            requestAndResponse.print(servletText.errorInternalDatabase());
        }
    }

    pageWrapper.addFooter();
}

From source file:com.squid.kraken.v4.api.core.analytics.AnalyticsServiceBaseImpl.java

private Response createHTMLPageList(AppContext ctx, NavigationQuery query, NavigationResult result) {
    String title = (query.getParent() != null && query.getParent().length() > 0) ? query.getParent() : "Root";
    StringBuilder html = createHTMLHeader("List: " + title);
    createHTMLtitle(html, title, null, result.getParent().getUpLink());
    // form/*from ww  w.jav  a 2  s. c  om*/
    html.append("<form><table>");
    html.append("<tr><td><input size=50 class='q' type='text' name='q' placeholder='filter the list' value='"
            + (query.getQ() != null ? query.getQ() : "") + "'></td>"
            + "<td><input type=\"submit\" value=\"Filter\"></td></tr>");
    html.append("<input type='hidden' name='parent' value='"
            + (query.getParent() != null ? query.getParent() : "") + "'>");
    if (query.getStyle() != null)
        html.append("<input type='hidden' name='style' value='"
                + (query.getStyle() != null ? query.getStyle() : "") + "'>");
    if (query.getVisibility() != null)
        html.append("<input type='hidden' name='visibility' value='"
                + (query.getVisibility() != null ? query.getVisibility() : "") + "'>");
    if (query.getHiearchy() != null)
        html.append("<input type='hidden' name='hierarchy' value='" + query.getHiearchy() + "'>");
    html.append("<input type='hidden' name='access_token' value='" + ctx.getToken().getOid() + "'>");
    html.append("</table></form>");
    //
    // parent description
    if (result.getParent() != null && result.getParent().getDescription() != null
            && result.getParent().getDescription().length() > 0) {
        html.append("<p><i>" + result.getParent().getDescription() + "</i></p>");
    }
    // coontent
    html.append("<table style='border-collapse:collapse'>");
    for (NavigationItem item : result.getChildren()) {
        html.append("<tr>");
        html.append("<td valign='top'>" + item.getType() + "</td>");
        if (item.getLink() != null) {
            html.append("<td valign='top'><a href=\"" + StringEscapeUtils.escapeHtml4(item.getLink().toString())
                    + "\">" + item.getName() + "</a>");
        } else {
            html.append("<td valign='top'>" + item.getName());
        }
        if (item.getObjectLink() != null) {
            html.append("&nbsp;[<a href=\"" + StringEscapeUtils.escapeHtml4(item.getObjectLink().toString())
                    + "\">info</a>]");
        }
        if (item.getViewLink() != null) {
            html.append("&nbsp;[<a href=\"" + StringEscapeUtils.escapeHtml4(item.getViewLink().toString())
                    + "\">view</a>]");
        }
        if (item.getDescription() != null && item.getDescription().length() > 0) {
            html.append("<br><i>" + (item.getDescription() != null ? item.getDescription() : "") + "</i>");
        }
        html.append("</td>");
        if (item.getAttributes() != null) {
            for (Entry<String, String> entry : item.getAttributes().entrySet()) {
                html.append("<td valign='top'>" + entry.getKey() + "=" + entry.getValue() + "</td>");
            }
        }
    }
    html.append("</table>");
    createHTMLAPIpanel(html, "listContent");
    html.append("</body></html>");
    return Response.ok(html.toString(), "text/html").build();
}

From source file:com.squid.kraken.v4.api.core.analytics.AnalyticsServiceBaseImpl.java

private Response createHTMLPageView(Space space, ViewQuery view, Info info, ViewReply reply) {
    String title = getPageTitle(space);
    StringBuilder html = createHTMLHeader("View: " + title);
    if (getPublicBaseUriBuilder().build().getScheme().equalsIgnoreCase("https")) {
        html.append(/* www  . j  a v  a  2  s.  c  om*/
                "<script src=\"https://d3js.org/d3.v3.min.js\" charset=\"utf-8\"></script>\r\n<script src=\"https://vega.github.io/vega/vega.js\" charset=\"utf-8\"></script>\r\n<script src=\"https://vega.github.io/vega-lite/vega-lite.js\" charset=\"utf-8\"></script>\r\n<script src=\"https://vega.github.io/vega-editor/vendor/vega-embed.js\" charset=\"utf-8\"></script>\r\n\r\n");
    } else {
        html.append(
                "<script src=\"http://d3js.org/d3.v3.min.js\" charset=\"utf-8\"></script>\r\n<script src=\"http://vega.github.io/vega/vega.js\" charset=\"utf-8\"></script>\r\n<script src=\"http://vega.github.io/vega-lite/vega-lite.js\" charset=\"utf-8\"></script>\r\n<script src=\"http://vega.github.io/vega-editor/vendor/vega-embed.js\" charset=\"utf-8\"></script>\r\n\r\n");
    }
    html.append("<body>");
    createHTMLtitle(html, title, view.getBBID(), getParentLink(space));
    createHTMLproblems(html, reply.getQuery().getProblems());
    html.append(
            "<div id=\"vis\"></div>\r\n\r\n<script>\r\nvar embedSpec = {\r\n  mode: \"vega-lite\", renderer:\"svg\",  spec:");
    html.append(writeVegalightSpecs(reply.getResult()));
    Encoding channels = reply.getResult().encoding;
    html.append(
            "}\r\nvg.embed(\"#vis\", embedSpec, function(error, result) {\r\n  // Callback receiving the View instance and parsed Vega spec\r\n  // result.view is the View, which resides under the '#vis' element\r\n});\r\n</script>\r\n");
    createHTMLpagination(html, view, info);
    // data-link
    URI dataLink = buildAnalyticsQueryURI(userContext, reply.getQuery(), "RECORDS", "ALL", Style.HTML, null);
    html.append("<p><a href=\"" + StringEscapeUtils.escapeHtml4(dataLink.toASCIIString())
            + "\">view query data</a></p>");
    //
    html.append("<form>");
    createHTMLfilters(html, reply.getQuery());
    html.append("<table>" + "<tr><td>x</td><td><input type=\"text\" size=30 name=\"x\" value=\""
            + getFieldValue(view.getX()) + "\"></td><td>"
            + (channels.x != null ? "as <b>" + channels.x.field + "</b>" : "") + "</td></tr>"
            + "<tr><td>y</td><td><input type=\"text\" size=30 name=\"y\" value=\"" + getFieldValue(view.getY())
            + "\"></td><td>" + (channels.y != null ? "as <b>" + channels.y.field + "</b>" : "") + "</td></tr>"
            + "<tr><td>color</td><td><input type=\"text\" size=30 name=\"color\" value=\""
            + getFieldValue(view.getColor()) + "\"></td><td>"
            + (channels.color != null ? "as <b>" + channels.color.field + "</b>" : "") + "</td></tr>"
            + "<tr><td>size</td><td><input type=\"text\" size=30 name=\"size\" value=\""
            + getFieldValue(view.getSize()) + "\"></td><td>"
            + (channels.size != null ? "as <b>" + channels.size.field + "</b>" : "") + "</td></tr>"
            + "<tr><td>column</td><td><input type=\"text\" size=30 name=\"column\" value=\""
            + getFieldValue(view.getColumn()) + "\"></td><td>"
            + (channels.column != null ? "as <b>" + channels.column.field + "</b>" : "") + "</td></tr>"
            + "<tr><td>row</td><td><input type=\"text\" size=30 name=\"row\" value=\""
            + getFieldValue(view.getRow()) + "\"></td><td>"
            + (channels.row != null ? "as <b>" + channels.row.field + "</b>" : "") + "</td></tr>");
    // metrics -- display the actual metrics
    html.append("<tr><td valign='top'>metrics</td><td>");
    createHTMLinputArray(html, "text", "metrics", reply.getQuery().getMetrics());
    html.append(
            "</td><td>Use the metrics parameters if you want to view multiple metrics on the same graph. Then you can use the <b>__VALUE</b> expression in channel to reference the metrics' value, and the <b>__METRICS</b> to get the metrics' name as a series.<br>If you need only a single metrics, you can directly define it in a channel, e.g. <code>y=count()</code>.");
    html.append("</td></tr>");
    // limits, maxResults, startIndex
    html.append("<tr><td>limit</td><td>");
    html.append("<input type=\"text\" name=\"limit\" value=\"" + getFieldValue(view.getLimit(), -1) + "\">");
    html.append("</td></tr>");
    html.append("<tr><td>maxResults</td><td>");
    html.append("<input type=\"text\" name=\"maxResults\" value=\"" + getFieldValue(view.getMaxResults(), -1)
            + "\">");
    html.append("</td></tr>");
    html.append("<tr><td>startIndex</td><td>");
    html.append("<input type=\"text\" name=\"startIndex\" value=\"" + getFieldValue(view.getStartIndex(), 0)
            + "\"></td><td><i>index is zero-based, so use the #count of the last row to view the next page</i>");
    html.append("</td></tr>");
    html.append("</table>" + "<input type=\"hidden\" name=\"style\" value=\"HTML\">"
            + "<input type=\"hidden\" name=\"access_token\" value=\""
            + space.getUniverse().getContext().getToken().getOid() + "\">"
            + "<input type=\"submit\" value=\"Refresh\">" + "</form>");
    createHTMLscope(html, space, reply.getQuery());
    createHTMLAPIpanel(html, "viewAnalysis");
    html.append("</body>\r\n</html>");
    return Response.ok(html.toString(), "text/html; charset=UTF-8").build();
}