public List<Map<String, Object>> getJobListBymNotebookId(String notebookID) { final String CRON_TYPE_NOTEBOOK_KEYWORD = "cron"; long lastRunningUnixTime = 0; boolean isNotebookRunning = false; Note jobNote = getNote(notebookID); List<Map<String, Object>> notesInfo = new LinkedList<>(); if (jobNote == null) { return notesInfo; } Map<String, Object> info = new HashMap<>(); info.put("notebookId", jobNote.getId()); String notebookName = jobNote.getName(); if (notebookName != null && !notebookName.equals("")) { info.put("notebookName", jobNote.getName()); } else { info.put("notebookName", "Note " + jobNote.getId()); } // set notebook type ( cron or normal ) if (jobNote.getConfig().containsKey(CRON_TYPE_NOTEBOOK_KEYWORD) && !jobNote.getConfig().get(CRON_TYPE_NOTEBOOK_KEYWORD).equals("")) { info.put("notebookType", "cron"); } else { info.put("notebookType", "normal"); } // set paragraphs List<Map<String, Object>> paragraphsInfo = new LinkedList<>(); for (Paragraph paragraph : jobNote.getParagraphs()) { // check paragraph's status. if (paragraph.getStatus().isRunning()) { isNotebookRunning = true; } // get data for the job manager. Map<String, Object> paragraphItem = getParagraphForJobManagerItem(paragraph); lastRunningUnixTime = getUnixTimeLastRunParagraph(paragraph); paragraphsInfo.add(paragraphItem); } // set interpreter bind type String interpreterGroupName = null; if (replFactory.getInterpreterSettings(jobNote.getId()) != null && replFactory.getInterpreterSettings(jobNote.getId()).size() >= 1) { interpreterGroupName = replFactory.getInterpreterSettings(jobNote.getId()).get(0).getName(); } // notebook json object root information. info.put("interpreter", interpreterGroupName); info.put("isRunningJob", isNotebookRunning); info.put("unixTimeLastRun", lastRunningUnixTime); info.put("paragraphs", paragraphsInfo); notesInfo.add(info); return notesInfo; };
/** * import JSON as a new note. * * @param sourceJson - the note JSON to import * @param noteName - the name of the new note * @return notebook ID * @throws IOException */ public Note importNote(String sourceJson, String noteName, AuthenticationInfo subject) throws IOException { GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.setPrettyPrinting(); Gson gson = gsonBuilder.registerTypeAdapter(Date.class, new NotebookImportDeserializer()).create(); JsonReader reader = new JsonReader(new StringReader(sourceJson)); reader.setLenient(true); Note newNote; try { Note oldNote = gson.fromJson(reader, Note.class); newNote = createNote(subject); if (noteName != null) newNote.setName(noteName); else newNote.setName(oldNote.getName()); List<Paragraph> paragraphs = oldNote.getParagraphs(); for (Paragraph p : paragraphs) { newNote.addCloneParagraph(p); } newNote.persist(subject); } catch (IOException e) { logger.error(e.toString(), e); throw e; } return newNote; }
public List<Map<String, Object>> getJobListByUnixTime( boolean needsReload, long lastUpdateServerUnixTime, AuthenticationInfo subject) { final String CRON_TYPE_NOTEBOOK_KEYWORD = "cron"; if (needsReload) { try { reloadAllNotes(subject); } catch (IOException e) { logger.error("Fail to reload notes from repository"); } } List<Note> notes = getAllNotes(); List<Map<String, Object>> notesInfo = new LinkedList<>(); for (Note note : notes) { boolean isNotebookRunning = false; boolean isUpdateNotebook = false; long lastRunningUnixTime = 0; Map<String, Object> info = new HashMap<>(); // set notebook ID info.put("notebookId", note.getId()); // set notebook Name String notebookName = note.getName(); if (notebookName != null && !notebookName.equals("")) { info.put("notebookName", note.getName()); } else { info.put("notebookName", "Note " + note.getId()); } // set notebook type ( cron or normal ) if (note.getConfig().containsKey(CRON_TYPE_NOTEBOOK_KEYWORD) && !note.getConfig().get(CRON_TYPE_NOTEBOOK_KEYWORD).equals("")) { info.put("notebookType", "cron"); } else { info.put("notebookType", "normal"); } // set paragraphs List<Map<String, Object>> paragraphsInfo = new LinkedList<>(); for (Paragraph paragraph : note.getParagraphs()) { // check paragraph's status. if (paragraph.getStatus().isRunning()) { isNotebookRunning = true; isUpdateNotebook = true; } // get data for the job manager. Map<String, Object> paragraphItem = getParagraphForJobManagerItem(paragraph); lastRunningUnixTime = getUnixTimeLastRunParagraph(paragraph); // is update notebook for last server update time. if (lastRunningUnixTime > lastUpdateServerUnixTime) { isUpdateNotebook = true; } paragraphsInfo.add(paragraphItem); } // set interpreter bind type String interpreterGroupName = null; if (replFactory.getInterpreterSettings(note.getId()) != null && replFactory.getInterpreterSettings(note.getId()).size() >= 1) { interpreterGroupName = replFactory.getInterpreterSettings(note.getId()).get(0).getName(); } // not update and not running -> pass if (!isUpdateNotebook && !isNotebookRunning) { continue; } // notebook json object root information. info.put("interpreter", interpreterGroupName); info.put("isRunningJob", isNotebookRunning); info.put("unixTimeLastRun", lastRunningUnixTime); info.put("paragraphs", paragraphsInfo); notesInfo.add(info); } return notesInfo; }