Update of 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms
In directory james.mmbase.org:/tmp/cvs-serv25173

Modified Files:
      Tag: b1_6
        SearchAction.java 
Log Message:
CMSC-1260 Content search also finds elements in Recycle bin


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms
See also: http://www.mmbase.org/jira/browse/CMSC-1260


Index: SearchAction.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/SearchAction.java,v
retrieving revision 1.15
retrieving revision 1.15.2.1
diff -u -b -r1.15 -r1.15.2.1
--- SearchAction.java   19 Feb 2009 06:36:05 -0000      1.15
+++ SearchAction.java   12 Mar 2009 07:03:00 -0000      1.15.2.1
@@ -1,11 +1,9 @@
 /*
-
-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
-
+ * 
+ * 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.resources.forms;
 
@@ -23,11 +21,15 @@
 import org.mmbase.bridge.NodeQuery;
 import org.mmbase.bridge.util.Queries;
 import org.mmbase.bridge.util.SearchUtil;
+import org.mmbase.storage.search.FieldCompareConstraint;
+import org.mmbase.storage.search.FieldValueConstraint;
 import org.mmbase.storage.search.Step;
+import org.mmbase.storage.search.StepField;
 import org.mmbase.util.logging.Logger;
 import org.mmbase.util.logging.Logging;
 
 import com.finalist.cmsc.mmbase.PropertiesUtil;
+import com.finalist.cmsc.repository.RepositoryUtil;
 import com.finalist.cmsc.struts.PagerAction;
 
 public abstract class SearchAction extends PagerAction {
@@ -47,7 +49,6 @@
     */
    private static final Logger log = 
Logging.getLoggerInstance(SearchAction.class.getName());
 
-
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request,
          HttpServletResponse response, Cloud cloud) throws Exception {
@@ -62,7 +63,17 @@
       queryStringComposer.addParameter(CONTENTTYPES, 
searchForm.getContenttypes());
 
       // First add the proper step to the query.
-      Step theStep = query.addStep(nodeManager);
+      // CMSC-1260 Content search also finds elements in Recycle bin
+      NodeManager channelNodeManager = 
cloud.getNodeManager(RepositoryUtil.CONTENTCHANNEL);
+      Step channelStep = query.addStep(channelNodeManager);
+      Step theStep = query.addRelationStep(nodeManager, 
RepositoryUtil.CREATIONREL, "SOURCE").getNext();
+      query.setNodeStep(theStep);
+
+      Integer trashNumber = Integer.parseInt(RepositoryUtil.getTrash(cloud));
+      StepField stepField = query.createStepField(channelStep, 
channelNodeManager.getField("number"));
+      FieldValueConstraint channelConstraint = 
query.createConstraint(stepField, FieldCompareConstraint.NOT_EQUAL,
+            trashNumber);
+      SearchUtil.addConstraint(query, channelConstraint);
       query.setNodeStep(theStep);
 
       // Order the result by:
@@ -93,12 +104,10 @@
          Integer objectId = null;
          if (searchForm.getObjectid().matches("^\\d+$")) {
             objectId = Integer.valueOf(searchForm.getObjectid());
-         }
-         else {
+         } else {
             if (cloud.hasNode(searchForm.getObjectid())) {
                objectId = 
Integer.valueOf(cloud.getNode(searchForm.getObjectid()).getNumber());
-            }
-            else {
+            } else {
                objectId = Integer.valueOf(-1);
             }
          }
@@ -110,8 +119,7 @@
       String resultsPerPage = 
PropertiesUtil.getProperty(REPOSITORY_SEARCH_RESULTS_PER_PAGE);
       if (resultsPerPage == null || !resultsPerPage.matches("\\d+")) {
          query.setMaxNumber(25);
-      }
-      else {
+      } else {
          query.setMaxNumber(Integer.parseInt(resultsPerPage));
       }
 
@@ -130,16 +138,15 @@
       searchForm.setResultCount(resultCount);
       searchForm.setResults(results);
       String show = searchForm.getShow();
-      if(StringUtils.isEmpty(show)){
-         show="list";
+      if (StringUtils.isEmpty(show)) {
+         show = "list";
       }
-      request.setAttribute(GETURL, 
queryStringComposer.getQueryString()+"&show="+show);
+      request.setAttribute(GETURL, queryStringComposer.getQueryString() + 
"&show=" + show);
       request.setAttribute(STRICT, searchForm.getStrict());
 
       return super.execute(mapping, form, request, response, cloud);
    }
 
-
    protected abstract void addConstraints(SearchForm searchForm, NodeManager 
nodeManager,
          QueryStringComposer queryStringComposer, NodeQuery query);
 
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to