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

Reply via email to