From c019b9ea8ade4abe3af58df34aaeb4da983aa107 Mon Sep 17 00:00:00 2001 From: Jun Date: Mon, 7 Nov 2016 11:47:31 +0900 Subject: [PATCH] Rename a note from the main page --- .../zeppelin/socket/NotebookServer.java | 39 +++++++++++++++---- zeppelin-web/src/app/home/home.controller.js | 4 ++ zeppelin-web/src/app/home/home.html | 14 +++++-- .../noteAction/noteAction.service.js | 23 +++++++++++ .../noteList.datafactory.js | 3 +- .../websocketEvents/websocketMsg.service.js | 4 ++ .../zeppelin/notebook/socket/Message.java | 2 + 7 files changed, 77 insertions(+), 12 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java index 6cba536748..456635e13b 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java @@ -48,13 +48,7 @@ import org.apache.zeppelin.interpreter.InterpreterSetting; import org.apache.zeppelin.interpreter.remote.RemoteAngularObjectRegistry; import org.apache.zeppelin.interpreter.remote.RemoteInterpreterProcessListener; import org.apache.zeppelin.interpreter.thrift.InterpreterCompletion; -import org.apache.zeppelin.notebook.JobListenerFactory; -import org.apache.zeppelin.notebook.Note; -import org.apache.zeppelin.notebook.Notebook; -import org.apache.zeppelin.notebook.NotebookAuthorization; -import org.apache.zeppelin.notebook.NotebookEventListener; -import org.apache.zeppelin.notebook.Paragraph; -import org.apache.zeppelin.notebook.ParagraphJobListener; +import org.apache.zeppelin.notebook.*; import org.apache.zeppelin.notebook.repo.NotebookRepo.Revision; import org.apache.zeppelin.notebook.socket.Message; import org.apache.zeppelin.notebook.socket.Message.OP; @@ -234,6 +228,9 @@ public class NotebookServer extends WebSocketServlet implements case NOTE_UPDATE: updateNote(conn, userAndRoles, notebook, messagereceived); break; + case NOTE_RENAME: + renameNote(conn, userAndRoles, notebook, messagereceived); + break; case COMPLETION: completion(conn, userAndRoles, notebook, messagereceived); break; @@ -701,6 +698,34 @@ public class NotebookServer extends WebSocketServlet implements } } + private void renameNote(NotebookSocket conn, HashSet userAndRoles, + Notebook notebook, Message fromMessage) + throws SchedulerException, IOException { + String noteId = (String) fromMessage.get("id"); + String name = (String) fromMessage.get("name"); + + if (noteId == null) { + return; + } + + NotebookAuthorization notebookAuthorization = notebook.getNotebookAuthorization(); + if (!notebookAuthorization.isOwner(noteId, userAndRoles)) { + permissionError(conn, "renameNote", fromMessage.principal, + userAndRoles, notebookAuthorization.getOwners(noteId)); + return; + } + + Note note = notebook.getNote(noteId); + if (note != null) { + note.setName(name); + + AuthenticationInfo subject = new AuthenticationInfo(fromMessage.principal); + note.persist(subject); + broadcastNote(note); + broadcastNoteList(subject, userAndRoles); + } + } + private boolean isCronUpdated(Map configA, Map configB) { boolean cronUpdated = false; diff --git a/zeppelin-web/src/app/home/home.controller.js b/zeppelin-web/src/app/home/home.controller.js index 1d11c79bfa..839978fced 100644 --- a/zeppelin-web/src/app/home/home.controller.js +++ b/zeppelin-web/src/app/home/home.controller.js @@ -88,6 +88,10 @@ } }); + $scope.renameNote = function(node) { + noteActionSrv.renameNote(node.id, node.path); + }; + $scope.removeNote = function(noteId) { noteActionSrv.removeNote(noteId, false); }; diff --git a/zeppelin-web/src/app/home/home.html b/zeppelin-web/src/app/home/home.html index a8d5e56088..0b9883e9b8 100644 --- a/zeppelin-web/src/app/home/home.html +++ b/zeppelin-web/src/app/home/home.html @@ -14,20 +14,26 @@ limitations under the License.