Author: nico
Date: 2009-11-18 15:49:22 +0100 (Wed, 18 Nov 2009)
New Revision: 39776

Added:
   
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/AbstractSearchAction.java
   
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/ResourceSearchAction.java
Removed:
   
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/SearchAction.java
Modified:
   
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/AttachmentAction.java
   
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/ImageAction.java
   
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/UrlAction.java
   
CMSContainer/branches/b1_7/CMSContainer_Modules/directreaction/src/java/com/finalist/cmsc/resources/forms/DeleteReactionAction.java
   
CMSContainer/branches/b1_7/CMSContainer_Modules/directreaction/src/java/com/finalist/cmsc/resources/forms/ReactionAction.java
Log:
List and delete reactions fixed

Added: 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/AbstractSearchAction.java
===================================================================
--- 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/AbstractSearchAction.java
                         (rev 0)
+++ 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/AbstractSearchAction.java
 2009-11-18 14:49:22 UTC (rev 39776)
@@ -0,0 +1,138 @@
+package com.finalist.cmsc.resources.forms;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.struts.action.*;
+import org.mmbase.bridge.*;
+import org.mmbase.bridge.util.Queries;
+import org.mmbase.bridge.util.SearchUtil;
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
+
+import com.finalist.cmsc.mmbase.PropertiesUtil;
+import com.finalist.cmsc.struts.PagerAction;
+
+public abstract class AbstractSearchAction  extends PagerAction {
+
+   public static final String NUMBER_FIELD = "number";
+
+   private static final String GETURL = "geturl";
+   private static final String STRICT = "strict";
+
+   private static final String OBJECTID = "objectid";
+   private static final String CONTENTTYPES = "contenttypes";
+
+   private static final String REPOSITORY_SEARCH_RESULTS_PER_PAGE = 
"repository.search.results.per.page";
+
+   /**
+    * MMbase logging system
+    */
+   private static final Logger log = 
Logging.getLoggerInstance(ResourceSearchAction.class.getName());
+
+   @Override
+   public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request,
+         HttpServletResponse response, Cloud cloud) throws Exception {
+
+      // Initialize
+      SearchForm searchForm = (SearchForm) form;
+      NodeManager nodeManager = 
cloud.getNodeManager(searchForm.getContenttypes());
+      QueryStringComposer queryStringComposer = new QueryStringComposer();
+      NodeQuery query = cloud.createNodeQuery();
+
+      // First we add the contenttype parameter
+      queryStringComposer.addParameter(CONTENTTYPES, 
searchForm.getContenttypes());
+
+      addStepsToQuery(cloud, searchForm, nodeManager, query);
+
+      // Order the result by:
+      String order = searchForm.getOrder();
+
+      // set default order field
+      if (StringUtils.isEmpty(order)) {
+         if (nodeManager.hasField("title")) {
+            order = "title";
+         }
+         if (nodeManager.hasField("name")) {
+            order = "name";
+         }
+      }
+
+      if (StringUtils.isNotEmpty(order)) {
+         queryStringComposer.addParameter(ORDER, order);
+         queryStringComposer.addParameter(DIRECTION, "" + 
searchForm.getDirection());
+         query.addSortOrder(query.getStepField(nodeManager.getField(order)), 
searchForm.getDirection());
+      }
+
+      query.setDistinct(true);
+
+      addConstraints(searchForm, nodeManager, queryStringComposer, query);
+
+      // Set the objectid constraint
+      if (StringUtils.isNotEmpty(searchForm.getObjectid())) {
+         Integer objectId = null;
+         if (searchForm.getObjectid().matches("^\\d+$")) {
+            objectId = Integer.valueOf(searchForm.getObjectid());
+         } else {
+            if (cloud.hasNode(searchForm.getObjectid())) {
+               objectId = 
Integer.valueOf(cloud.getNode(searchForm.getObjectid()).getNumber());
+            } else {
+               objectId = Integer.valueOf(-1);
+            }
+         }
+         SearchUtil.addEqualConstraint(query, nodeManager, NUMBER_FIELD, 
objectId);
+         queryStringComposer.addParameter(OBJECTID, searchForm.getObjectid());
+      }
+
+      // Set the maximum result size.
+      String resultsPerPage = 
PropertiesUtil.getProperty(REPOSITORY_SEARCH_RESULTS_PER_PAGE);
+      if (resultsPerPage == null || !resultsPerPage.matches("\\d+")) {
+         query.setMaxNumber(25);
+      } else {
+         query.setMaxNumber(Integer.parseInt(resultsPerPage));
+      }
+
+      // Set the offset (used for paging).
+      if (searchForm.getOffset() != null && 
searchForm.getOffset().matches("\\d+")) {
+         query.setOffset(query.getMaxNumber() * 
Integer.parseInt(searchForm.getOffset()));
+         queryStringComposer.addParameter(OFFSET, searchForm.getOffset());
+      }
+
+      log.debug("QUERY: " + query);
+
+      int resultCount = Queries.count(query);
+      NodeList results = nodeManager.getList(query);
+
+      // Set everyting on the request.
+      searchForm.setResultCount(resultCount);
+      searchForm.setResults(results);
+      String show = searchForm.getShow();
+      if (StringUtils.isEmpty(show)) {
+         show = "list";
+      }
+      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);
+
+   protected abstract void addStepsToQuery(Cloud cloud, SearchForm searchForm, 
NodeManager nodeManager, NodeQuery query);
+   
+   protected void addField(NodeManager nodeManager, QueryStringComposer 
queryStringComposer, NodeQuery query,
+         String fieldname, String value) {
+      if (StringUtils.isNotEmpty(value)) {
+         Field field = nodeManager.getField(fieldname);
+         if (field.getType() == Field.TYPE_BOOLEAN) {
+            Queries.addConstraints(query, fieldname + "=" + value);
+         } else {
+            SearchUtil.addLikeConstraint(query, field, value);
+         }
+         queryStringComposer.addParameter(fieldname, value);
+      }
+   }
+
+}

Modified: 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/AttachmentAction.java
===================================================================
--- 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/AttachmentAction.java
     2009-11-18 14:26:17 UTC (rev 39775)
+++ 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/AttachmentAction.java
     2009-11-18 14:49:22 UTC (rev 39776)
@@ -7,7 +7,7 @@
  * @author Billy
  *
  */
-public class AttachmentAction extends SearchAction {
+public class AttachmentAction extends ResourceSearchAction {
 
    public static final String TITLE_FIELD = "title";
    public static final String DESCRIPTION_FIELD = "description";

Modified: 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/ImageAction.java
===================================================================
--- 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/ImageAction.java
  2009-11-18 14:26:17 UTC (rev 39775)
+++ 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/ImageAction.java
  2009-11-18 14:49:22 UTC (rev 39776)
@@ -3,7 +3,7 @@
 import org.mmbase.bridge.NodeManager;
 import org.mmbase.bridge.NodeQuery;
 
-public class ImageAction extends SearchAction {
+public class ImageAction extends ResourceSearchAction {
 
    public static final String TITLE_FIELD = "title";
    public static final String DESCRIPTION_FIELD = "description";

Copied: 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/ResourceSearchAction.java
 (from rev 39762, 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/SearchAction.java)
===================================================================
--- 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/ResourceSearchAction.java
                         (rev 0)
+++ 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/ResourceSearchAction.java
 2009-11-18 14:49:22 UTC (rev 39776)
@@ -0,0 +1,43 @@
+/*
+ * 
+ * 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;
+
+import org.apache.commons.lang.StringUtils;
+import org.mmbase.bridge.*;
+import org.mmbase.bridge.util.SearchUtil;
+import org.mmbase.storage.search.*;
+
+import com.finalist.cmsc.repository.RepositoryUtil;
+
+public abstract class ResourceSearchAction extends AbstractSearchAction {
+
+   protected void addStepsToQuery(Cloud cloud, SearchForm searchForm, 
NodeManager nodeManager, NodeQuery query) {
+      // First add the proper step to the query.
+      // 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);
+
+     if (StringUtils.isNotEmpty(searchForm.getContentChannel())) {
+         Integer ContentChannelNumber = 
Integer.parseInt(searchForm.getContentChannel());
+         StepField stepField = query.createStepField(channelStep, 
channelNodeManager.getField("number"));
+         FieldValueConstraint channelConstraint = 
query.createConstraint(stepField, FieldCompareConstraint.EQUAL,
+               ContentChannelNumber);
+         SearchUtil.addConstraint(query, channelConstraint);
+      } else {
+         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);
+   }
+   
+}

Deleted: 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/SearchAction.java
===================================================================
--- 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/SearchAction.java
 2009-11-18 14:26:17 UTC (rev 39775)
+++ 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/SearchAction.java
 2009-11-18 14:49:22 UTC (rev 39776)
@@ -1,174 +0,0 @@
-/*
- * 
- * 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;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-import org.mmbase.bridge.Cloud;
-import org.mmbase.bridge.Field;
-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.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 {
-
-   public static final String NUMBER_FIELD = "number";
-
-   private static final String GETURL = "geturl";
-   private static final String STRICT = "strict";
-
-   private static final String OBJECTID = "objectid";
-   private static final String CONTENTTYPES = "contenttypes";
-
-   private static final String REPOSITORY_SEARCH_RESULTS_PER_PAGE = 
"repository.search.results.per.page";
-
-   /**
-    * MMbase logging system
-    */
-   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 {
-
-      // Initialize
-      SearchForm searchForm = (SearchForm) form;
-      NodeManager nodeManager = 
cloud.getNodeManager(searchForm.getContenttypes());
-      QueryStringComposer queryStringComposer = new QueryStringComposer();
-      NodeQuery query = cloud.createNodeQuery();
-
-      // First we add the contenttype parameter
-      queryStringComposer.addParameter(CONTENTTYPES, 
searchForm.getContenttypes());
-
-      // First add the proper step to the query.
-      // 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);
-
-     if (StringUtils.isNotEmpty(searchForm.getContentChannel())) {
-         Integer ContentChannelNumber = 
Integer.parseInt(searchForm.getContentChannel());
-         StepField stepField = query.createStepField(channelStep, 
channelNodeManager.getField("number"));
-         FieldValueConstraint channelConstraint = 
query.createConstraint(stepField, FieldCompareConstraint.EQUAL,
-               ContentChannelNumber);
-         SearchUtil.addConstraint(query, channelConstraint);
-      } else if (!"reaction".equalsIgnoreCase(searchForm.getContenttypes())) {
-         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:
-      String order = searchForm.getOrder();
-
-      // set default order field
-      if (StringUtils.isEmpty(order)) {
-         if (nodeManager.hasField("title")) {
-            order = "title";
-         }
-         if (nodeManager.hasField("name")) {
-            order = "name";
-         }
-      }
-
-      if (StringUtils.isNotEmpty(order)) {
-         queryStringComposer.addParameter(ORDER, order);
-         queryStringComposer.addParameter(DIRECTION, "" + 
searchForm.getDirection());
-         query.addSortOrder(query.getStepField(nodeManager.getField(order)), 
searchForm.getDirection());
-      }
-
-      query.setDistinct(true);
-
-      addConstraints(searchForm, nodeManager, queryStringComposer, query);
-
-      // Set the objectid constraint
-      if (StringUtils.isNotEmpty(searchForm.getObjectid())) {
-         Integer objectId = null;
-         if (searchForm.getObjectid().matches("^\\d+$")) {
-            objectId = Integer.valueOf(searchForm.getObjectid());
-         } else {
-            if (cloud.hasNode(searchForm.getObjectid())) {
-               objectId = 
Integer.valueOf(cloud.getNode(searchForm.getObjectid()).getNumber());
-            } else {
-               objectId = Integer.valueOf(-1);
-            }
-         }
-         SearchUtil.addEqualConstraint(query, nodeManager, NUMBER_FIELD, 
objectId);
-         queryStringComposer.addParameter(OBJECTID, searchForm.getObjectid());
-      }
-
-      // Set the maximum result size.
-      String resultsPerPage = 
PropertiesUtil.getProperty(REPOSITORY_SEARCH_RESULTS_PER_PAGE);
-      if (resultsPerPage == null || !resultsPerPage.matches("\\d+")) {
-         query.setMaxNumber(25);
-      } else {
-         query.setMaxNumber(Integer.parseInt(resultsPerPage));
-      }
-
-      // Set the offset (used for paging).
-      if (searchForm.getOffset() != null && 
searchForm.getOffset().matches("\\d+")) {
-         query.setOffset(query.getMaxNumber() * 
Integer.parseInt(searchForm.getOffset()));
-         queryStringComposer.addParameter(OFFSET, searchForm.getOffset());
-      }
-
-      log.debug("QUERY: " + query);
-
-      int resultCount = Queries.count(query);
-      NodeList results = nodeManager.getList(query);
-
-      // Set everyting on the request.
-      searchForm.setResultCount(resultCount);
-      searchForm.setResults(results);
-      String show = searchForm.getShow();
-      if (StringUtils.isEmpty(show)) {
-         show = "list";
-      }
-      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);
-
-   protected void addField(NodeManager nodeManager, QueryStringComposer 
queryStringComposer, NodeQuery query,
-         String fieldname, String value) {
-      if (StringUtils.isNotEmpty(value)) {
-         Field field = nodeManager.getField(fieldname);
-         if (field.getType() == Field.TYPE_BOOLEAN) {
-            Queries.addConstraints(query, fieldname + "=" + value);
-         } else {
-            SearchUtil.addLikeConstraint(query, field, value);
-         }
-         queryStringComposer.addParameter(fieldname, value);
-      }
-   }
-
-}

Modified: 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/UrlAction.java
===================================================================
--- 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/UrlAction.java
    2009-11-18 14:26:17 UTC (rev 39775)
+++ 
CMSContainer/branches/b1_7/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/resources/forms/UrlAction.java
    2009-11-18 14:49:22 UTC (rev 39776)
@@ -3,7 +3,7 @@
 import org.mmbase.bridge.NodeManager;
 import org.mmbase.bridge.NodeQuery;
 
-public class UrlAction extends SearchAction {
+public class UrlAction extends ResourceSearchAction {
 
    public static final String TITLE_FIELD = "title";
    public static final String DESCRIPTION_FIELD = "description";

Modified: 
CMSContainer/branches/b1_7/CMSContainer_Modules/directreaction/src/java/com/finalist/cmsc/resources/forms/DeleteReactionAction.java
===================================================================
--- 
CMSContainer/branches/b1_7/CMSContainer_Modules/directreaction/src/java/com/finalist/cmsc/resources/forms/DeleteReactionAction.java
 2009-11-18 14:26:17 UTC (rev 39775)
+++ 
CMSContainer/branches/b1_7/CMSContainer_Modules/directreaction/src/java/com/finalist/cmsc/resources/forms/DeleteReactionAction.java
 2009-11-18 14:49:22 UTC (rev 39776)
@@ -27,7 +27,11 @@
           
MMBaseAction.ADMINISTRATOR.equals(cloud.getUser().getRank().toString())) {
          log.debug("deleting secondary content: " + number);
          Cloud remoteCloud = ReactionUtil.getRemoteCloud(cloud);
-         remoteCloud.getNode(number).delete(true);
+         
+         /* Only remove the relations because the an event listener will 
remove the reaction 
+          * @see com.finalist.cmsc.directreaction.ContentElementEventListener
+          */
+         remoteCloud.getNode(number).deleteRelations();
       }
       else {
          log.warn("Could not delete direct reaction, because user was not 
siteadmin or admin: " + number + " ("

Modified: 
CMSContainer/branches/b1_7/CMSContainer_Modules/directreaction/src/java/com/finalist/cmsc/resources/forms/ReactionAction.java
===================================================================
--- 
CMSContainer/branches/b1_7/CMSContainer_Modules/directreaction/src/java/com/finalist/cmsc/resources/forms/ReactionAction.java
       2009-11-18 14:26:17 UTC (rev 39775)
+++ 
CMSContainer/branches/b1_7/CMSContainer_Modules/directreaction/src/java/com/finalist/cmsc/resources/forms/ReactionAction.java
       2009-11-18 14:49:22 UTC (rev 39776)
@@ -14,7 +14,7 @@
 
 import com.finalist.cmsc.directreaction.util.ReactionUtil;
 
-public class ReactionAction extends SearchAction {
+public class ReactionAction extends AbstractSearchAction {
 
    private static final Logger log = 
Logging.getLoggerInstance(ReactionAction.class.getName());
 
@@ -47,7 +47,15 @@
       return mapping.getInputForward();
    }
 
+   @Override
+   protected void addStepsToQuery(Cloud cloud, SearchForm searchForm, 
NodeManager nodeManager,
+         NodeQuery query) {
 
+      // First add the proper step to the query.
+      Step theStep = query.addStep(nodeManager);
+      query.setNodeStep(theStep);
+   }
+
    @Override
    public Cloud getCloud() {
       /* It should use the staging cloud if it runs in single-war mode.

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to