diff --git a/src/zall/Zallery.java b/src/zall/Zallery.java index 505d980..faf7356 100755 --- a/src/zall/Zallery.java +++ b/src/zall/Zallery.java @@ -81,8 +81,8 @@ public class Zallery extends HttpServlet{ } public static UserMessageManager getUserMessage(HttpSession session) { - if (session.getAttribute(ZalleryConstants.SESSION_KEY_USER_MSG) == null) - session.setAttribute(ZalleryConstants.SESSION_KEY_USER_MSG, new UserMessageManager()); - return (UserMessageManager) session.getAttribute(ZalleryConstants.SESSION_KEY_USER_MSG); + if (session.getAttribute(ZalleryConstants.KEY_USER_MSG) == null) + session.setAttribute(ZalleryConstants.KEY_USER_MSG, new UserMessageManager()); + return (UserMessageManager) session.getAttribute(ZalleryConstants.KEY_USER_MSG); } } diff --git a/src/zall/ZalleryConstants.java b/src/zall/ZalleryConstants.java index 65cbe89..9fb0cfb 100644 --- a/src/zall/ZalleryConstants.java +++ b/src/zall/ZalleryConstants.java @@ -9,7 +9,7 @@ public interface ZalleryConstants { /** Session Constants **/ - public static final String SESSION_KEY_USER_MSG = "zall_user_message"; + public static final String KEY_USER_MSG = "zall_user_message"; /** Language Key Constants **/ diff --git a/src/zall/ZalleryServlet.java b/src/zall/ZalleryServlet.java index 923e9bb..a5df712 100644 --- a/src/zall/ZalleryServlet.java +++ b/src/zall/ZalleryServlet.java @@ -2,6 +2,7 @@ package zall; import zutil.db.DBConnection; import zutil.log.LogUtil; +import zutil.ui.UserMessageManager; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; @@ -22,7 +23,10 @@ public abstract class ZalleryServlet extends HttpServlet { public final void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { DBConnection db = null; try { + UserMessageManager msgs = Zallery.getUserMessage(request.getSession()); + request.setAttribute(ZalleryConstants.KEY_USER_MSG, msgs); doGet(request, response, db = Zallery.getDB()); + msgs.decrementViewCount(); } catch (ServletException e) { throw e; } catch (Exception e) { diff --git a/src/zall/bean/Folder.java b/src/zall/bean/Folder.java index ee5e522..d81c13e 100755 --- a/src/zall/bean/Folder.java +++ b/src/zall/bean/Folder.java @@ -5,7 +5,6 @@ import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Collections; -import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -141,10 +140,10 @@ public class Folder extends DBBean { /** + * @param filename is the name of the file + * @param size specifies the size of the image * @return a File object that points to the physical file on the disk, * or null if the user or the filename is null - * @param filename is the name of the file - * @param size specifies the size of the image */ public File getFile(String filename, Image.Size size) { // Zallery not initialized. diff --git a/src/zall/bean/Image.java b/src/zall/bean/Image.java index 0fc7291..b2ea658 100644 --- a/src/zall/bean/Image.java +++ b/src/zall/bean/Image.java @@ -21,99 +21,101 @@ import zutil.image.ImageUtil; import zutil.io.file.FileUtil; import zutil.log.LogUtil; -@DBTable(value="Image", superBean=true) -public class Image extends Media{ - private static final Logger logger = LogUtil.getLogger(); - public static final String type = "image"; - public static final String IMAGE_FORMAT = "jpg"; - - @DBLinkTable(table="Comments", beanClass=Comment.class, idColumn="image") - private LinkedList comments; - - /** - * Loads all the Images from a folder - */ - public static List loadFolder(DBConnection db, Folder folder) throws SQLException{ - if( folder == null || folder.getId() == null ) - return new LinkedList(); - PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Image WHERE folder=? ORDER BY date DESC"); - sql.setLong(1, folder.getId() ); - return DBConnection.exec(sql, DBBeanSQLResultHandler.createList(Image.class, db)); - } - public static Image load(DBConnection db, long id) throws SQLException{ - return DBBean.load(db, Image.class, id); - } - +@DBTable(value = "Image", superBean = true) +public class Image extends Media { + private static final Logger logger = LogUtil.getLogger(); + public static final String type = "image"; + public static final String IMAGE_FORMAT = "jpg"; - public Image(){ - super(); - comments = new LinkedList(); - } - - public LinkedList getComments() { - return comments; - } - public void addComment(Comment cm){ - comments.add( cm ); - } - - public void setFile(FileItem item) throws Exception{ - if( folder == null ) - throw new Exception("Folder not set for image!"); - // Generate unique filename - filename = genFileName( item.getName() ); - filename += "."+FileUtil.getFileExtension( item.getName() ); - File file = folder.getFile( filename, Size.ORIGINAL ); - - // Move uploaded file - item.write( file ); - } - - /** - * Returns the file for the image, and generates an thumbnail if there is no thumbnail - * - * @param size is the size of the image - */ - public File getFile(Size size) throws IOException{ - if( filename != null ){ - switch( size ){ - case ORIGINAL: - return folder.getFile( filename, Size.ORIGINAL ); - default: - File file = folder.getFile( FileUtil.replaceExtension(filename, IMAGE_FORMAT), size ); - File orgFile = folder.getFile( filename, Size.ORIGINAL ); - if( !file.exists() ){ - if(orgFile.exists() && orgFile.canRead() ){ - // Generate new thumbnail - BufferedImage original = ImageIO.read( orgFile ); - BufferedImage image = null; - switch( size ){ - case SMALL: - image = ImageUtil.cropScale(original, 125, 125); - break; - case MEDIUM: - image = ImageUtil.scale(original, 500, 375, true); - break; - case LARGE: - image = ImageUtil.scale(original, 1200, 800, true); - break; - default: - break; - } - ImageIO.write(image, IMAGE_FORMAT, file); - } - else if( !orgFile.exists() ) - logger.severe("Original image file missing: \""+file.getAbsolutePath()+"\""); - else if( orgFile.canRead() ) - logger.severe("Can not read original image file: \""+file.getAbsolutePath()+"\""); - } - return file; - } - } - return null; - } - @Override - public String getType() { - return type; - } + @DBLinkTable(table = "Comments", beanClass = Comment.class, idColumn = "image") + private LinkedList comments; + + /** + * Loads all the Images from a folder + */ + public static List loadFolder(DBConnection db, Folder folder) throws SQLException { + if (folder == null || folder.getId() == null) + return new LinkedList(); + PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Image WHERE folder=? ORDER BY date DESC"); + sql.setLong(1, folder.getId()); + return DBConnection.exec(sql, DBBeanSQLResultHandler.createList(Image.class, db)); + } + + public static Image load(DBConnection db, long id) throws SQLException { + return DBBean.load(db, Image.class, id); + } + + + public Image() { + super(); + comments = new LinkedList(); + } + + public LinkedList getComments() { + return comments; + } + + public void addComment(Comment cm) { + comments.add(cm); + } + + public void setFile(FileItem item) throws Exception { + if (folder == null) + throw new Exception("Folder not set for image!"); + // Generate unique filename + filename = genFileName(item.getName()); + filename += "." + FileUtil.getFileExtension(item.getName()); + File file = folder.getFile(filename, Size.ORIGINAL); + + // Move uploaded file + item.write(file); + } + + /** + * Returns the file for the image, and generates an thumbnail if there is no thumbnail + * + * @param size is the size of the image + */ + public File getFile(Size size) throws IOException { + if (filename != null) { + switch (size) { + case ORIGINAL: + return folder.getFile(filename, Size.ORIGINAL); + default: + File file = folder.getFile(FileUtil.replaceExtension(filename, IMAGE_FORMAT), size); + File orgFile = folder.getFile(filename, Size.ORIGINAL); + if (!file.exists()) { + if (orgFile.exists() && orgFile.canRead()) { + // Generate new thumbnail + BufferedImage original = ImageIO.read(orgFile); + BufferedImage image = null; + switch (size) { + case SMALL: + image = ImageUtil.cropScale(original, 125, 125); + break; + case MEDIUM: + image = ImageUtil.scale(original, 500, 375, true); + break; + case LARGE: + image = ImageUtil.scale(original, 1200, 800, true); + break; + default: + break; + } + ImageIO.write(image, IMAGE_FORMAT, file); + } else if (!orgFile.exists()) + logger.severe("Original image file missing: \"" + file.getAbsolutePath() + "\""); + else if (orgFile.canRead()) + logger.severe("Can not read original image file: \"" + file.getAbsolutePath() + "\""); + } + return file; + } + } + return null; + } + + @Override + public String getType() { + return type; + } }