azkaban-developers

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