Details
diff --git a/src/java/azkaban/project/FileProjectManager.java b/src/java/azkaban/project/FileProjectManager.java
index e7583cc..b26b3a1 100644
--- a/src/java/azkaban/project/FileProjectManager.java
+++ b/src/java/azkaban/project/FileProjectManager.java
@@ -133,6 +133,7 @@ public class FileProjectManager implements ProjectManager {
project.setDescription(description);
project.setCreateTimestamp(time);
project.setLastModifiedTimestamp(time);
+ project.setLastModifiedUser(creator.getUserId());
logger.info("Trying to create " + project.getName() + " by user " + creator.getUserId());
try {
@@ -142,7 +143,7 @@ public class FileProjectManager implements ProjectManager {
"Project directory " + projectName +
" cannot be created in " + projectDirectory, e);
}
-
+ projects.put(projectName, project);
return project;
}
diff --git a/src/java/azkaban/webapp/AzkabanWebServer.java b/src/java/azkaban/webapp/AzkabanWebServer.java
index b37785c..599c376 100644
--- a/src/java/azkaban/webapp/AzkabanWebServer.java
+++ b/src/java/azkaban/webapp/AzkabanWebServer.java
@@ -226,8 +226,6 @@ public class AzkabanWebServer {
engine.setProperty("resource.manager.logwhenfound", false);
engine.setProperty("input.encoding", "UTF-8");
engine.setProperty("output.encoding", "UTF-8");
- engine.setProperty("directive.foreach.counter.name", "idx");
- engine.setProperty("directive.foreach.counter.initial.value", 0);
engine.setProperty("directive.set.null.allowed", true);
engine.setProperty("resource.manager.logwhenfound", false);
engine.setProperty("velocimacro.permissions.allow.inline", true);
diff --git a/src/java/azkaban/webapp/servlet/IndexServlet.java b/src/java/azkaban/webapp/servlet/IndexServlet.java
index a460782..0e3a676 100644
--- a/src/java/azkaban/webapp/servlet/IndexServlet.java
+++ b/src/java/azkaban/webapp/servlet/IndexServlet.java
@@ -17,29 +17,36 @@
package azkaban.webapp.servlet;
import java.io.IOException;
+import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.log4j.Logger;
+//import org.apache.log4j.Logger;
+import azkaban.project.Project;
import azkaban.project.ProjectManager;
-import azkaban.project.ProjectManagerException;
+import azkaban.user.User;
import azkaban.webapp.session.Session;
/**
* The main page
*/
public class IndexServlet extends LoginAbstractAzkabanServlet {
- private static final Logger logger = Logger.getLogger(IndexServlet.class.getName());
+ //private static final Logger logger = Logger.getLogger(IndexServlet.class.getName());
private static final long serialVersionUID = -1;
@Override
protected void handleGet(HttpServletRequest req, HttpServletResponse resp, Session session) throws ServletException,
IOException {
+ User user = session.getUser();
+
+ ProjectManager manager = this.getApplication().getProjectManager();
+ List<Project> projects = manager.getProjects(user);
Page page = newPage(req, resp, session, "azkaban/webapp/servlet/velocity/index.vm");
+ page.add("projects", projects);
page.render();
}
@@ -49,13 +56,7 @@ public class IndexServlet extends LoginAbstractAzkabanServlet {
if(hasParam(req, "action")) {
String action = getParam(req, "action");
if (action.equals("create")) {
- String project = getParam(req, "project");
- String description = getParam(req, "description");
- ProjectManager manager = this.getApplication().getProjectManager();
- try {
- manager.createProjects(project, description, session.getUser());
- } catch (ProjectManagerException e) {
- }
+
}
}
else {
diff --git a/src/java/azkaban/webapp/servlet/Page.java b/src/java/azkaban/webapp/servlet/Page.java
index 27142df..3f0029a 100644
--- a/src/java/azkaban/webapp/servlet/Page.java
+++ b/src/java/azkaban/webapp/servlet/Page.java
@@ -36,6 +36,7 @@ public class Page {
private final VelocityContext context;
private final String template;
private String mimeType = DEFAULT_MIME_TYPE;
+ private VelocityUtils utils = new VelocityUtils();
/**
* Creates a page and sets up the velocity engine to render
@@ -54,7 +55,7 @@ public class Page {
this.engine = Utils.nonNull(engine);
this.template = Utils.nonNull(template);
this.context = new VelocityContext();
- //this.context.put("utils", guiUtils);
+ this.context.put("utils", utils);
this.context.put("session", request.getSession(true));
this.context.put("context", request.getContextPath());
}
diff --git a/src/java/azkaban/webapp/servlet/velocity/index.vm b/src/java/azkaban/webapp/servlet/velocity/index.vm
index c6b50c0..1d4c83c 100644
--- a/src/java/azkaban/webapp/servlet/velocity/index.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/index.vm
@@ -46,6 +46,23 @@
</tr>
</thead>
<tbody>
+ #if($projects)
+ #foreach($project in $projects)
+ <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>
+ </tr>
+ #end
+ #else
+ <tr><td class="last">No viewable projects found.</td></tr>
+ #end
</tbody>
</table>
</div>
diff --git a/src/java/azkaban/webapp/servlet/VelocityUtils.java b/src/java/azkaban/webapp/servlet/VelocityUtils.java
new file mode 100644
index 0000000..5430988
--- /dev/null
+++ b/src/java/azkaban/webapp/servlet/VelocityUtils.java
@@ -0,0 +1,25 @@
+package azkaban.webapp.servlet;
+
+import org.joda.time.DateTime;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+
+public class VelocityUtils {
+ public String formatDate(long timestamp) {
+ return formatDate(timestamp, "yyyy-MM-dd HH:mm:ss");
+ }
+
+ public String formatDate(DateTime date) {
+ return formatDate(date, "yyyy-MM-dd HH:mm:ss");
+ }
+
+ public String formatDate(long timestamp, String format) {
+ DateTimeFormatter f = DateTimeFormat.forPattern(format);
+ return f.print(timestamp);
+ }
+
+ public String formatDate(DateTime date, String format) {
+ DateTimeFormatter f = DateTimeFormat.forPattern(format);
+ return f.print(date);
+ }
+}
\ No newline at end of file