Working upload of photos (individual and zip)
[photos] / src / main / java / org / wamblee / photos / wicket / HomePage.java
index 26331e6fec69d83494ca993d8b1aafd61a8c3ba5..4a34bc0da750792de94ece9fb53d7a0605f90e0d 100644 (file)
 package org.wamblee.photos.wicket;
 
 import java.util.List;
-
+import java.util.logging.Logger;
 import javax.inject.Inject;
 
 import org.apache.wicket.PageParameters;
-import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
 import org.wamblee.photos.model.Album;
+import org.wamblee.photos.model.Photo;
 import org.wamblee.photos.model.PhotoEntry;
 import org.wamblee.photos.model.plumbing.AllPhotos;
 import org.wamblee.photos.model.plumbing.AuthorizedPhotos;
@@ -33,21 +34,44 @@ import org.wamblee.security.authentication.UserAdministration;
  */
 public class HomePage extends BasePage {
 
+    private static final Logger LOGGER = Logger.getLogger(HomePage.class.getName());
+
     private static final long serialVersionUID = 1L;
 
     @Inject
-    private User user;
+    private transient User user;
 
     @Inject
-    private UserAdministration userAdmin;
+    private transient UserAdministration userAdmin;
+
+    // TODO the state should be stored as a path.
 
     @Inject
     @AllPhotos
-    private Album album;
+    private transient Album album;
 
     @Inject
     @AuthorizedPhotos
-    private Album authorized;
+    private transient Album authorized;
+
+    private class SerializableEntryLink extends Link {
+
+        private String path;
+
+        public SerializableEntryLink(String aId, String aPath) {
+            super(aId);
+            path = aPath;
+        }
+
+        @Override
+        public void onClick() {
+            PageParameters pars = new PageParameters();
+            pars.put("path", path);
+            setResponsePage(HomePage.class, pars);
+        }
+    }
+
+    private String path;
 
     /**
      * Constructor that is invoked when page is invoked without a session.
@@ -56,7 +80,12 @@ public class HomePage extends BasePage {
      */
     public HomePage(final PageParameters parameters) throws Exception {
         super();
-        add(new Label("message", "Hello world!"));
+
+        path = parameters.getString("path", "/");
+        if (!path.startsWith("/")) {
+            info("Invalid album '" + path + "', showing root album instead");
+            path = "/";
+        }
 
         System.out.println("Currently logged in user: " + user);
 
@@ -77,5 +106,13 @@ public class HomePage extends BasePage {
             PhotoEntry entry = authorized.getEntry(i);
             System.out.println("Entry " + i + " " + entry.getId() + " " + entry.getPath());
         }
+
+        PhotoEntry current = authorized.getEntry(path);
+
+        if (current instanceof Photo) {
+            add(new PhotoPanel("content", parameters));
+        } else {
+            add(new AlbumPanel("content", parameters));
+        }
     }
-}
+}
\ No newline at end of file