azkaban-aplcache
Changes
src/java/azkaban/project/Project.java 16(+15 -1)
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);
src/java/azkaban/project/Project.java 16(+15 -1)
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>