List of usage examples for org.apache.commons.lang3 StringEscapeUtils escapeJson
public static final String escapeJson(final String input)
Escapes the characters in a String using Json String rules.
Escapes any values it finds into their Json String form.
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(); }