/** * Move paragraph REST API * * @param newIndex - new index to move * @return JSON with status.OK * @throws IOException */ @POST @Path("{notebookId}/paragraph/{paragraphId}/move/{newIndex}") @ZeppelinApi public Response moveParagraph( @PathParam("notebookId") String notebookId, @PathParam("paragraphId") String paragraphId, @PathParam("newIndex") String newIndex) throws IOException { LOG.info("move paragraph {} {} {}", notebookId, paragraphId, newIndex); Note note = notebook.getNote(notebookId); if (note == null) { return new JsonResponse(Status.NOT_FOUND, "note not found.").build(); } Paragraph p = note.getParagraph(paragraphId); if (p == null) { return new JsonResponse(Status.NOT_FOUND, "paragraph not found.").build(); } try { note.moveParagraph(paragraphId, Integer.parseInt(newIndex), true); AuthenticationInfo subject = new AuthenticationInfo(SecurityUtils.getPrincipal()); note.persist(subject); notebookServer.broadcastNote(note); return new JsonResponse(Status.OK, "").build(); } catch (IndexOutOfBoundsException e) { LOG.error("Exception in NotebookRestApi while moveParagraph ", e); return new JsonResponse(Status.BAD_REQUEST, "paragraph's new index is out of bound").build(); } }
/** * Move paragraph into the new index (order from 0 ~ n-1). * * @param paragraphId ID of paragraph * @param index new index */ public void moveParagraph(String paragraphId, int index) { moveParagraph(paragraphId, index, false); }