Adding format easier to parse for OSX app.

Change-Id: Ibbf7f9ff7453b4e879da9c8c9215d8bb429a524b
diff --git a/utils/warden/src/main/java/org/onlab/warden/WardenServlet.java b/utils/warden/src/main/java/org/onlab/warden/WardenServlet.java
index 74537a6..27e7ec1 100644
--- a/utils/warden/src/main/java/org/onlab/warden/WardenServlet.java
+++ b/utils/warden/src/main/java/org/onlab/warden/WardenServlet.java
@@ -26,7 +26,9 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 import static com.google.common.base.Strings.isNullOrEmpty;
 
@@ -37,27 +39,22 @@
 
     static Warden warden;
 
+    private SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
             throws ServletException, IOException {
         resp.setContentType("text/plain; charset=UTF-8");
-        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
         try (PrintWriter out = resp.getWriter()) {
-            for (String cellName : warden.getCells()) {
-                Reservation reservation = warden.currentCellReservation(cellName);
-                if (reservation != null) {
-                    long expiration = reservation.time + reservation.duration * 60_000;
-                    long remaining = (expiration - System.currentTimeMillis()) / 60_000;
-                    out.println(String.format("%-14s\t%-10s\t%s\t%s\t%s mins (%s remaining)",
-                                              cellName + "-" + reservation.cellSpec,
-                                              reservation.userName,
-                                              fmt.format(new Date(reservation.time)),
-                                              fmt.format(new Date(expiration)),
-                                              reservation.duration, remaining));
+            if (req.getPathInfo().endsWith("data")) {
+                String userName = req.getParameter("user");
+                if (userName != null) {
+                    printUserInfo(out, userName);
                 } else {
-                    out.println(String.format("%-10s\t%-10s", cellName, "available"));
+                    printAvailability(out);
                 }
+            } else {
+                printAvailabilityText(out);
             }
         } catch (Exception e) {
             resp.setStatus(Response.SC_INTERNAL_SERVER_ERROR);
@@ -65,6 +62,52 @@
         }
     }
 
+    private void printUserInfo(PrintWriter out, String userName) {
+        Reservation reservation = warden.currentUserReservation(userName);
+        out.println(getCellStatus(null, reservation));
+    }
+
+    private void printAvailability(PrintWriter out) {
+        List<String> list = new ArrayList<>(warden.getCells());
+        list.sort(String::compareTo);
+        for (String cellName : list) {
+            Reservation reservation = warden.currentCellReservation(cellName);
+            out.println(getCellStatus(cellName, reservation));
+        }
+    }
+
+    private String getCellStatus(String cellName, Reservation reservation) {
+        if (reservation != null) {
+            long expiration = reservation.time + reservation.duration * 60_000;
+            long remaining = (expiration - System.currentTimeMillis()) / 60_000;
+            return String.format("%s,%s,%s,%s", reservation.cellName,
+                    reservation.cellSpec, reservation.userName, remaining);
+        } else if (cellName != null) {
+            return String.format("%s", cellName);
+        }
+        return null;
+    }
+
+    private void printAvailabilityText(PrintWriter out) {
+        List<String> list = new ArrayList<>(warden.getCells());
+        list.sort(String::compareTo);
+        for (String cellName : list) {
+            Reservation reservation = warden.currentCellReservation(cellName);
+            if (reservation != null) {
+                long expiration = reservation.time + reservation.duration * 60_000;
+                long remaining = (expiration - System.currentTimeMillis()) / 60_000;
+                out.println(String.format("%-14s\t%-10s\t%s\t%s\t%s mins (%s remaining)",
+                                          cellName + "-" + reservation.cellSpec,
+                                          reservation.userName,
+                                          fmt.format(new Date(reservation.time)),
+                                          fmt.format(new Date(expiration)),
+                                          reservation.duration, remaining));
+            } else {
+                out.println(String.format("%-10s\t%-10s", cellName, "available"));
+            }
+        }
+    }
+
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
             throws ServletException, IOException {