diff --git a/Zallery.iml b/Zallery.iml
index 70b745e..d6e869e 100755
--- a/Zallery.iml
+++ b/Zallery.iml
@@ -76,5 +76,6 @@
+
\ No newline at end of file
diff --git a/src/zall/Zallery.java b/src/zall/Zallery.java
index 7f8c1fb..c378436 100755
--- a/src/zall/Zallery.java
+++ b/src/zall/Zallery.java
@@ -24,9 +24,8 @@ import zall.bean.Media;
import zall.bean.User;
import zall.manager.AuthenticationManager;
import zall.util.ZalleryEmail;
-import zutil.net.smtp.Email;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
diff --git a/src/zall/ZalleryServlet.java b/src/zall/ZalleryServlet.java
new file mode 100644
index 0000000..75cad08
--- /dev/null
+++ b/src/zall/ZalleryServlet.java
@@ -0,0 +1,66 @@
+package zall;
+
+import zutil.db.DBConnection;
+import zutil.log.LogUtil;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.http.*;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.logging.Logger;
+
+public abstract class ZalleryServlet extends HttpServlet {
+ private static Logger logger = LogUtil.getLogger();
+
+
+ public final void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
+ DBConnection db = null;
+ try {
+ include("header.jsp", request, response);
+ doGet(request, response, db = Zallery.getDB());
+ include("footer.jsp", request, response);
+ } catch (ServletException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ServletException(e);
+ } finally {
+ if (db != null) db.close();
+ }
+ }
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
+ }
+
+ public final void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException {
+ DBConnection db = null;
+ try {
+ include("header.jsp", request, response);
+ doPost(request, response, db = Zallery.getDB());
+ include("footer.jsp", request, response);
+ } catch (ServletException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ServletException(e);
+ } finally {
+ if (db != null) db.close();
+ }
+ }
+
+ public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
+ doGet(request, response, db);
+ }
+
+
+ public void include(String url, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/" + url);
+ if (dispatcher != null)
+ dispatcher.include(request, response);
+ }
+
+ public void forward(String url, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/" + url);
+ if (dispatcher != null)
+ dispatcher.forward(request, response);
+ }
+}
diff --git a/src/zall/action/LoginAction.java b/src/zall/action/LoginAction.java
index 37c03e5..d67af23 100644
--- a/src/zall/action/LoginAction.java
+++ b/src/zall/action/LoginAction.java
@@ -9,18 +9,19 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.bean.User;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
public class LoginAction extends ZalleryAction{
-
- private static final Logger logger = LogUtil.getLogger();
+
+ private static final Logger logger = LogUtil.getLogger();
+
public LoginAction() {
super("login");
}
-
+
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
diff --git a/src/zall/action/RegisterAction.java b/src/zall/action/RegisterAction.java
index b95c963..c372a71 100755
--- a/src/zall/action/RegisterAction.java
+++ b/src/zall/action/RegisterAction.java
@@ -11,8 +11,8 @@ import javax.servlet.http.HttpSession;
import zall.bean.User;
import zall.util.ZalleryEmail;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
diff --git a/src/zall/action/ZalleryAction.java b/src/zall/action/ZalleryAction.java
index d8c1887..c37f2a9 100644
--- a/src/zall/action/ZalleryAction.java
+++ b/src/zall/action/ZalleryAction.java
@@ -7,7 +7,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.bean.User;
-import zall.util.msg.UserMessage;
+import zall.util.UserMessage;
import zutil.db.DBConnection;
public abstract class ZalleryAction {
diff --git a/src/zall/action/media/CommentAction.java b/src/zall/action/media/CommentAction.java
index 61e4652..c82bff8 100644
--- a/src/zall/action/media/CommentAction.java
+++ b/src/zall/action/media/CommentAction.java
@@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.Comment;
import zall.bean.Media;
import zall.bean.User;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
public class CommentAction extends ZalleryAction{
diff --git a/src/zall/action/media/CreateFolderAction.java b/src/zall/action/media/CreateFolderAction.java
index 0d34045..ffa6fcb 100644
--- a/src/zall/action/media/CreateFolderAction.java
+++ b/src/zall/action/media/CreateFolderAction.java
@@ -12,8 +12,8 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.Folder;
import zall.bean.User;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
diff --git a/src/zall/action/media/ModifyMediaAction.java b/src/zall/action/media/ModifyMediaAction.java
index 9fc13b6..09dbf45 100755
--- a/src/zall/action/media/ModifyMediaAction.java
+++ b/src/zall/action/media/ModifyMediaAction.java
@@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.Media;
import zall.bean.User;
import zall.manager.AuthenticationManager;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
public class ModifyMediaAction extends ZalleryAction{
diff --git a/src/zall/action/media/RemoveFolderAction.java b/src/zall/action/media/RemoveFolderAction.java
index 085c11d..696029e 100755
--- a/src/zall/action/media/RemoveFolderAction.java
+++ b/src/zall/action/media/RemoveFolderAction.java
@@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.Folder;
import zall.bean.User;
import zall.manager.AuthenticationManager;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
public class RemoveFolderAction extends ZalleryAction{
diff --git a/src/zall/action/media/RemoveMediaAction.java b/src/zall/action/media/RemoveMediaAction.java
index 3bc39fb..a40d6a1 100755
--- a/src/zall/action/media/RemoveMediaAction.java
+++ b/src/zall/action/media/RemoveMediaAction.java
@@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.Media;
import zall.bean.User;
import zall.manager.AuthenticationManager;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
public class RemoveMediaAction extends ZalleryAction{
diff --git a/src/zall/action/media/TogglePrivateAction.java b/src/zall/action/media/TogglePrivateAction.java
index 73f1807..dfb6b97 100755
--- a/src/zall/action/media/TogglePrivateAction.java
+++ b/src/zall/action/media/TogglePrivateAction.java
@@ -11,12 +11,11 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.Folder;
import zall.bean.User;
-import zall.manager.AuthenticationManager;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
-public class TogglePrivateAction extends ZalleryAction{
+public class TogglePrivateAction extends ZalleryAction {
public TogglePrivateAction() {
super("mkprivate", true);
@@ -26,31 +25,14 @@ public class TogglePrivateAction extends ZalleryAction{
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
- // Toggle folder private
- if( request.getParameter("id") == null){
- if(out != null) out.println("{ \"error\": \"Missing parameters!\"}");
- else msgs.add(MessageType.ERROR, "Missing parameters!");
- return;
- }
- long id = Long.parseLong(request.getParameter("id"));
- Folder folder = Folder.load(db, id);
-
- if( folder != null ){
- if( AuthenticationManager.canEdit(user, folder) ){
- folder.setPrivate( !folder.isPrivate() );
- folder.save(db);
- if(out != null) out.println("{}");
- else{
- if(folder.isPrivate()) msgs.add(MessageType.INFO, "Folder is now private (not visible to other users).");
- else msgs.add(MessageType.INFO, "Folder is now public (can be viewed by other users).");
- }
- }
- else if(out != null) out.println("{ \"error\": \"You are not authorize to edit this folder!\"}");
- else msgs.add(MessageType.ERROR, "You are not authorize to edit this folder!");
- }
- else if(out != null) out.println("{ \"error\": \"No such folder!\"}");
- else msgs.add(MessageType.ERROR, "The folder does not exist!");
-
- }
+ // Toggle folder private
+ if (request.getParameter("id") == null) {
+ if (out != null) out.println("{ \"error\": \"Missing parameters!\"}");
+ else msgs.add(MessageType.ERROR, "Missing parameters!");
+ return;
+ }
+ long id = Long.parseLong(request.getParameter("id"));
+ Folder folder = Folder.load(db, id);
+ }
}
diff --git a/src/zall/action/user/ModifyUserAction.java b/src/zall/action/user/ModifyUserAction.java
index d43619b..db27bd0 100755
--- a/src/zall/action/user/ModifyUserAction.java
+++ b/src/zall/action/user/ModifyUserAction.java
@@ -8,14 +8,11 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import zall.Zallery;
import zall.action.ZalleryAction;
import zall.bean.User;
import zall.util.ZalleryEmail;
-import zutil.net.smtp.Email;
-import zutil.net.smtp.Email.ContentType;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
public class ModifyUserAction extends ZalleryAction{
diff --git a/src/zall/action/user/ModifyUserStatusAction.java b/src/zall/action/user/ModifyUserStatusAction.java
index 094b719..c7a91f5 100755
--- a/src/zall/action/user/ModifyUserStatusAction.java
+++ b/src/zall/action/user/ModifyUserStatusAction.java
@@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.User;
import zall.manager.AuthenticationManager;
import zall.util.ZalleryEmail;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
public class ModifyUserStatusAction extends ZalleryAction{
diff --git a/src/zall/action/user/RemoveUserAction.java b/src/zall/action/user/RemoveUserAction.java
index afc3ca4..96d5b6d 100644
--- a/src/zall/action/user/RemoveUserAction.java
+++ b/src/zall/action/user/RemoveUserAction.java
@@ -10,8 +10,8 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.User;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
public class RemoveUserAction extends ZalleryAction{
diff --git a/src/zall/action/user/SendVerificationEmailAction.java b/src/zall/action/user/SendVerificationEmailAction.java
index fe70a4e..5a5b6b8 100755
--- a/src/zall/action/user/SendVerificationEmailAction.java
+++ b/src/zall/action/user/SendVerificationEmailAction.java
@@ -12,8 +12,8 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.User;
import zall.util.ZalleryEmail;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
diff --git a/src/zall/action/user/VerifyEmailAction.java b/src/zall/action/user/VerifyEmailAction.java
index 990fa02..88d8d06 100755
--- a/src/zall/action/user/VerifyEmailAction.java
+++ b/src/zall/action/user/VerifyEmailAction.java
@@ -11,8 +11,8 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.User;
import zall.util.ZalleryEmail;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
+import zall.util.UserMessage;
+import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection;
public class VerifyEmailAction extends ZalleryAction{
diff --git a/src/zall/manager/AuthenticationManager.java b/src/zall/manager/AuthenticationManager.java
index 1e3b152..ad9bcff 100755
--- a/src/zall/manager/AuthenticationManager.java
+++ b/src/zall/manager/AuthenticationManager.java
@@ -5,7 +5,6 @@ import zall.ZalleryConstant;
import zall.bean.Folder;
import zall.bean.Media;
import zall.bean.User;
-import zall.util.msg.UserMessage;
import zutil.Hasher;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
diff --git a/src/zall/page/GalleryServlet.java b/src/zall/page/GalleryServlet.java
new file mode 100755
index 0000000..46098d8
--- /dev/null
+++ b/src/zall/page/GalleryServlet.java
@@ -0,0 +1,83 @@
+package zall.page;
+
+import zall.ZalleryServlet;
+import zall.bean.Folder;
+import zall.bean.Media;
+import zall.util.UserMessage;
+import zutil.db.DBConnection;
+import zutil.log.LogUtil;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.logging.Logger;
+
+@WebServlet("/gallery")
+public class GalleryServlet extends ZalleryServlet {
+ private static Logger logger = LogUtil.getLogger();
+
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException, ServletException {
+ Folder folder;
+ if (request.getParameter("folder") != null && !request.getParameter("folder").equalsIgnoreCase("null"))
+ folder = Folder.load(db, Long.parseLong(request.getParameter("folder")));
+ else {
+ folder = Folder.loadRoot(db, user);
+ // Setup new root folder
+ if (folder == null) {
+ folder = Folder.genRoot();
+ folder.save(db);
+ }
+ }
+ List list = Media.load(db, folder);
+ List subFolders = Folder.loadSubFolders(db, folder, user);
+
+ //session.setAttribute("user", user);
+ request.setAttribute("folder", folder);
+ request.setAttribute("subfolders", subFolders);
+ request.setAttribute("media", list);
+
+ include("header.jsp", request, response);
+ include("gallery.jsp", request, response);
+ include("footer.jsp", request, response);
+ }
+
+ public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException, ServletException {
+ UserMessage msgs = UserMessage.getUserMessage(request.getSession());
+ long id = Long.parseLong(request.getParameter("id"));
+
+ if (request.getParameter("id") == null) {
+ msgs.add(UserMessage.MessageType.ERROR, "Missing parameters!");
+ return;
+ }
+
+ long id = Long.parseLong(request.getParameter("id"));
+ Folder folder = Folder.load(db, id);
+
+ switch (request.getParameter("action")) {
+
+ // -----------------------------------------
+ // Toggle private mode
+ // -----------------------------------------
+
+ case "private":
+ if (folder != null) {
+ if (user.canEdit(folder)) {
+ folder.setPrivate(!folder.isPrivate());
+ folder.save(db);
+ if (folder.isPrivate())
+ msgs.add(UserMessage.MessageType.INFO, "Folder is now private (not visible to other users).");
+ else
+ msgs.add(UserMessage.MessageType.INFO, "Folder is now public (can be viewed by other users).");
+ } else
+ msgs.add(UserMessage.MessageType.ERROR, "You are not authorize to edit this folder!");
+ } else
+ msgs.add(UserMessage.MessageType.ERROR, "The folder does not exist!");
+ break;
+ }
+ }
+}
diff --git a/src/zall/page/LoginServlet.java b/src/zall/page/LoginServlet.java
new file mode 100755
index 0000000..7ea11ae
--- /dev/null
+++ b/src/zall/page/LoginServlet.java
@@ -0,0 +1,48 @@
+package zall.page;
+
+import zall.ZalleryServlet;
+import zall.bean.User;
+import zall.manager.AuthenticationManager;
+import zutil.db.DBConnection;
+import zutil.log.LogUtil;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.logging.Logger;
+
+import static zall.ZalleryConstant.SESSION_KEY_USER;
+
+@WebServlet("/login")
+public class LoginServlet extends ZalleryServlet {
+ private static Logger logger = LogUtil.getLogger();
+
+ private static final String JSP_FILE = "register.jsp";
+
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, IOException {
+ include(JSP_FILE, request, response);
+ }
+
+
+ public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, ServletException, IOException {
+ User user = AuthenticationManager.authenticate(db,
+ request.getParameter("email"),
+ request.getParameter("password"));
+
+ // Successfull login
+ if (user != null) {
+ user.registerOnHost(request, response, db, true );
+ request.getSession().setAttribute(SESSION_KEY_USER, user);
+
+ forward("/", request, response);
+ }
+ // Failed login
+ else {
+ include(JSP_FILE, request, response);
+ }
+ }
+}
diff --git a/src/zall/servlet/LogoutServlet.java b/src/zall/page/LogoutServlet.java
similarity index 70%
rename from src/zall/servlet/LogoutServlet.java
rename to src/zall/page/LogoutServlet.java
index 3fb93bc..86479a9 100755
--- a/src/zall/servlet/LogoutServlet.java
+++ b/src/zall/page/LogoutServlet.java
@@ -1,9 +1,8 @@
-package zall.servlet;
+package zall.page;
-import zall.ZalleryConstant;
+import zall.ZalleryServlet;
import zall.bean.User;
import zall.manager.AuthenticationManager;
-import zall.util.DbHttpServlet;
import zutil.db.DBConnection;
import javax.servlet.annotation.WebServlet;
@@ -18,9 +17,9 @@ import static zall.ZalleryConstant.SESSION_KEY_USER;
*
*/
@WebServlet(urlPatterns = "/logout")
-public class LogoutServlet extends DbHttpServlet {
+public class LogoutServlet extends ZalleryServlet {
- protected void doGet(HttpServletRequest req, HttpServletResponse resp, DBConnection db) throws SQLException, IOException {
+ public void doGet(HttpServletRequest req, HttpServletResponse resp, DBConnection db) throws SQLException, IOException {
User user = (User) req.getSession().getAttribute(SESSION_KEY_USER);
AuthenticationManager.reset(db, user);
diff --git a/src/zall/page/MediaServlet.java b/src/zall/page/MediaServlet.java
new file mode 100755
index 0000000..975f8d1
--- /dev/null
+++ b/src/zall/page/MediaServlet.java
@@ -0,0 +1,93 @@
+package zall.page;
+
+import zall.ZalleryServlet;
+import zall.bean.Comment;
+import zall.bean.Media;
+import zall.util.UserMessage;
+import zutil.db.DBConnection;
+import zutil.log.LogUtil;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+@WebServlet("/media")
+public class MediaServlet extends ZalleryServlet {
+ private static Logger logger = LogUtil.getLogger();
+
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
+ UserMessage msgs = UserMessage.getUserMessage(request.getSession());
+
+ if (request.getParameter("id") == null && request.getParameter("type") == null) {
+ msgs.add(UserMessage.MessageType.ERROR, "Missing parameters!");
+ return;
+ }
+ try {
+ int id = Integer.parseInt(request.getParameter("id"));
+ Media media = Media.load(db, request.getParameter("type"), id);
+
+ request.setAttribute("media", media);
+ } catch (NumberFormatException e) {
+ logger.log(Level.FINE, "", e);
+ }
+
+ include("header.jsp", request, response);
+ include("media.jsp", request, response);
+ include("footer.jsp", request, response);
+ }
+
+ public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException {
+ UserMessage msgs = UserMessage.getUserMessage(request.getSession());
+ long id = Long.parseLong(request.getParameter("id"));
+
+ if (request.getParameter("id") == null || request.getParameter("type") == null) {
+ msgs.add(UserMessage.MessageType.ERROR, "Missing parameters!");
+ return;
+ }
+
+ Media media = Media.load(db, request.getParameter("type"), id);
+
+ switch (request.getParameter("action")) {
+ // -----------------------------------------
+ // Comment
+ // -----------------------------------------
+
+ case "comment":
+ Comment cm = new Comment();
+ cm.setUser(user);
+ cm.setMessage(request.getParameter("msg"));
+ media.addComment(cm);
+ media.save(db);
+
+ msgs.add(UserMessage.MessageType.INFO, "Comment saved.");
+ break;
+
+ // -----------------------------------------
+ // Modify media
+ // -----------------------------------------
+
+ case "modify":
+ if (media != null) {
+ if (user.canEdit(media)) {
+ media.setTitle(request.getParameter("title"));
+ media.setDescription(request.getParameter("description"));
+ media.save(db);
+
+ msgs.add(UserMessage.MessageType.INFO, "Item edited successfully.");
+ } else
+ msgs.add(UserMessage.MessageType.ERROR, "You are not authorize to modify this item!");
+ } else
+ msgs.add(UserMessage.MessageType.ERROR, "The item does not exist!");
+
+ break;
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/zall/page/ProfileServlet.java b/src/zall/page/ProfileServlet.java
new file mode 100755
index 0000000..a305234
--- /dev/null
+++ b/src/zall/page/ProfileServlet.java
@@ -0,0 +1,51 @@
+package zall.page;
+
+import zall.ZalleryServlet;
+import zall.bean.User;
+import zall.util.UserMessage;
+import zutil.db.DBConnection;
+import zutil.log.LogUtil;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.logging.Logger;
+
+@WebServlet("/profile")
+public class ProfileServlet extends ZalleryServlet {
+ private static Logger logger = LogUtil.getLogger();
+
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException{
+ UserMessage msgs = UserMessage.getUserMessage(request.getSession());
+
+ try{
+ if(request.getParameter("id") != null){
+ User profile_user = User.load(db, Long.parseLong( request.getParameter("id") ));
+ if(user.canEdit(profile_user)){
+ request.setAttribute("profile_user", profile_user);
+ } else {
+ msgs.add(UserMessage.MessageType.ERROR, "You do not have permission to edit the user.");
+ }
+ } else {
+ request.setAttribute("profile_user", user);
+ }
+
+ include("header.jsp", request, response);
+ include("profile.jsp", request, response);
+ include("footer.jsp", request, response);
+
+ } catch (Exception e) {
+ logger.severe(e.getMessage());
+ throw new ServletException(e);
+ }
+ }
+
+
+ public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException {
+
+ }
+}
diff --git a/src/zall/page/RegisterServlet.java b/src/zall/page/RegisterServlet.java
new file mode 100755
index 0000000..e96cefa
--- /dev/null
+++ b/src/zall/page/RegisterServlet.java
@@ -0,0 +1,89 @@
+package zall.page;
+
+import zall.ZalleryServlet;
+import zall.bean.User;
+import zall.util.ZalleryEmail;
+import zall.util.UserMessage;
+import zutil.db.DBConnection;
+import zutil.log.LogUtil;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.*;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.Locale;
+import java.util.PropertyResourceBundle;
+import java.util.ResourceBundle;
+import java.util.logging.Logger;
+
+import static zall.ZalleryConstant.LANG_BASENAME;
+
+@WebServlet("/register")
+public class RegisterServlet extends ZalleryServlet {
+ private static Logger logger = LogUtil.getLogger();
+
+ private static final String JSP_FILE = "register.jsp";
+
+ private static final String INPUT_ID_FIRST_NAME = "first-name";
+ private static final String INPUT_ID_LAST_NAME = "last-name";
+ private static final String INPUT_ID_EMAIL = "email";
+ private static final String INPUT_ID_PASSWORD = "password";
+ private static final String INPUT_ID_PASSWORD_REPEATE = "password-re";
+
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, IOException {
+ include(JSP_FILE, request, response);
+ }
+
+
+ public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException, ServletException {
+ UserMessage msgHandler = UserMessage.getUserMessage(request.getSession());
+ ResourceBundle lang = PropertyResourceBundle.getBundle(LANG_BASENAME, Locale.getDefault());
+
+ /*
+ * Check inputs
+ */
+
+ String firstName = (String)request.getAttribute(INPUT_ID_FIRST_NAME);
+ String lastName = (String)request.getAttribute(INPUT_ID_LAST_NAME);
+ String email = (String)request.getAttribute(INPUT_ID_EMAIL);
+ String password = (String)request.getAttribute(INPUT_ID_PASSWORD);
+ String passwordRe = (String)request.getAttribute(INPUT_ID_PASSWORD_REPEATE);
+
+ if (firstName == null)
+ msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.first_name_missing"));
+ if (lastName == null)
+ msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.last_name_missing"));
+ if (email == null)
+ msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.email_missing"));
+ if (password == null)
+ msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.password_missing"));
+ if (passwordRe == null)
+ msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.password_missing"));
+ else if (passwordRe.equals(password))
+ msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.password_not_matching"));
+
+ if(User.load(db, (String)request.getAttribute(INPUT_ID_EMAIL)) != null){
+ msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.email_exsists"));
+ return;
+ }
+
+ /*
+ * Create new user
+ */
+
+ User user = new User();
+ user.setName(firstName + " " + lastName);
+ user.setEmail(email);
+ user.setPassword(password);
+ user.save(db);
+ ZalleryEmail.sendVerificationEmail( user );
+ request.getSession().setAttribute("user", user);
+ logger.info("Registered new user: "+user.getName()+".");
+ msgHandler.add(UserMessage.MessageType.INFO,
+ lang.getString("info.account_created") + lang.getString("info.verification_email_sent"));
+
+ include(JSP_FILE, request, response);
+ }
+}
diff --git a/src/zall/page/SlideshowServlet.java b/src/zall/page/SlideshowServlet.java
new file mode 100755
index 0000000..8b2c68d
--- /dev/null
+++ b/src/zall/page/SlideshowServlet.java
@@ -0,0 +1,35 @@
+package zall.page;
+
+import zall.ZalleryServlet;
+import zall.bean.Image;
+import zutil.db.DBConnection;
+import zutil.log.LogUtil;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.logging.Logger;
+
+@WebServlet("/slideshow")
+public class SlideshowServlet extends ZalleryServlet {
+ private static Logger logger = LogUtil.getLogger();
+
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
+ Image image = Image.load(db, Integer.parseInt(request.getParameter("id")));
+ request.setAttribute("image", image);
+ List list = Image.loadFolder(db, image.getFolder());
+
+ request.setAttribute("image", image);
+ request.setAttribute("images", list);
+
+ include("header.jsp", request, response);
+ include("slideshow.jsp", request, response);
+ include("footer.jsp", request, response);
+ }
+
+}
diff --git a/src/zall/page/UserListServlet.java b/src/zall/page/UserListServlet.java
new file mode 100755
index 0000000..e4d014b
--- /dev/null
+++ b/src/zall/page/UserListServlet.java
@@ -0,0 +1,31 @@
+package zall.page;
+
+import zall.ZalleryServlet;
+import zall.bean.User;
+import zutil.db.DBConnection;
+import zutil.log.LogUtil;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.logging.Logger;
+
+@WebServlet("/register")
+public class UserListServlet extends ZalleryServlet {
+ private static Logger logger = LogUtil.getLogger();
+
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
+ List users = User.load(db);
+ request.setAttribute("users", users);
+
+ include("header.jsp", request, response);
+ include("users.jsp", request, response);
+ include("footer.jsp", request, response);
+
+ }
+}
diff --git a/src/zall/servlet/LoginServlet.java b/src/zall/servlet/LoginServlet.java
deleted file mode 100755
index 8c179cf..0000000
--- a/src/zall/servlet/LoginServlet.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package zall.servlet;
-
-import zall.bean.User;
-import zall.manager.AuthenticationManager;
-import zall.util.DbHttpServlet;
-import zutil.db.DBConnection;
-
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.sql.SQLException;
-
-import static zall.ZalleryConstant.SESSION_KEY_USER;
-
-/**
- *
- */
-@WebServlet(urlPatterns = "/login")
-public class LoginServlet extends DbHttpServlet {
- private static final String JSP_FILE = "login.jsp";
-
-
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- getServletContext().getRequestDispatcher("/" + JSP_FILE).include(req, resp);
- }
-
- protected void doPost(HttpServletRequest req, HttpServletResponse resp, DBConnection db) throws ServletException, IOException, SQLException {
- User user = AuthenticationManager.authenticate(db,
- req.getParameter("email"),
- req.getParameter("password"));
-
-
- // Successfull login
- if (user != null) {
- user.registerOnHost(req, resp, db, true );
- req.getSession().setAttribute(SESSION_KEY_USER, user);
-
- getServletContext().getRequestDispatcher("/").forward(req, resp);
- }
- // Failed login
- else {
- getServletContext().getRequestDispatcher("/" + JSP_FILE).include(req, resp);
- }
- }
-}
diff --git a/src/zall/servlet/RegisterServlet.java b/src/zall/servlet/RegisterServlet.java
deleted file mode 100755
index 4d16c3d..0000000
--- a/src/zall/servlet/RegisterServlet.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package zall.servlet;
-
-import zall.bean.User;
-import zall.util.DbHttpServlet;
-import zall.util.ZalleryEmail;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
-import zutil.db.DBConnection;
-import zutil.log.LogUtil;
-
-import javax.servlet.ServletException;
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.sql.SQLException;
-import java.util.Locale;
-import java.util.PropertyResourceBundle;
-import java.util.ResourceBundle;
-import java.util.logging.Logger;
-
-import static zall.ZalleryConstant.*;
-
-/**
- *
- */
-@WebServlet(urlPatterns = "/register")
-public class RegisterServlet extends DbHttpServlet {
- private static final Logger logger = LogUtil.getLogger();
-
- private static final String JSP_FILE = "register.jsp";
-
- private static final String INPUT_ID_FIRST_NAME = "first-name";
- private static final String INPUT_ID_LAST_NAME = "last-name";
- private static final String INPUT_ID_EMAIL = "email";
- private static final String INPUT_ID_PASSWORD = "password";
- private static final String INPUT_ID_PASSWORD_REPEATE = "password-re";
-
-
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- getServletContext().getRequestDispatcher("/"+JSP_FILE).include(req, resp);
- }
-
- protected void doGet(HttpServletRequest req, HttpServletResponse resp, DBConnection db) throws ServletException, IOException, SQLException {
- UserMessage msgHandler = UserMessage.getUserMessage(req.getSession());
- ResourceBundle lang = PropertyResourceBundle.getBundle(LANG_BASENAME, Locale.getDefault());
-
- /*
- * Check inputs
- */
-
- String firstName = (String)req.getAttribute(INPUT_ID_FIRST_NAME);
- String lastName = (String)req.getAttribute(INPUT_ID_LAST_NAME);
- String email = (String)req.getAttribute(INPUT_ID_EMAIL);
- String password = (String)req.getAttribute(INPUT_ID_PASSWORD);
- String passwordRe = (String)req.getAttribute(INPUT_ID_PASSWORD_REPEATE);
-
- if (firstName == null)
- msgHandler.add(MessageType.ERROR, lang.getString("error.first_name_missing"));
- if (lastName == null)
- msgHandler.add(MessageType.ERROR, lang.getString("error.last_name_missing"));
- if (email == null)
- msgHandler.add(MessageType.ERROR, lang.getString("error.email_missing"));
- if (password == null)
- msgHandler.add(MessageType.ERROR, lang.getString("error.password_missing"));
- if (passwordRe == null)
- msgHandler.add(MessageType.ERROR, lang.getString("error.password_missing"));
- else if (passwordRe.equals(password))
- msgHandler.add(MessageType.ERROR, lang.getString("error.password_not_matching"));
-
- if(User.load(db, (String)req.getAttribute(INPUT_ID_EMAIL)) != null){
- msgHandler.add(MessageType.ERROR, lang.getString("error.email_exsists"));
- return;
- }
-
- /*
- * Create new user
- */
-
- User user = new User();
- user.setName(firstName + " " + lastName);
- user.setEmail(email);
- user.setPassword(password);
- user.save(db);
- ZalleryEmail.sendVerificationEmail( user );
- req.getSession().setAttribute("user", user);
- logger.info("Registered new user: "+user.getName()+".");
- msgHandler.add(MessageType.INFO,
- lang.getString("info.account_created") + lang.getString("info.verification_email_sent"));
-
- getServletContext().getRequestDispatcher("/"+JSP_FILE).include(req, resp);
- }
-}
diff --git a/src/zall/util/DbHttpServlet.java b/src/zall/util/DbHttpServlet.java
deleted file mode 100755
index b4740ae..0000000
--- a/src/zall/util/DbHttpServlet.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package zall.util;
-
-import zall.bean.Folder;
-import zall.bean.Image;
-import zall.bean.Media;
-import zall.bean.User;
-import zall.manager.AuthenticationManager;
-import zall.util.msg.UserMessage;
-import zall.util.msg.UserMessage.MessageType;
-import zutil.db.DBConnection;
-import zutil.log.LogUtil;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.*;
-import java.io.File;
-import java.io.IOException;
-import java.sql.SQLException;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-public abstract class DbHttpServlet extends HttpServlet{
- private static Logger logger = LogUtil.getLogger();
-
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- DBConnection db = null;
- try{
- doGet(request, response, db = getDB());
- } catch (SQLException e) {
- throw new IOException(e);
- } finally{
- if(db != null) db.close();
- }
- }
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db)
- throws ServletException, IOException, SQLException { }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- DBConnection db = null;
- try{
- doPost(request, response, db = getDB());
- } catch (SQLException e) {
- throw new IOException(e);
- } finally{
- if(db != null) db.close();
- }
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db)
- throws ServletException, IOException, SQLException { }
-
-
- public static DBConnection getDB() throws ServletException{
- try {
- return new DBConnection("jdbc/mysql");
- } catch (Exception e) {
- throw new ServletException(e);
- }
- }
-}
diff --git a/src/zall/util/msg/UserMessage.java b/src/zall/util/UserMessage.java
similarity index 94%
rename from src/zall/util/msg/UserMessage.java
rename to src/zall/util/UserMessage.java
index c0ab648..475d611 100644
--- a/src/zall/util/msg/UserMessage.java
+++ b/src/zall/util/UserMessage.java
@@ -1,147 +1,147 @@
-package zall.util.msg;
-
-import java.util.LinkedList;
-import java.util.Queue;
-import java.util.logging.Logger;
-
-import javax.servlet.http.HttpSession;
-
-import zutil.log.LogUtil;
-
-/**
- * This class represents all the messages to a single user.
- * The class is implemented as an Iterator.
- *
- *
- * Example HTML:
- *
-
-
- *
- *
- *
- * @author Ziver
- */
-public class UserMessage{
- public static final Logger logger = LogUtil.getLogger();
- public static final String SESSION_USERMESSAGE_KEY = "AJAX_USER_MESSAGES";
-
- /**
- * Is the different types of messages
- */
- public enum MessageType{
- ERROR, WARNING, INFO
- }
- /**
- * This class represents a single message to a user
- */
- protected class Message{
- MessageType type;
- String msg;
- }
- /** is the queue that contains the messages **/
- private Queue msg_queue;
- /** is the current message **/
- private Message current;
-
-
- public UserMessage(){
- msg_queue = new LinkedList();
- }
-
- //******** Queue methods
-
- /**
- * Adds a new message to the queue
- *
- * @param type is the type of the message
- * @param msg is the message itself
- */
- public void add(MessageType type, String msg){
- Message m = new Message();
- m.type = type;
- m.msg = msg;
- msg_queue.add( m );
- logger.finer("Queueing(Size: "+msg_queue.size()+") user message: "+type+"= \""+msg+"\"");
- }
-
- /**
- * @return if there is more messages in the queue
- */
- public boolean hasNext(){
- return msg_queue.size() != 0;
- }
-
- /**
- * Polls a new message from the Queue
- *
- * @return if the poll was successful
- */
- public boolean next(){
- boolean tmp = hasNext();
- current = msg_queue.poll();
- return tmp;
- }
-
- public int size(){
- return msg_queue.size();
- }
-
- public void clear(){
- msg_queue.clear();
- }
-
- //******** Message Methods
-
- /**
- * @return the type of the current message
- */
- public MessageType getType(){
- return current.type;
- }
-
- /**
- * @return the message of the current one
- */
- public String getMessage(){
- return current.msg;
- }
-
- //******** Static methods
-
- public static UserMessage getUserMessage(HttpSession session){
- if( session.getAttribute(SESSION_USERMESSAGE_KEY) == null ){
- UserMessage msg = new UserMessage();
- msg.setSession( session );
- return msg;
- }
- return (UserMessage) session.getAttribute(SESSION_USERMESSAGE_KEY);
- }
-
- public void setSession(HttpSession session) {
- session.setAttribute(SESSION_USERMESSAGE_KEY, this);
- }
-}
+package zall.util;
+
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.logging.Logger;
+
+import javax.servlet.http.HttpSession;
+
+import zutil.log.LogUtil;
+
+/**
+ * This class represents all the messages to a single user.
+ * The class is implemented as an Iterator.
+ *
+ *
+ * Example HTML:
+ *
+
+
+ *
+ *
+ *
+ * @author Ziver
+ */
+public class UserMessage{
+ public static final Logger logger = LogUtil.getLogger();
+ public static final String SESSION_USERMESSAGE_KEY = "AJAX_USER_MESSAGES";
+
+ /**
+ * Is the different types of messages
+ */
+ public enum MessageType{
+ ERROR, WARNING, INFO
+ }
+ /**
+ * This class represents a single message to a user
+ */
+ protected class Message{
+ MessageType type;
+ String msg;
+ }
+ /** is the queue that contains the messages **/
+ private Queue msg_queue;
+ /** is the current message **/
+ private Message current;
+
+
+ public UserMessage(){
+ msg_queue = new LinkedList<>();
+ }
+
+ //******** Queue methods
+
+ /**
+ * Adds a new message to the queue
+ *
+ * @param type is the type of the message
+ * @param msg is the message itself
+ */
+ public void add(MessageType type, String msg){
+ Message m = new Message();
+ m.type = type;
+ m.msg = msg;
+ msg_queue.add( m );
+ logger.finer("Queueing(Size: "+msg_queue.size()+") user message: "+type+"= \""+msg+"\"");
+ }
+
+ /**
+ * @return if there is more messages in the queue
+ */
+ public boolean hasNext(){
+ return msg_queue.size() != 0;
+ }
+
+ /**
+ * Polls a new message from the Queue
+ *
+ * @return if the poll was successful
+ */
+ public boolean next(){
+ boolean tmp = hasNext();
+ current = msg_queue.poll();
+ return tmp;
+ }
+
+ public int size(){
+ return msg_queue.size();
+ }
+
+ public void clear(){
+ msg_queue.clear();
+ }
+
+ //******** Message Methods
+
+ /**
+ * @return the type of the current message
+ */
+ public MessageType getType(){
+ return current.type;
+ }
+
+ /**
+ * @return the message of the current one
+ */
+ public String getMessage(){
+ return current.msg;
+ }
+
+ //******** Static methods
+
+ public static UserMessage getUserMessage(HttpSession session){
+ if( session.getAttribute(SESSION_USERMESSAGE_KEY) == null ){
+ UserMessage msg = new UserMessage();
+ msg.setSession( session );
+ return msg;
+ }
+ return (UserMessage) session.getAttribute(SESSION_USERMESSAGE_KEY);
+ }
+
+ public void setSession(HttpSession session) {
+ session.setAttribute(SESSION_USERMESSAGE_KEY, this);
+ }
+}
diff --git a/src/zall/util/msg/AjaxUserMessageServlet.java b/src/zall/util/msg/AjaxUserMessageServlet.java
deleted file mode 100644
index 4dd3c6d..0000000
--- a/src/zall/util/msg/AjaxUserMessageServlet.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package zall.util.msg;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * This class reads a get request and returns all messages
- * to that user as JSON.
- *
- * @author Ziver
- */
-public class AjaxUserMessageServlet extends HttpServlet{
- private static final long serialVersionUID = 1L;
-
- /**
- * Ajax request
- */
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{
-
- }
-
-}