azkaban-aplcache

Details

diff --git a/src/java/azkaban/project/FileProjectManager.java b/src/java/azkaban/project/FileProjectManager.java
index add451c..14e3c50 100644
--- a/src/java/azkaban/project/FileProjectManager.java
+++ b/src/java/azkaban/project/FileProjectManager.java
@@ -91,7 +91,7 @@ public class FileProjectManager implements ProjectManager {
     				String source = project.getSource();
     				if (source == null) {
     					logger.info(project.getName() + ": No flows uploaded");
-    					return;
+    					continue;
     				}
     				
     				File projectDir = new File(dir, source);
diff --git a/src/java/azkaban/project/Project.java b/src/java/azkaban/project/Project.java
index 732b26f..1475abc 100644
--- a/src/java/azkaban/project/Project.java
+++ b/src/java/azkaban/project/Project.java
@@ -1,6 +1,8 @@
 package azkaban.project;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -32,7 +34,19 @@ public class Project {
 	public void setFlows(Map<String, Flow> flows) {
 		this.flows = flows;
 	}
-	
+
+	@SuppressWarnings("unused")
+	public List<Flow> getFlows() {
+		List<Flow> retFlow = null;
+		if (flows != null) {
+			retFlow = new ArrayList<Flow>(flows.values());
+		}
+		else {
+			retFlow = new ArrayList<Flow>();
+		}
+		return retFlow;
+	}
+
 	public boolean hasPermission(User user, Type type) {
 		Permission perm = userToPermission.get(user.getUserId());
 		if (perm == null) {
diff --git a/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java b/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java
index 84fbc15..f4d36c4 100644
--- a/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java
+++ b/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java
@@ -7,7 +7,10 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.io.Writer;
 import java.security.AccessControlException;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.zip.ZipFile;
 
@@ -23,6 +26,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.log4j.Logger;
 
+import azkaban.flow.Flow;
 import azkaban.project.Project;
 import azkaban.project.ProjectManager;
 import azkaban.project.ProjectManagerException;
@@ -40,6 +44,12 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
     private ProjectManager manager;
     private MultipartParser multipartParser;
     private File tempDir;
+    private static Comparator<Flow> FLOW_ID_COMPARATOR = new Comparator<Flow>() {
+		@Override
+		public int compare(Flow f1, Flow f2) {
+			return f1.getId().compareTo(f2.getId());
+		}
+    };
 
     @Override
     public void init(ServletConfig config) throws ServletException {
@@ -67,15 +77,17 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
         			page.add("project", project);
         			page.add("admins", Utils.flattenToString(project.getUsersWithPermission(Type.ADMIN), ","));
         			page.add("permissions", project.getUserPermission(user));
-        			
-        			
+
+        			List<Flow> flows = project.getFlows();
+        			if (!flows.isEmpty()) {
+	        			Collections.sort(flows, FLOW_ID_COMPARATOR);
+	        			page.add("flows", flows);
+        			}
         		}
-        		
         	}
         	catch (AccessControlException e) {
         		page.add("errorMsg", e.getMessage());
         	}
-
         }
         else {
     		page.add("errorMsg", "No project set.");
diff --git a/src/java/azkaban/webapp/servlet/velocity/projectmanager.vm b/src/java/azkaban/webapp/servlet/velocity/projectmanager.vm
index 9ea0797..63967fd 100644
--- a/src/java/azkaban/webapp/servlet/velocity/projectmanager.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/projectmanager.vm
@@ -59,36 +59,25 @@
 					</table>
 				</div>
 
-			<div id="project-tabs">
+			<div id="flow-tabs">
 				<table id="all-jobs" class="all-jobs job-table">
 					<thead>
 						<tr>
-							<th class="tb-name">Name</th>
-							<th class="tb-up-date">Modified Date</th>
-							<th class="tb-owner">Modified By</th>
-							<th class="tb-action last">Actions</th>
+							<th class="tb-name">Flow Name</th>
 						</tr>
 					</thead>
 					<tbody>
-#if($projects)
-#foreach($project in $projects)
+#if($flows)
+#foreach($flow in $flows)
 						<tr class="row">
-							<td class="tb-name">
-								<div class="jobfolder expand" onclick="expandFlow(this)" id="$folderName">
-									<span class="state-icon"></span>
-									<a href="${context}/manager?project=${project.name}">$project.name</a>
-								</div>
-							</td>
-							<td class="tb-up-date">$utils.formatDate($project.lastModifiedTimestamp)</td>
-							<td class="tb-owner">$project.lastModifiedUser</td>
-							<td class="tb-action last"></td>
+							<td class="tb-name">${flow.id}</td>
 						</tr>
 #end
 #else
-						<tr><td class="last">No viewable projects found.</td></tr>
+						<tr><td class="last">No flows uploaded to this project.</td></tr>
 #end
 					</tbody>
-				</table>
+				</table
 			</div>
 #end
 		</div>