Update of
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms
In directory
james.mmbase.org:/tmp/cvs-serv24082/src/java/com/finalist/cmsc/repository/forms
Modified Files:
AssetAction.java AssetSearchAction.java AssetUploadAction.java
AssetUploadForm.java ImageUploadAction.java
ImageUploadForm.java
Log Message:
CMSC-681 Asset Maintenance
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms
See also: http://www.mmbase.org/jira/browse/CMSC-681
Index: AssetAction.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- AssetAction.java 11 Nov 2008 05:56:54 -0000 1.4
+++ AssetAction.java 9 Dec 2008 06:04:04 -0000 1.5
@@ -34,12 +34,13 @@
public class AssetAction extends MMBaseAction {
private final static String MOVEASSETTOCHANNEL = "moveAssetToChannel";
+
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response, Cloud cloud) throws Exception {
String action = request.getParameter("action");
- if(StringUtils.isNotEmpty(action) && action.equals(MOVEASSETTOCHANNEL)) {
+ if (StringUtils.isNotEmpty(action) && action.equals(MOVEASSETTOCHANNEL))
{
return mapping.findForward(MOVEASSETTOCHANNEL);
}
List<LabelValueBean> typesList = new ArrayList<LabelValueBean>();
@@ -59,9 +60,11 @@
String orderby = request.getParameter("orderby");
String direction = request.getParameter("direction");
String show = request.getParameter("show");
- if(StringUtils.isNotEmpty(show)){
+ String exist = request.getParameter("exist");
+
+ if (StringUtils.isNotEmpty(show)) {
show = "thumbnail";
- }else{
+ } else {
show = null;
}
if (StringUtils.isEmpty(orderby)) {
@@ -101,6 +104,7 @@
addToRequest(request, "elements", assets);
addToRequest(request, "elementCount", Integer.toString(assetCount));
addToRequest(request, "show", show);
+ addToRequest(request, "exist", exist);
Map<String, Node> createdNumbers = new HashMap<String, Node>();
for (Iterator<Node> iter = created.iterator(); iter.hasNext();) {
Index: AssetSearchAction.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetSearchAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- AssetSearchAction.java 2 Dec 2008 02:40:20 -0000 1.4
+++ AssetSearchAction.java 9 Dec 2008 06:04:04 -0000 1.5
@@ -1,6 +1,8 @@
package com.finalist.cmsc.repository.forms;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -9,9 +11,18 @@
import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
import org.apache.commons.lang.StringUtils;
-import org.apache.struts.action.*;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.LabelValueBean;
-import org.mmbase.bridge.*;
+import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Field;
+import org.mmbase.bridge.FieldIterator;
+import org.mmbase.bridge.FieldList;
+import org.mmbase.bridge.Node;
+import org.mmbase.bridge.NodeList;
+import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.NodeQuery;
import org.mmbase.bridge.util.Queries;
import org.mmbase.bridge.util.SearchUtil;
import org.mmbase.storage.search.Constraint;
@@ -26,7 +37,6 @@
import com.finalist.cmsc.services.publish.Publish;
import com.finalist.cmsc.services.workflow.Workflow;
import com.finalist.cmsc.struts.PagerAction;
-import com.finalist.cmsc.util.KeywordUtil;
public class AssetSearchAction extends PagerAction {
Index: AssetUploadAction.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- AssetUploadAction.java 2 Dec 2008 02:40:20 -0000 1.4
+++ AssetUploadAction.java 9 Dec 2008 06:04:04 -0000 1.5
@@ -1,25 +1,31 @@
-/*
- *
- * This software is OSI Certified Open Source Software. OSI Certified is a
certification mark of the Open Source
- * Initiative.
- *
- * The license (Mozilla version 1.0) can be read at the MMBase site. See
http://www.MMBase.org/license
- */
package com.finalist.cmsc.repository.forms;
+import java.io.IOException;
+import java.util.HashSet;
import java.util.List;
+import java.util.Properties;
+import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Node;
+import org.mmbase.bridge.NodeList;
import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.NodeQuery;
+import org.mmbase.bridge.util.SearchUtil;
+import org.mmbase.util.transformers.ByteToCharTransformer;
+import org.mmbase.util.transformers.ChecksumFactory;
import com.finalist.cmsc.services.versioning.Versioning;
+import com.finalist.cmsc.services.workflow.Workflow;
import com.finalist.cmsc.struts.MMBaseAction;
import com.finalist.util.http.BulkUploadUtil;
@@ -30,35 +36,88 @@
HttpServletResponse response, Cloud cloud) throws Exception {
AssetUploadForm assetUploadForm = (AssetUploadForm) form;
- String assetType = assetUploadForm.getAssetType();
String parentchannel = assetUploadForm.getParentchannel();
FormFile file = assetUploadForm.getFile();
- NodeManager manager = cloud.getNodeManager(assetType);
+ String assetType = "";
if (file.getFileSize() != 0 && file.getFileName() != null) {
- String uploadFileType = file.getContentType();
- List<Integer> nodes = null;
- if (assetType.equalsIgnoreCase("images")) {
- if (uploadFileType.equalsIgnoreCase("image/bmp") ||
uploadFileType.equalsIgnoreCase("image/jpeg")
- || uploadFileType.equalsIgnoreCase("image/gif") ||
uploadFileType.equalsIgnoreCase("image/png")) {
- nodes = BulkUploadUtil.store(cloud, manager, parentchannel,
file);
- request.setAttribute("uploadedAssets", nodes);
+ if (isImage(file.getFileName())) {
+ assetType = "images";
+ } else {
+ assetType = "attachments";
}
- } else if (assetType.equalsIgnoreCase("attachments")) {
+
+ List<Integer> nodes = null;
+ NodeManager manager = cloud.getNodeManager(assetType);
+
+ ChecksumFactory checksumFactory = new ChecksumFactory();
+ ByteToCharTransformer transformer = (ByteToCharTransformer)
checksumFactory.createTransformer(checksumFactory
+ .createParameters());
+ String checkSum = transformer.transform(file.getFileData());
+ NodeQuery query = manager.createQuery();
+ SearchUtil.addEqualConstraint(query, manager.getField("checksum"),
checkSum);
+ NodeList assets = query.getList();
+
+ boolean isNewFile = (assets.size() == 0);
+
+ if (isNewFile) {
nodes = BulkUploadUtil.store(cloud, manager, parentchannel, file);
request.setAttribute("uploadedAssets", nodes);
+ } else {
+ return new ActionForward(mapping.findForward(SUCCESS).getPath()
+ + "?type=asset&direction=down&exist=1&parentchannel=" +
parentchannel, true);
}
+
// to archive the upload asset
if (nodes != null && nodes.size() > 0) {
for (Integer node : nodes) {
+ Node assetNode = cloud.getNode(node);
+ if (!Workflow.hasWorkflow(assetNode)) {
+ Workflow.create(assetNode, "");
+ } else {
+ Workflow.addUserToWorkflow(assetNode);
+ }
Versioning.addVersion(cloud.getNode(node));
}
}
}
+ return new ActionForward(mapping.findForward(SUCCESS).getPath()
+ + "?type=asset&direction=down&exist=0&parentchannel=" +
parentchannel, true);
+ }
+
+ private static Set<String> supportedImages;
+ private static final String CONFIGURATION_RESOURCE_NAME =
"/com/finalist/util/http/util.properties";
+ private static final Log log = LogFactory.getLog(BulkUploadUtil.class);
- return new ActionForward(mapping.findForward(SUCCESS).getPath() +
"?type=asset&direction=down&parentchannel="
- + parentchannel, true);
+ private static void initSupportedImages() {
+ supportedImages = new HashSet<String>();
+ Properties properties = new Properties();
+ String images = ".bmp,.jpg,.jpeg,.gif,.png,.svg,.tiff,.tif";
+ try {
+
properties.load(BulkUploadUtil.class.getResourceAsStream(CONFIGURATION_RESOURCE_NAME));
+ images = (String) properties.get("supportedImages");
+ } catch (IOException ex) {
+ log.warn("Could not load properties from " +
CONFIGURATION_RESOURCE_NAME + ", using defaults", ex);
+ }
+ for (String image : images.split(",")) {
+ supportedImages.add(image.trim());
+ }
+ }
+
+ private static boolean isImage(String fileName) {
+ if (supportedImages == null) {
+ initSupportedImages();
+ }
+ return fileName != null &&
supportedImages.contains(getExtension(fileName).toLowerCase());
+ }
+
+ private static String getExtension(String fileName) {
+ int index = fileName.lastIndexOf('.');
+ if (index < 0) {
+ return null;
+ }
+ return fileName.substring(index);
}
}
Index: AssetUploadForm.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadForm.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- AssetUploadForm.java 7 Nov 2008 02:54:48 -0000 1.1
+++ AssetUploadForm.java 9 Dec 2008 06:04:04 -0000 1.2
@@ -6,18 +6,9 @@
@SuppressWarnings("serial")
public class AssetUploadForm extends ActionForm {
- private String assetType = "attachment";
private String parentchannel;
private FormFile file;
- public String getAssetType() {
- return assetType;
- }
-
- public void setAssetType(String assetType) {
- this.assetType = assetType;
- }
-
public String getParentchannel() {
return parentchannel;
}
@@ -33,5 +24,4 @@
public void setFile(FormFile file) {
this.file = file;
}
-
}
Index: ImageUploadAction.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/ImageUploadAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- ImageUploadAction.java 2 Dec 2008 02:40:20 -0000 1.1
+++ ImageUploadAction.java 9 Dec 2008 06:04:04 -0000 1.2
@@ -7,19 +7,32 @@
*/
package com.finalist.cmsc.repository.forms;
+import java.io.IOException;
+import java.util.HashSet;
import java.util.List;
+import java.util.Properties;
+import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Node;
+import org.mmbase.bridge.NodeList;
import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.NodeQuery;
+import org.mmbase.bridge.util.SearchUtil;
+import org.mmbase.util.transformers.ByteToCharTransformer;
+import org.mmbase.util.transformers.ChecksumFactory;
import com.finalist.cmsc.services.versioning.Versioning;
+import com.finalist.cmsc.services.workflow.Workflow;
import com.finalist.cmsc.struts.MMBaseAction;
import com.finalist.util.http.BulkUploadUtil;
@@ -32,25 +45,79 @@
ImageUploadForm imageUploadForm = (ImageUploadForm) form;
String parentchannel = imageUploadForm.getParentchannel();
FormFile file = imageUploadForm.getFile();
-
+ int nodeId = 0;
+ String exist = "0";
NodeManager manager = cloud.getNodeManager("images");
+ List<Integer> nodes = null;
if (file.getFileSize() != 0 && file.getFileName() != null) {
- String uploadFileType = file.getContentType();
- List<Integer> nodes = null;
- if (uploadFileType.equalsIgnoreCase("image/bmp") ||
uploadFileType.equalsIgnoreCase("image/jpeg")
- || uploadFileType.equalsIgnoreCase("image/gif") ||
uploadFileType.equalsIgnoreCase("image/png")) {
+ if (isImage(file.getFileName())) {
+
+ ChecksumFactory checksumFactory = new ChecksumFactory();
+ ByteToCharTransformer transformer = (ByteToCharTransformer)
checksumFactory
+ .createTransformer(checksumFactory.createParameters());
+ String checkSum = transformer.transform(file.getFileData());
+ NodeQuery query = manager.createQuery();
+ SearchUtil.addEqualConstraint(query, manager.getField("checksum"),
checkSum);
+ NodeList images = query.getList();
+
+ boolean isNewFile = (images.size() == 0);
+ if (isNewFile) {
nodes = BulkUploadUtil.store(cloud, manager, parentchannel, file);
- request.setAttribute("uploadedImages", nodes);
+ request.setAttribute("uploadedNodes", nodes.size());
+ } else {
+ exist = "1";
}
- // to archive the upload asset
+ }
+
if (nodes != null && nodes.size() > 0) {
for (Integer node : nodes) {
+ Node assetNode = cloud.getNode(node);
+ if (!Workflow.hasWorkflow(assetNode)) {
+ Workflow.create(assetNode, "");
+ } else {
+ Workflow.addUserToWorkflow(assetNode);
+ }
Versioning.addVersion(cloud.getNode(node));
}
+ nodeId = nodes.get(0);
}
}
- return new ActionForward(mapping.findForward(SUCCESS).getPath(), true);
+ return new ActionForward(mapping.findForward(SUCCESS).getPath() +
"?uploadAction=select&exist=" + exist
+ + "&channelid=" + parentchannel + "&uploadedNodes=" + nodeId,
true);
}
+ private static Set<String> supportedImages;
+ private static final String CONFIGURATION_RESOURCE_NAME =
"/com/finalist/util/http/util.properties";
+ private static final Log log = LogFactory.getLog(BulkUploadUtil.class);
+
+ private static void initSupportedImages() {
+ supportedImages = new HashSet<String>();
+ Properties properties = new Properties();
+ String images = ".bmp,.jpg,.jpeg,.gif,.png,.svg,.tiff,.tif";
+ try {
+
properties.load(BulkUploadUtil.class.getResourceAsStream(CONFIGURATION_RESOURCE_NAME));
+ images = (String) properties.get("supportedImages");
+ } catch (IOException ex) {
+ log.warn("Could not load properties from " +
CONFIGURATION_RESOURCE_NAME + ", using defaults", ex);
+ }
+ for (String image : images.split(",")) {
+ supportedImages.add(image.trim());
+ }
+ }
+
+ private static boolean isImage(String fileName) {
+ if (supportedImages == null) {
+ initSupportedImages();
+ }
+ return fileName != null &&
supportedImages.contains(getExtension(fileName).toLowerCase());
+ }
+
+ private static String getExtension(String fileName) {
+ int index = fileName.lastIndexOf('.');
+ if (index < 0) {
+ return null;
+ }
+ return fileName.substring(index);
+ }
}
Index: ImageUploadForm.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/ImageUploadForm.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- ImageUploadForm.java 2 Dec 2008 02:40:20 -0000 1.1
+++ ImageUploadForm.java 9 Dec 2008 06:04:04 -0000 1.2
@@ -6,7 +6,7 @@
@SuppressWarnings("serial")
public class ImageUploadForm extends ActionForm {
- private String parentchannel="723";
+ private String parentchannel;
private FormFile file;
public String getParentchannel() {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs