return ok(result);
}
public static Result save() {
User user = getLoggedUser();
List<Form<Link>> liensForms = new ArrayList<Form<Link>>();
Form<Link> newLink = null;
String newLabel = null;
String newUrl = null;
LinkType newLinkType = LinkType.OTHER;
JsonNode userJson = request().body().asJson();
// Parcour des links du user;
ArrayNode liens = (ArrayNode) userJson.get("links");
for (JsonNode lien : liens) {
if (lien.get("id") != null) {
Form<Link> oneLienForm = form(Link.class).bind(lien);
if (oneLienForm.hasErrors()) {
Map<String, Map<String, List<String>>> errors = new HashMap<String, Map<String, List<String>>>();
errors.put(lien.get("id").asText(), TransformValidationErrors.transform(oneLienForm.errors()));
return badRequest(toJson(errors));
}
liensForms.add(oneLienForm);
} else {
newLink = form(Link.class).bind(lien);
if (lien.get("label") != null) {
newLabel = lien.get("label").asText();
}
if (lien.get("url") != null) {
newUrl = lien.get("url").asText();
}
if (lien.get("type") != null) {
newLinkType = LinkType.valueOf(lien.get("type").asText());
}
}
}
if (newLinkExists(newLink, newLabel, newUrl)
&& newLink.hasErrors()) {
return badRequest(toJson(TransformValidationErrors.transform(newLink.errors())));
}
if (newLink != null && newLink.hasErrors()) {
newLink.errors().clear();
}
for (Link oneLink : user.getLinks()) {
Form<Link> lienForm = liensForms.remove(0);
oneLink.label = lienForm.get().label;
oneLink.url = lienForm.get().url;
//TODO gestion du type
}
if (newLinkExists(newLink, newLabel, newUrl)) {
Link link = newLink.get();
link.linkType = newLinkType;
user.getLinks().add(link);
}
user.save();
return ok();
}