Author: snoopdave
Date: Sun Dec  7 07:17:42 2008
New Revision: 724139

URL: http://svn.apache.org/viewvc?rev=724139&view=rev
Log:
Addresses issue ROL-1634
https://issues.apache.org/roller/browse/ROL-1634

Fixing error messages for uploads
- Made file managers's canSave() method public so Resource action can call it
- Made Resource action report messages from canSave() per file


Modified:
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java?rev=724139&r1=724138&r2=724139&view=diff
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java
 Sun Dec  7 07:17:42 2008
@@ -21,6 +21,7 @@
 import java.io.InputStream;
 import org.apache.roller.weblogger.pojos.ThemeResource;
 import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.util.RollerMessages;
 
 
 /**
@@ -89,6 +90,21 @@
     
     
     /**
+     * Determine if file can be saved given current WebloggerConfig settings.
+     * @param weblog      Weblog destination of upload
+     * @param path        Proposed file path
+     * @param contentType Content type
+     * @param size        Size in bytes
+     * @param errors    For returned error messages
+     * @return True if file can be saved
+     */
+    public boolean canSave(Weblog weblog,
+                           String path,
+                           String contentType,
+                           long size,
+                           RollerMessages errors);
+    
+    /**
      * Save a file to weblog's uploads area, with can-save check.
      * 
      * @param weblog The weblog we are working on.

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java?rev=724139&r1=724138&r2=724139&view=diff
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java
 Sun Dec  7 07:17:42 2008
@@ -348,15 +348,15 @@
     /**
      * Determine if file can be saved given current WebloggerConfig settings.
      */
-    private boolean canSave(Weblog weblog, 
+    public boolean canSave(Weblog weblog,
                            String path, 
                            String contentType,
                            long size, 
-                           RollerMessages messages) {
+                           RollerMessages errors) {
         
         // first check, is uploading enabled?
         if(!WebloggerRuntimeConfig.getBooleanProperty("uploads.enabled")) {
-            messages.addError("error.upload.disabled");
+            errors.addError("error.upload.disabled");
             return false;
         }
         
@@ -367,7 +367,7 @@
         log.debug("max allowed file size = "+maxFileBytes);
         log.debug("attempted save file size = "+size);
         if (size > maxFileBytes) {
-            messages.addError("error.upload.filemax", maxFileMB.toString());
+            errors.addError("error.upload.filemax", maxFileMB.toString());
             return false;
         }
         
@@ -379,7 +379,7 @@
             File uploadsDir = this.getRealFile(weblog, null);
             long userDirSize = getDirSize(uploadsDir, true);
             if (userDirSize + size > maxDirBytes) {
-                messages.addError("error.upload.dirmax", maxDirMB.toString());
+                errors.addError("error.upload.dirmax", maxDirMB.toString());
                 return false;
             }
         } catch (Exception ex) {
@@ -394,7 +394,7 @@
         String[] allowFiles = 
StringUtils.split(StringUtils.deleteWhitespace(allows), ",");
         String[] forbidFiles = 
StringUtils.split(StringUtils.deleteWhitespace(forbids), ",");
         if (!checkFileType(allowFiles, forbidFiles, path, contentType)) {
-            messages.addError("error.upload.forbiddenFile", allows);
+            errors.addError("error.upload.forbiddenFile", allows);
             return false;
         }
         
@@ -403,7 +403,7 @@
             // just make sure there is only 1 directory, we don't allow multi
             // level directory hierarchies right now
             if(path.lastIndexOf("/") != path.indexOf("/")) {
-                messages.addError("error.upload.badPath");
+                errors.addError("error.upload.badPath");
                 return false;
             }
         }
@@ -462,7 +462,7 @@
         
         // if this person hasn't listed any allows, then assume they want
         // to allow *all* filetypes, except those listed under forbid
-        if(allowFiles == null || allowFiles.length < 1) {
+        if (allowFiles == null || allowFiles.length < 1) {
             allowFile = true;
         }
         

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java?rev=724139&r1=724138&r2=724139&view=diff
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java
 Sun Dec  7 07:17:42 2008
@@ -24,6 +24,7 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.List;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -36,6 +37,8 @@
 import org.apache.roller.weblogger.pojos.ThemeResource;
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.roller.weblogger.util.RollerMessages;
+import org.apache.roller.weblogger.util.RollerMessages.RollerMessage;
 
 
 /**
@@ -183,7 +186,8 @@
         }
             
         FileManager fmgr = WebloggerFactory.getWeblogger().getFileManager();
-        
+
+        RollerMessages errors = new RollerMessages();
         List<String> uploaded = new ArrayList();
         File[] uploads = getUploadedFiles();
         if (uploads != null && uploads.length > 0) {
@@ -215,14 +219,17 @@
                 if(getPath() != null && getPath().trim().length() > 0) {
                     fileName = getPath() + "/" + fileName;
                 }
-                
+
+                if (!fmgr.canSave(getActionWeblog(), fileName, 
getUploadedFilesContentType()[i], uploads[i].length(), errors)) {
+                    continue;
+                }
                 
                 try {
                     fmgr.saveFile(getActionWeblog(), 
                             fileName,
                             getUploadedFilesContentType()[i],
                             uploads[i].length(),
-                            new FileInputStream(uploads[i]));
+                            new FileInputStream(uploads[i]), true);
                     
                     uploaded.add(fileName);
                     
@@ -243,10 +250,15 @@
             }
         }
         
+        for (Iterator it = errors.getErrors(); it.hasNext();) {
+            RollerMessage msg = (RollerMessage)it.next();
+            addError(msg.getKey(), Arrays.asList(msg.getArgs()));
+        }
+
         if(uploaded.size() > 0) {
             addMessage("uploadFiles.uploadedFiles");
-            
-            for(String upload : uploaded) {
+
+            for (String upload : uploaded) {
                 addMessage("uploadFiles.uploadedFile",
                         
WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogResourceURL(getActionWeblog(),
 upload, true));
             }


Reply via email to