Exemplo n.º 1
0
  public static XContentBuilder toJson(
      Post post,
      String riverName,
      Map<String, List<EntityReference>> entities,
      Map<String, List<String>> mauiTopics,
      List<Map<String, String>> bayesianAnalyzedText)
      throws IOException {
    XContentBuilder out = XContentFactory.jsonBuilder().startObject();
    out.field("PostId", post.getId());
    out.field("PostLink", post.getLink() != null ? post.getLink().toString() : null);
    out.field("PostCreatedTime", post.getCreatedTime());

    IdNameEntity idName = null;
    if ((idName = post.getFrom()) != null) {
      out.field("PostFromId", idName.getId());
      out.field("PostFromName", idName.getName());
    }
    if (post.getStatusType() != null) {
      out.field("PostStatusType", post.getStatusType());
    }
    out.field("Post", post.getMessage());

    if (entities != null) {
      if (entities.isEmpty()) {
        out.field("entities", "{}");
      } else {
        out.startArray("entities");
        for (Map.Entry<String, List<EntityReference>> entityEntry : entities.entrySet()) {
          out.startObject();
          out.startArray(entityEntry.getKey());
          for (EntityReference er : entityEntry.getValue()) {
            out.startObject();
            out.field("entity-label", er.getEntityLabel());
            out.field("entity-reference", er.getEntityReference());
            out.field("entity-confidence", er.getConfidence());
            out.startArray("entity-type");
            for (String s : er.getEntityTypeList()) {
              out.startObject();
              out.field("type", s);
              out.endObject();
            }
            out.endArray();
            out.endObject();
          }
          out.endArray();
          out.endObject();
        }
        out.endArray();
      }
    }

    if (mauiTopics != null) {
      if (mauiTopics.isEmpty()) {
        out.field("topics", "{}");
      } else {
        out.startArray("topics");
        out.startObject();
        for (Map.Entry<String, List<String>> e : mauiTopics.entrySet()) {
          out.startArray(e.getKey());
          for (String s : e.getValue()) {
            out.startObject();
            out.field("text", s);
            out.endObject();
          }
          out.endArray();
        }
        out.endObject();
        out.endArray();
      }
    }

    if (bayesianAnalyzedText != null) {
      if (bayesianAnalyzedText.isEmpty()) {
        out.field("BayesianAnalysers", "{}");
      } else {
        out.startArray("BayesianAnalysers");
        out.startObject();
        for (Map<String, String> m : bayesianAnalyzedText) {
          if (m == null || m.isEmpty()) {
            continue;
          }
          for (Map.Entry<String, String> e : m.entrySet()) {
            out.startArray(e.getKey());
            out.startObject();
            out.field("text", e.getValue());
            out.endObject();
            out.endArray();
          }
        }
        out.endObject();
        out.endArray();
      }
    }

    if (riverName != null) {
      out.field("RiverName", riverName);
    }
    return out.endObject();
  }