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

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

Introduction

In this page you can find the example usage for org.apache.commons.lang3 StringEscapeUtils escapeJson.

Prototype

public static final String escapeJson(final String input) 

Source Link

Document

Escapes the characters in a String using Json String rules.

Escapes any values it finds into their Json String form.

Usage

From source file:serposcope.controllers.google.GoogleGroupController.java

public Result jsonTargetSuggest(Context context, @Param("query") String query) {

    StringBuilder builder = new StringBuilder("[");
    getTargets(context).stream().filter((g) -> query == null ? true : g.getName().contains(query))
            .sorted((o1, o2) -> o1.getId() - o2.getId()).limit(10).forEach((g) -> {
                builder.append("{").append("\"id\":").append(g.getId()).append(",").append("\"name\":\"")
                        .append(StringEscapeUtils.escapeJson(g.getName())).append("\",").append("\"group\":")
                        .append(g.getGroupId()).append("},");
            });/*w w w.  j av a 2 s.c om*/
    if (builder.length() > 1) {
        builder.deleteCharAt(builder.length() - 1);
    }
    builder.append("]");

    return Results.json().renderRaw(builder.toString());
}

From source file:serposcope.controllers.google.GoogleGroupController.java

public Result jsonSearchSuggest(Context context, @Param("query") String query) {

    StringBuilder builder = new StringBuilder("[");
    getSearches(context).stream().filter((g) -> query == null ? true : g.getKeyword().contains(query))
            .sorted((o1, o2) -> o1.getId() - o2.getId()).limit(10).forEach((g) -> {
                builder.append("{").append("\"id\":").append(g.getId()).append(",").append("\"name\":\"")
                        .append(StringEscapeUtils.escapeJson(g.getKeyword())).append("\"").append("},");
            });/*from w ww  .j a v  a2 s.  co  m*/
    if (builder.length() > 1) {
        builder.deleteCharAt(builder.length() - 1);
    }
    builder.append("]");

    return Results.json().renderRaw(builder.toString());
}

From source file:serposcope.controllers.google.GoogleSearchController.java

protected String getJsonRanks(Group group, List<GoogleTarget> targets, Run firstRun, Run lastRun,
        int searchId) {

    StringBuilder builder = new StringBuilder("{\"targets\":[");
    for (GoogleTarget target : targets) {
        builder.append("{\"id\":").append(target.getId()).append(",\"name\":\"")
                .append(StringEscapeUtils.escapeJson(target.getName())).append("\"},");
    }/*  w w  w  .ja va  2s. c  o  m*/
    if (builder.charAt(builder.length() - 1) == ',') {
        builder.setCharAt(builder.length() - 1, ']');
    } else {
        builder.append(']');
    }
    builder.append(",\"ranks\":[");

    final int[] maxRank = new int[1];

    googleDB.serp.stream(firstRun.getId(), lastRun.getId(), searchId, (GoogleSerp serp) -> {

        builder.append('[').append(serp.getRunDay().toEpochSecond(ZoneOffset.UTC) * 1000l).append(',');

        // calendar
        builder.append("null").append(",");

        for (GoogleTarget target : targets) {
            int position = UNRANKED;
            for (int i = 0; i < serp.getEntries().size(); i++) {
                if (target.match(serp.getEntries().get(i).getUrl())) {
                    position = i + 1;
                    break;
                }
            }

            builder.append(position == UNRANKED ? "null" : position).append(',');
            if (position != UNRANKED && position > maxRank[0]) {
                maxRank[0] = position;
            }
        }

        if (builder.charAt(builder.length() - 1) == ',') {
            builder.setCharAt(builder.length() - 1, ']');
        }
        builder.append(',');
    });
    if (builder.charAt(builder.length() - 1) == ',') {
        builder.setCharAt(builder.length() - 1, ']');
    } else {
        builder.append(']');
    }

    builder.append(",\"maxRank\":").append(maxRank[0]);
    builder.append("}");

    return builder.toString();
}

From source file:serposcope.controllers.google.GoogleTargetController.java

protected StringBuilder searchToJson(GoogleSearch search) {
    StringBuilder searchesJson = new StringBuilder("{");
    searchesJson.append("\"id\":").append(search.getId()).append(",");
    searchesJson.append("\"keyword\":\"").append(StringEscapeUtils.escapeJson(search.getKeyword()))
            .append("\",");
    searchesJson.append("\"tld\":\"")
            .append(search.getTld() == null ? "" : StringEscapeUtils.escapeJson(search.getTld())).append("\",");
    searchesJson.append("\"device\":\"").append(SMARTPHONE.equals(search.getDevice()) ? 'M' : 'D')
            .append("\",");
    searchesJson.append("\"local\":\"")
            .append(search.getLocal() == null ? "" : StringEscapeUtils.escapeJson(search.getLocal()))
            .append("\",");
    searchesJson.append("\"datacenter\":\"")
            .append(search.getDatacenter() == null ? "" : StringEscapeUtils.escapeJson(search.getDatacenter()))
            .append("\",");
    searchesJson.append("\"custom\":\"").append(search.getCustomParameters() == null ? ""
            : StringEscapeUtils.escapeJson(search.getCustomParameters())).append("\"");
    searchesJson.append("}");
    return searchesJson;
}

From source file:serposcope.controllers.google.GoogleTargetController.java

protected Result renderChart(Group group, GoogleTarget target, List<GoogleSearch> searches, List<Run> runs,
        LocalDate minDay, LocalDate maxDay, LocalDate startDate, LocalDate endDate) {
    String display = "chart";
    StringBuilder builder = new StringBuilder("{\"searches\": [");
    for (GoogleSearch search : searches) {
        builder.append("\"").append(StringEscapeUtils.escapeJson(search.getKeyword())).append("\",");
    }/*from w  ww  . jav  a  2  s . c o m*/
    builder.setCharAt(builder.length() - 1, ']');
    builder.append(",\"ranks\": [");

    int maxRank = 0;
    for (Run run : runs) {
        builder.append("\n\t[").append(run.getStarted().toEpochSecond(ZoneOffset.UTC) * 1000l).append(",");
        // calendar
        builder.append("null,");

        Map<Integer, GoogleRank> ranks = googleDB.rank.list(run.getId(), group.getId(), target.getId()).stream()
                .collect(Collectors.toMap((g) -> g.googleSearchId, Function.identity()));

        for (GoogleSearch search : searches) {
            GoogleRank fullRank = ranks.get(search.getId());
            //                GoogleRank fullRank = googleDB.rank.getFull(run.getId(), group.getId(), target.getId(), search.getId());
            if (fullRank != null && fullRank.rank != GoogleRank.UNRANKED && fullRank.rank > maxRank) {
                maxRank = fullRank.rank;
            }
            builder.append(fullRank == null || fullRank.rank == GoogleRank.UNRANKED ? "null" : fullRank.rank)
                    .append(',');
        }

        builder.setCharAt(builder.length() - 1, ']');
        builder.append(",");
    }
    builder.setCharAt(builder.length() - 1, ']');
    builder.append(",\n\"maxRank\": ").append(maxRank).append("}");

    List<Event> events = baseDB.event.list(group, startDate, endDate);
    String jsonEvents = null;
    try {
        jsonEvents = objectMapper.writeValueAsString(events);
    } catch (JsonProcessingException ex) {
        jsonEvents = "[]";
    }

    Map<Integer, GoogleBest> bestRanks = new HashMap<>();
    for (GoogleSearch search : searches) {
        bestRanks.put(search.getId(),
                googleDB.rank.getBest(target.getGroupId(), target.getId(), search.getId()));
    }

    return Results.ok().template("/serposcope/views/google/GoogleTargetController/" + display + ".ftl.html")
            .render("target", target).render("searches", searches).render("startDate", startDate.toString())
            .render("endDate", endDate.toString()).render("minDate", minDay).render("maxDate", maxDay)
            .render("display", display).render("ranksJson", builder.toString())
            .render("eventsJson", jsonEvents);
}

From source file:serposcope.controllers.google.GoogleTargetController.java

protected void getTableJson(Group group, GoogleTarget target, List<GoogleSearch> searches, List<Run> runs,
        LocalDate startDate, LocalDate endDate, Writer writer) throws IOException {
    writer.append("[[[-1, 0, 0, [");
    if (runs.isEmpty() || searches.isEmpty()) {
        writer.append("]]],[]]");
    }//www .ja va  2s . co m

    // events
    List<Event> events = baseDB.event.list(group, startDate, endDate);
    for (int i = 0; i < runs.size(); i++) {
        Run run = runs.get(i);
        Event event = null;

        for (Event candidat : events) {
            if (run.getDay().equals(candidat.getDay())) {
                event = candidat;
                break;
            }
        }

        if (event != null) {
            writer.append("[\"").append(StringEscapeUtils.escapeJson(event.getTitle())).append("\",")
                    .append('"').append(StringEscapeUtils.escapeJson(event.getDescription())).append("\"]");
        } else {
            writer.append("0");
        }

        if (i != runs.size() - 1) {
            writer.append(",");
        }

    }
    writer.append("]],");

    Map<Integer, StringBuilder> builders = new HashMap<>();
    for (GoogleSearch search : searches) {
        StringBuilder builder;
        builders.put(search.getId(), builder = new StringBuilder("["));
        GoogleBest best = googleDB.rank.getBest(target.getGroupId(), target.getId(), search.getId());

        builder.append(search.getId()).append(",[\"").append(StringEscapeUtils.escapeJson(search.getKeyword()))
                .append("\",\"")
                .append(search.getTld() == null ? "" : StringEscapeUtils.escapeJson(search.getTld()))
                .append("\",\"").append(SMARTPHONE.equals(search.getDevice()) ? 'M' : 'D').append("\",\"")
                .append(search.getLocal() == null ? "" : StringEscapeUtils.escapeJson(search.getLocal()))
                .append("\",\"")
                .append(search.getDatacenter() == null ? ""
                        : StringEscapeUtils.escapeJson(search.getDatacenter()))
                .append("\",\"").append(search.getCustomParameters() == null ? ""
                        : StringEscapeUtils.escapeJson(search.getCustomParameters()))
                .append("\"],");

        if (best == null) {
            builder.append("0,");
        } else {
            builder.append("[").append(best.getRank()).append(",\"")
                    .append(best.getRunDay() != null ? best.getRunDay().toLocalDate().toString() : "?")
                    .append("\",\"").append(StringEscapeUtils.escapeJson(best.getUrl())).append("\"],");
        }
        builder.append("[");
    }

    for (int i = 0; i < runs.size(); i++) {
        Run run = runs.get(i);

        Map<Integer, GoogleRank> ranks = googleDB.rank.list0(run.getId(), group.getId(), target.getId())
                .stream().collect(Collectors.toMap((r) -> r.googleSearchId, Function.identity()));

        for (GoogleSearch search : searches) {
            StringBuilder builder = builders.get(search.getId());
            GoogleRank fullRank = ranks.get(search.getId());
            if (fullRank != null && fullRank.rank != GoogleRank.UNRANKED) {
                builder.append("[").append(fullRank.rank).append(",").append(fullRank.previousRank)
                        .append(",\"").append(StringEscapeUtils.escapeJson(fullRank.url)).append("\"],");
            } else {
                builder.append("0,");
            }

            if (i == runs.size() - 1) {
                builder.deleteCharAt(builder.length() - 1);
                builder.append("]]");
            }
        }
    }

    List<StringBuilder> buildersArray = new ArrayList<>(builders.values());
    for (int i = 0; i < buildersArray.size(); i++) {
        writer.append(buildersArray.get(i));
        if (i != buildersArray.size() - 1) {
            writer.append(",");
        }
    }
    writer.append("],[");
    for (int i = 0; i < runs.size(); i++) {
        Run run = runs.get(i);
        writer.append("\"").append(run.getDay().toString()).append("\"");
        if (i != runs.size() - 1) {
            writer.append(",");
        }
    }
    writer.append("]]");
}

From source file:serposcope.controllers.google.GoogleTargetController.java

protected String getTableJsonData0(Group group, GoogleTarget target, List<GoogleSearch> searches,
        List<Run> runs, LocalDate startDate, LocalDate endDate) {
    StringBuilder jsonData = new StringBuilder("[{\"id\": -1, \"best\": null, \"days\": [");
    if (runs.isEmpty() || searches.isEmpty()) {
        jsonData.append("]}]");
        return jsonData.toString();
    }/* www .  ja v  a2s .  c  om*/

    // events
    List<Event> events = baseDB.event.list(group, startDate, endDate);
    for (Run run : runs) {
        Event event = null;

        for (Event candidat : events) {
            if (run.getDay().equals(candidat.getDay())) {
                event = candidat;
                break;
            }
        }

        if (event != null) {
            jsonData.append("{\"title\":\"").append(StringEscapeUtils.escapeJson(event.getTitle()))
                    .append("\",\"description\":\"")
                    .append(StringEscapeUtils.escapeJson(event.getDescription())).append("\"},");
        } else {
            jsonData.append("null,");
        }
    }
    jsonData.deleteCharAt(jsonData.length() - 1);
    jsonData.append("]},");

    Map<Integer, StringBuilder> builders = new HashMap<>();

    for (GoogleSearch search : searches) {
        StringBuilder builder;
        builders.put(search.getId(), builder = new StringBuilder());
        builder.append("");
        GoogleBest best = googleDB.rank.getBest(target.getGroupId(), target.getId(), search.getId());

        builder.append("{\"id\":").append(search.getId()).append(",\"search\":{").append("\"id\":")
                .append(search.getId()).append(",\"k\":\"")
                .append(StringEscapeUtils.escapeJson(search.getKeyword())).append("\",\"t\":\"")
                .append(search.getTld() == null ? "" : StringEscapeUtils.escapeJson(search.getTld()))
                .append("\",\"d\":\"").append(SMARTPHONE.equals(search.getDevice()) ? 'M' : 'D')
                .append("\",\"l\":\"")
                .append(search.getLocal() == null ? "" : StringEscapeUtils.escapeJson(search.getLocal()))
                .append("\",\"dc\":\"")
                .append(search.getDatacenter() == null ? ""
                        : StringEscapeUtils.escapeJson(search.getDatacenter()))
                .append("\",\"c\":\"").append(search.getCustomParameters() == null ? ""
                        : StringEscapeUtils.escapeJson(search.getCustomParameters()))
                .append("\"}, \"best\":");

        if (best == null) {
            builder.append("null,");
        } else {
            builder.append("{\"rank\":").append(best.getRank()).append(",\"date\":\"")
                    .append(best.getRunDay() != null ? best.getRunDay().toLocalDate().toString() : "?")
                    .append("\",\"url\":\"").append(StringEscapeUtils.escapeJson(best.getUrl())).append("\"},");
        }
        builder.append("\"days\": [");
    }

    for (int i = 0; i < runs.size(); i++) {
        Run run = runs.get(i);

        Map<Integer, GoogleRank> ranks = googleDB.rank.list0(run.getId(), group.getId(), target.getId())
                .stream().collect(Collectors.toMap((r) -> r.googleSearchId, Function.identity()));

        for (GoogleSearch search : searches) {
            StringBuilder builder = builders.get(search.getId());
            GoogleRank fullRank = ranks.get(search.getId());
            if (fullRank != null && fullRank.rank != GoogleRank.UNRANKED) {
                builder.append("{\"r\":").append(fullRank.rank).append(",\"p\":").append(fullRank.previousRank)
                        .append(",\"u\":\"").append(StringEscapeUtils.escapeJson(fullRank.url)).append("\"},");
            } else {
                builder.append("{\"r\":32767,\"p\":null,\"u\":null},");
            }

            if (i == runs.size() - 1) {
                builder.deleteCharAt(builder.length() - 1);
                builder.append("]},");
            }
        }
    }

    for (StringBuilder value : builders.values()) {
        jsonData.append(value);
    }
    jsonData.deleteCharAt(jsonData.length() - 1);
    jsonData.append("]");

    return jsonData.toString();
}

From source file:serposcope.controllers.GroupController.java

public Result jsonSuggest(Context context, @Param("query") String query) {
    List<Group> groups = (List<Group>) context.getAttribute("groups");

    StringBuilder builder = new StringBuilder("[");
    groups.stream().filter((Group g) -> query == null ? true : g.getName().contains(query))
            .sorted((Group o1, Group o2) -> o1.getId() - o2.getId()).limit(10).forEach((g) -> {
                builder.append("{").append("\"id\":").append(g.getId()).append(",").append("\"name\":\"")
                        .append(StringEscapeUtils.escapeJson(g.getName())).append("\",").append("\"module\":\"")
                        .append(g.getModule()).append("\"").append("},");
            });/*from   w  w  w  . j  av  a  2s . co m*/
    if (builder.length() > 1) {
        builder.deleteCharAt(builder.length() - 1);
    }
    builder.append("]");

    return Results.json().renderRaw(builder.toString());
}

From source file:serposcope.filters.GoogleGroupFilter.java

public String serializeTargets(Group group, List<GoogleTarget> targets) {
    if (targets == null || targets.isEmpty()) {
        return "[]";
    }/*  w  w  w .  j  a v  a 2  s .c  o m*/

    StringBuilder builder = new StringBuilder("[");
    for (GoogleTarget target : targets) {
        builder.append("{\"id\":").append(target.getId()).append(",");
        builder.append("\"group\":").append(group.getId()).append(",");
        builder.append("\"name\":\"").append(StringEscapeUtils.escapeJson(target.getName())).append("\"},");
    }
    builder.setCharAt(builder.length() - 1, ']');
    return builder.toString();
}

From source file:serposcope.filters.GoogleGroupFilter.java

public String serializeSearches(Group group, List<GoogleSearch> searches) {
    if (searches == null || searches.isEmpty()) {
        return "[]";
    }/*w w w .j  a  va 2s  .  c  o m*/
    StringBuilder builder = new StringBuilder("[");
    for (GoogleSearch search : searches) {
        builder.append("{\"id\":").append(search.getId()).append(",");
        builder.append("\"group\":").append(group.getId()).append(",");
        builder.append("\"name\":\"").append(StringEscapeUtils.escapeJson(search.getKeyword())).append("\"},");
    }
    builder.setCharAt(builder.length() - 1, ']');
    return builder.toString();
}