azkaban-aplcache

Details

diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ScheduleServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ScheduleServlet.java
index 18aa3d0..529e253 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ScheduleServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ScheduleServlet.java
@@ -103,6 +103,8 @@ public class ScheduleServlet extends LoginAbstractAzkabanServlet {
       ajaxSlaInfo(req, ret, session.getUser());
     } else if (ajaxName.equals("setSla")) {
       ajaxSetSla(req, ret, session.getUser());
+    } else if (ajaxName.equals("loadFlow")) {
+      ajaxLoadFlows(req, ret, session.getUser());
     } else if (ajaxName.equals("scheduleFlow")) {
       ajaxScheduleFlow(req, ret, session.getUser());
     } else if (ajaxName.equals("scheduleCronFlow")) {
@@ -116,6 +118,52 @@ public class ScheduleServlet extends LoginAbstractAzkabanServlet {
     }
   }
 
+  private void ajaxLoadFlows(final HttpServletRequest req,
+                             final HashMap<String, Object> ret, final User user) throws ServletException {
+    final List<Schedule> schedules;
+    try {
+      schedules = this.scheduleManager.getSchedules();
+    } catch (final ScheduleManagerException e) {
+      throw new ServletException(e);
+    }
+    // See if anything is scheduled
+    if (schedules.size() <= 0) {
+      return;
+    }
+
+    final List<HashMap<String, Object>> output =
+            new ArrayList<>();
+    ret.put("items", output);
+
+    for (final Schedule schedule : schedules) {
+      try {
+        writeScheduleData(output, schedule);
+      } catch (final ScheduleManagerException e) {
+        throw new ServletException(e);
+      }
+    }
+  }
+
+  private void writeScheduleData(final List<HashMap<String, Object>> output,
+                                 final Schedule schedule) throws ScheduleManagerException {
+
+    final HashMap<String, Object> data = new HashMap<>();
+    data.put("scheduleid", schedule.getScheduleId());
+    data.put("flowname", schedule.getFlowName());
+    data.put("projectname", schedule.getProjectName());
+    data.put("time", schedule.getFirstSchedTime());
+    data.put("cron", schedule.getCronExpression());
+
+    final DateTime time = DateTime.now();
+    long period = 0;
+    if (schedule.getPeriod() != null) {
+      period = time.plus(schedule.getPeriod()).getMillis() - time.getMillis();
+    }
+    data.put("period", period);
+    data.put("history", false);
+    output.add(data);
+  }
+
   private void ajaxSetSla(final HttpServletRequest req, final HashMap<String, Object> ret,
       final User user) {
     try {