Slide 157
Slide 157 text
Observable fullDocumentJson = DocumentService.find("user")
.filter(Document::isStarred)
.take(10)
.map(doc -> {
Observable oc = CommentService.findForDoc(doc)
.flatMap(c -> UserService.find(c.getUserId())
.first() .map(u -> {
JsonObject result = jsonify(c).append("author", u.getName());
return result.append("nickname", u.getLogin()).append("email", u.getEmail()); }));
Observable om = MetaService.findForDoc(doc).map(m -> jsonify(m));
Observable op = PictureService.findAllMetas(doc.getPictures()).map(p -> jsonify(p));
JsonObject docJson = new JsonObject().appendInt("id", doc.getId()).append("text", doc.getText());
JsonArray c = new JsonArray();
docJson.addArray("comments", c);
oc.reduce(c, (array, elem) -> array.addElement(elem));
JsonArray m = new JsonArray();
docJson.addArray("meta", m);
om.reduce(m, (array, elem) -> array.addElement(elem));
JsonArray p = new JsonArray();
docJson.addArray("pictures", p);
op.reduce(p, (array, elem) -> array.addElement(elem));
return docJson;
});
Observable oc = CommentService.findForDoc(doc)
.flatMap(c -> UserService.find(c.getUserId())
.first()
.map(u -> {
JsonObject result = jsonify(c)
.append("author", u.getName());
.append("nickname", u.getLogin())
.append("email", u.getEmail());
return result;
})
);