Author: raintang
Date: 2009-09-14 05:10:44 +0200 (Mon, 14 Sep 2009)
New Revision: 38576

Modified:
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository.properties
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_nl.properties
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_zh.properties
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/AssetElementUtil.java
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadAction.java
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/assetupload.jsp
   
CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http/BulkUploadUtil.java
Log:
CMSC-1518 Improved messages for asset upload problems

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository.properties
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository.properties
 2009-09-12 23:08:59 UTC (rev 38575)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository.properties
 2009-09-14 03:10:44 UTC (rev 38576)
@@ -431,7 +431,11 @@
 
 assets.upload.submit=Upload
 assets.upload.results=Uploaded assets
-assets.upload.error=Upload Failed. Possible reasons: <ol><li>the asset(s) are 
too big (max 16MB), even though it is zipped in a ZIP-file that is smaller then 
the limit.</li><li>the ZIP-file does not contain files.</li><li>the ZIP-file is 
secured with a password.</li><li>the ZIP-file is damaged.</li><li>some files 
already exist in the system.</li></ol>
+assets.upload.error.big=The asset you are trying to upload is too large. The 
maximum allowed file size is {0} MB
+assets.upload.error.exsit=The asset you are trying to upload already exists in 
the repository. You can find this file in the
+assets.upload.error.exsit.channel= {0}
+assets.upload.error.exsit.filename=The existing file is called: {0}
+assets.upload.error.multiple=Upload Failed. Possible reasons: <ol><li>the 
asset(s) are too big (max 16MB), even though it is zipped in a ZIP-file that is 
smaller then the limit.</li><li>the ZIP-file does not contain 
files.</li><li>the ZIP-file is secured with a password.</li><li>the ZIP-file is 
damaged.</li><li>some files already exist in the system.</li></ol>
 asset.upload.explanation=Upload local files to this channel. Also ZIP files 
are supported to upload multiple file uploads.
 
 asset.title=Asset
@@ -505,8 +509,8 @@
 asset.search.attachment = attachment
 asset.search.image = image
 
-asset.upload.failed.results=Failed Attachments and Images:
-asset.upload.uploaded.results=Uploaded Attachments and Images:
+asset.upload.failed.results=Failed Attachments or Images:
+asset.upload.uploaded.results=Uploaded Attachments or Images:
 asset.upload.size.zero=Empty file!
 
 simple.editor.title = Simple Editor

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_nl.properties
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_nl.properties
      2009-09-12 23:08:59 UTC (rev 38575)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_nl.properties
      2009-09-14 03:10:44 UTC (rev 38576)
@@ -428,7 +428,11 @@
 
 assets.upload.submit=Upload
 assets.upload.results=Ge-uploade assets
-assets.upload.error=Niet alles geupload. Mogelijke oorzaken:<ol><li>de 
bijlage(s) kunnen te groot zijn (max 16MB), ook al is deze ingepakt in een 
ZIP-bestand dat kleiner is.</li><li>het ZIP-bestand bevat geen 
bijlagen</li><li>het ZIP-bestand is beveiligd met een wachtwoord</li><li>het 
ZIP-bestand is beschadigd</li><li>bestanden staan al in het CMS.</li></ol>
+assets.upload.error.big=The asset you are trying to upload is too large. The 
maximum allowed file size is {0} MB
+assets.upload.error.exsit=The asset you are trying to upload already exists in 
the repository. You can find this file in the
+assets.upload.error.exsit.channel= <{0}>
+assets.upload.error.exsit.filename=The existing file is called: {0}
+assets.upload.error.multiple=Niet alles geupload. Mogelijke 
oorzaken:<ol><li>de bijlage(s) kunnen te groot zijn (max 16MB), ook al is deze 
ingepakt in een ZIP-bestand dat kleiner is.</li><li>het ZIP-bestand bevat geen 
bijlagen</li><li>het ZIP-bestand is beveiligd met een wachtwoord</li><li>het 
ZIP-bestand is beschadigd</li><li>bestanden staan al in het CMS.</li></ol>
 asset.upload.explanation=Selecteer een lokaal asset bestand, of een 
ZIP-bestand dat meerdere assets kan bevatten.
 
 asset.title=Asset

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_zh.properties
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_zh.properties
      2009-09-12 23:08:59 UTC (rev 38575)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_zh.properties
      2009-09-14 03:10:44 UTC (rev 38576)
@@ -79,7 +79,7 @@
 content.create=建立
 content.existing=引用存在的内容
 content.reorder=定置内容顺序
-content.content=频道内的内容
+content.content=<< {0} >>频道内的内容
 content.type=类型 <b> {0} </b>:
 content.showchannels=显示这些item被那里引用.
 content.preview.title=打开浏览这些element的预览.
@@ -429,14 +429,18 @@
 
 assets.upload.submit=上传
 assets.upload.results=上传资源
-assets.upload.error=上传失败.可能的失败原因:<ol><li>文件过大(默认 16MB), 
即使是ZIP包中的文件也应小于该限制.</li><li>该zip文件被密码保护.</li><li>该zip文件没有包含资源文件.</li><li>该zip文件可能损坏.</li><li>某些上传文件已在系统中存在.</li></ol>
+assets.upload.error.big=您要上传的文件太大. 最大允许上传的文件大小为 {0} MB 
+assets.upload.error.exsit=您要上传的文件文件已经在仓库中存在.你能在以下频道找到
+assets.upload.error.exsit.channel= <{0}>
+assets.upload.error.exsit.filename=已存在文件的文件名: {0}
+assets.upload.error.multiple=上传失败.可能的失败原因: <ol><li>文件过大(默认 16MB), 
即使是ZIP包中的文件也应小于该限制.</li><li>该zip文件被密码保护.</li><li>该zip文件没有包含资源文件.</li><li>该zip文件可能损坏.</li><li>某些上传文件已在系统中存在.</li></ol>
 asset.upload.explanation=选择一个本地的资源文件或者包含若干资源文件的zip文件
 
 asset.title=资源
 asset.channel=频道 <b> {0} </b>.
 asset.new=新建链接
 asset.create= 创建
-asset.asset=频道内的资源
+asset.asset=<< {0} >>频道内的资源
 asset.type=类型 <b> {0} </b>:
 asset.preview.title=打开浏览这些element的预览.
 asset.info=信息
@@ -506,8 +510,8 @@
 asset.search.attachment = 附件
 asset.search.image = 图片
 
-asset.upload.failed.results=上传失败的附件和图片:
-asset.upload.uploaded.results=上传成功的附件和图片:
+asset.upload.failed.results=上传失败的附件或图片:
+asset.upload.uploaded.results=上传成功的附件或图片:
 asset.upload.size.zero=空文件!
 
 simple.editor.title = 简单编辑器

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/AssetElementUtil.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/AssetElementUtil.java
  2009-09-12 23:08:59 UTC (rev 38575)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/AssetElementUtil.java
  2009-09-14 03:10:44 UTC (rev 38576)
@@ -337,6 +337,16 @@
     * @return
     */
    public static boolean isNewFile(FormFile file, NodeManager manager) {
+      NodeList assets = getAssetNode(file, manager);
+      return (assets.size() == 0);
+   }
+
+   /**
+    * @param file
+    * @param manager
+    * @return
+    */
+   private static NodeList getAssetNode(FormFile file, NodeManager manager) {
       ChecksumFactory checksumFactory = new ChecksumFactory();
       ByteToCharTransformer transformer = (ByteToCharTransformer) 
checksumFactory.createTransformer(checksumFactory
             .createParameters());
@@ -352,9 +362,22 @@
       NodeQuery query = manager.createQuery();
       SearchUtil.addEqualConstraint(query, manager.getField("checksum"), 
checkSum);
       NodeList assets = query.getList();
-      return (assets.size() == 0);
+      return assets;
    }
 
+   public static String getPathForAsset(FormFile file, NodeManager manager) {
+      NodeList assets = getAssetNode(file, manager);
+      Node assetNode = assets.get(0);
+      NodeList channelNodes = assetNode.getRelatedNodes("contentchannel", 
"creationrel", "destination");
+      Node channelNode = channelNodes.get(0);
+      return RepositoryUtil.getPathToRootString(channelNode);
+   }
+   
+   public static String getTitleFromExsitAsset(FormFile file, NodeManager 
manager){
+      NodeList assets = getAssetNode(file, manager);
+      Node assetNode = assets.get(0);
+      return assetNode.getStringValue("title");
+   }
    /**
     * 
     * @param nodes

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadAction.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadAction.java
   2009-09-12 23:08:59 UTC (rev 38575)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadAction.java
   2009-09-14 03:10:44 UTC (rev 38576)
@@ -15,6 +15,7 @@
 import org.mmbase.bridge.NodeManager;
 
 import com.finalist.cmsc.repository.AssetElementUtil;
+import com.finalist.cmsc.repository.RepositoryUtil;
 import com.finalist.cmsc.struts.MMBaseAction;
 import com.finalist.util.http.BulkUploadUtil;
 
@@ -28,14 +29,20 @@
       String parentchannel = assetUploadForm.getParentchannel();
       FormFile file = assetUploadForm.getFile();
 
+      String big = "";
+      String exsit = "";
+      String exsitChannel = "";
+      String exsitChannelId = "";
+      String exsitAssetTitle = "";
+      String isZip = "";
       List<String> notUploadedFiles = new ArrayList<String>();
       List<String> uploadedFiles = new ArrayList<String>();
 
-      if (isValidFile(file)) {
+      if (notEmptyFile(file)) {
          String assetType = 
AssetElementUtil.judgeAssetType(file.getFileName());
          NodeManager manager = cloud.getNodeManager(assetType);
-
-         if (AssetElementUtil.isNewFile(file, manager)) {
+         if (BulkUploadUtil.isZipFile(file.getContentType(), 
file.getFileName())) {
+            isZip = "isZip";
             List<Integer> nodes = BulkUploadUtil.store(cloud, manager, 
parentchannel, file, notUploadedFiles,
                   uploadedFiles);
             // to archive the upload asset
@@ -43,7 +50,25 @@
                AssetElementUtil.addRelationsForNodes(nodes, cloud);
             }
          } else {
-            notUploadedFiles.add(file.getFileName());
+            if (BulkUploadUtil.maxFileSizeBiggerThan(file.getFileSize())) {
+               if (AssetElementUtil.isNewFile(file, manager)) {
+                  List<Integer> nodes = BulkUploadUtil.store(cloud, manager, 
parentchannel, file, notUploadedFiles,
+                        uploadedFiles);
+                  // to archive the upload asset
+                  if (nodes != null) {
+                     AssetElementUtil.addRelationsForNodes(nodes, cloud);
+                  }
+               } else {
+                  exsit = "exsit";
+                  exsitChannel = AssetElementUtil.getPathForAsset(file, 
manager);
+                  exsitChannelId = RepositoryUtil.getChannelFromPath(cloud, 
exsitChannel).getStringValue("number");
+                  exsitAssetTitle = 
AssetElementUtil.getTitleFromExsitAsset(file, manager);
+                  notUploadedFiles.add(file.getFileName());
+               }
+            } else {
+               big = "big";
+               notUploadedFiles.add(file.getFileName());
+            }
          }
       }
       addToSession(request, "notUploadedFiles", notUploadedFiles);
@@ -51,15 +76,15 @@
       addToSession(request, "uploadingDone", "yes");
 
       String url = mapping.findForward(SUCCESS).getPath() + 
"?type=asset&direction=down" + "&parentchannel="
-            + parentchannel + "&failed=" + notUploadedFiles.size() + 
"&uploaded=" + uploadedFiles.size();
+            + parentchannel + "&failed=" + notUploadedFiles.size() + 
"&uploaded=" + uploadedFiles.size() + "&isZip="
+            + isZip + "&big=" + big + "&exsit=" + exsit + "&exsitChannel=" + 
exsitChannel + "&exsitChannelId="
+            + exsitChannelId + "&exsitAssetTitle=" + exsitAssetTitle + 
"&maxAllowFileSize=" + BulkUploadUtil.getMaxAllowFileSize()/(1024*1024);
 
       return new ActionForward(url, true);
    }
 
-   private boolean isValidFile(FormFile file) {
-      return (BulkUploadUtil.maxFileSizeBiggerThan(file.getFileSize()) || 
BulkUploadUtil.isZipFile(file
-            .getContentType(), file.getFileName()))
-            && file.getFileSize() != 0 && 
StringUtils.isNotEmpty(file.getFileName());
+   private boolean notEmptyFile(FormFile file) {
+      return (file.getFileSize() != 0 && 
StringUtils.isNotEmpty(file.getFileName()));
    }
 
    private void addToSession(HttpServletRequest request, String name, Object 
value) {

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/assetupload.jsp
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/assetupload.jsp
        2009-09-12 23:08:59 UTC (rev 38575)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/assetupload.jsp
        2009-09-14 03:10:44 UTC (rev 38576)
@@ -28,12 +28,30 @@
 <div>
    <c:if test="${uploadingDone eq 'yes'}">
       <c:if test="${param.failed ne '0'}" >
-         <span style="color:#cc0000"><fmt:message 
key="assets.upload.error"/></span>
+               <c:if test="${param.isZip eq 'isZip'}">
+         <span style="color:#cc0000"><fmt:message 
key="assets.upload.error.multiple"/></span>
          <fmt:message key="asset.upload.failed.results"/> ${param.failed}
          <br/>
          <c:forEach var="fileName" items="${notUploadedFiles}" 
varStatus="fileAmount">
          ${fileName}&nbsp;&nbsp;&nbsp;
          </c:forEach>
+               </c:if>
+               <c:if test="${param.isZip ne 'isZip'}">
+                <fmt:message key="asset.upload.failed.results"/>&nbsp;
+         <c:forEach var="fileName" items="${notUploadedFiles}" 
varStatus="fileAmount">
+         ${fileName}<br/>
+         </c:forEach>
+                       <c:if test="${param.big eq 'big'}">
+                               <span style="color:#cc0000"><fmt:message 
key="assets.upload.error.big"><fmt:param>${param.maxAllowFileSize}</fmt:param></fmt:message></span>
+                       </c:if>
+                       <c:if test="${param.exsit eq 'exsit'}">
+                               <span style="color:#cc0000"><fmt:message 
key="assets.upload.error.exsit"/></span><br/>
+                               <a 
href="../repository/Asset.do?type=asset&parentchannel=${param.exsitChannelId}&direction=down">
+                                       ${param.exsitChannel}
+                               </a>&nbsp;&nbsp;
+                               <fmt:message 
key="assets.upload.error.exsit.filename"><fmt:param>${param.exsitAssetTitle}</fmt:param></fmt:message>
+                       </c:if>
+               </c:if>
          <c:remove var="notUploadedFiles" scope="session"/>
          <br/><br/>
       </c:if>

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http/BulkUploadUtil.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http/BulkUploadUtil.java
  2009-09-12 23:08:59 UTC (rev 38575)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http/BulkUploadUtil.java
  2009-09-14 03:10:44 UTC (rev 38576)
@@ -364,6 +364,10 @@
    }
 
    public static boolean maxFileSizeBiggerThan(long fileSize) {
+      return (fileSize <= getMaxAllowFileSize());
+   }
+
+   public static int getMaxAllowFileSize() {
       int maxFileSize = MAXSIZE;
       if (PropertiesUtil.getProperty(UPLOADED_FILE_MAX_SIZE) != null) {
          try {
@@ -377,7 +381,7 @@
             log.warn("System property '" + UPLOADED_FILE_MAX_SIZE + "' is not 
set. Please add it (units = MB).");
          }
       }
-      return (fileSize <= maxFileSize);
+      return maxFileSize;
    }
    
    public static void main(String[] args) {

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to