Update of
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms
In directory
james.mmbase.org:/tmp/cvs-serv29274/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms
Modified Files:
SearchAction.java
Log Message:
CMSC-465
merge and improve fix.
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-465
Index: SearchAction.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/SearchAction.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- SearchAction.java 26 Nov 2007 11:43:40 -0000 1.7
+++ SearchAction.java 30 Jan 2008 10:40:28 -0000 1.8
@@ -2,14 +2,18 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.StringTokenizer;
import net.sf.mmapps.commons.util.StringUtil;
import net.sf.mmapps.commons.util.KeywordUtil;
+import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
+import net.sf.mmapps.modules.cloudprovider.CloudProvider;
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.apache.commons.lang.StringUtils;
import org.mmbase.bridge.*;
import org.mmbase.bridge.util.Queries;
import org.mmbase.bridge.util.SearchUtil;
@@ -22,6 +26,8 @@
import com.finalist.cmsc.repository.RepositoryUtil;
import com.finalist.cmsc.resources.forms.QueryStringComposer;
import com.finalist.cmsc.struts.PagerAction;
+import com.finalist.cmsc.services.publish.Publish;
+import com.finalist.cmsc.services.workflow.Workflow;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -38,19 +44,30 @@
private static final String REPOSITORY_SEARCH_RESULTS_PER_PAGE =
"repository.search.results.per.page";
- /** MMbase logging system */
+ /**
+ * MMbase logging system
+ */
private static Logger log =
Logging.getLoggerInstance(SearchAction.class.getName());
@Override
- public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
- HttpServletResponse response, Cloud cloud) throws Exception {
+ public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response, Cloud cloud) throws
Exception {
log.debug("Starting the search:");
// Initialize
SearchForm searchForm = (SearchForm) form;
+ String deleteContentRequest =
request.getParameter("deleteContentRequest");
+
+ if (StringUtils.isNotEmpty(deleteContentRequest)) {
+ deleteContent(deleteContentRequest);
+
+ // add a flag to let search result page refresh the channels frame,
+ // so that the number of item in recyclebin can update
+ request.setAttribute("refreshChannels", "refreshChannels");
+ }
+
// First prepare the typeList, we'll need this one anyway:
List<LabelValueBean> typesList = new ArrayList<LabelValueBean>();
@@ -228,4 +245,47 @@
return super.execute(mapping, form, request, response, cloud);
}
+ private void deleteContent(String deleteContentRequest) {
+ StringTokenizer commandAndNumber = new
StringTokenizer(deleteContentRequest, ":");
+ String command = commandAndNumber.nextToken();
+ String nunmber = commandAndNumber.nextToken();
+
+ if ("moveToRecyclebin".equals(command)) {
+ moveContentToRecyclebin(nunmber);
+ }
+
+ if ("permanentDelete".equals(command)) {
+ deleteContentPermanent(nunmber);
+ }
+
+ }
+
+ private void deleteContentPermanent(String objectnumber) {
+ CloudProvider provider = CloudProviderFactory.getCloudProvider();
+ Cloud cloud = provider.getCloud();
+
+ Node objectNode = cloud.getNode(objectnumber);
+ if (Workflow.hasWorkflow(objectNode)) {
+ // at this time complete is the same as remove
+ Workflow.complete(objectNode);
+ }
+ objectNode.delete(true);
+
+ }
+
+ private void moveContentToRecyclebin(String nunmber) {
+ CloudProvider provider = CloudProviderFactory.getCloudProvider();
+ Cloud cloud = provider.getCloud();
+
+ Node objectNode = cloud.getNode(nunmber);
+ RepositoryUtil.removeCreationRelForContent(objectNode);
+ RepositoryUtil.removeContentFromAllChannels(objectNode);
+ RepositoryUtil.addContentToChannel(objectNode,
RepositoryUtil.getTrash(cloud));
+
+ // unpublish and remove from workflow
+ Publish.remove(objectNode);
+ Publish.unpublish(objectNode);
+ Workflow.remove(objectNode);
+ }
+
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs