up/down/top/bottom implemented for filters and filter groups
authorzapata <zapata>
Mon, 26 Dec 2005 00:28:52 +0000 (00:28 +0000)
committerzapata <zapata>
Mon, 26 Dec 2005 00:28:52 +0000 (00:28 +0000)
source/mircoders/abuse/FilterEngine.java
source/mircoders/servlet/ServletModuleAbuse.java

index 4032102..392a912 100755 (executable)
@@ -254,7 +254,21 @@ public class FilterEngine {
       Entity entity = DatabaseFilter.getInstance().createNewEntity();
       populateFilterEntity(entity, aType, anExpression, aComments, aTag,
           anArticleAction, aCommentAction);
-      entity.setFieldValue("priority", "1");
+
+
+      String priority = "1";
+
+      if (filters.size() > 0) {
+        try {
+          String lastPriorityString = ((Filter) filters.get(filters.size()-1)).getEntity().getFieldValue("priority");
+          int lastPriority = Integer.parseInt(lastPriorityString);
+          priority = Integer.toString(lastPriority + 1);
+        }
+        catch (Exception e) {
+        }
+      }
+
+      entity.setFieldValue("priority", priority);
       entity.setFieldValue("filter_group_id", getEntity().getId());
       entity.insert();
 
@@ -264,6 +278,73 @@ public class FilterEngine {
       return "";
     }
 
+    public String moveFilterUp(String anId) {
+      Filter filter = getFilterForId(anId);
+      String priority = filter.getEntity().getFieldValue("priority");
+      int index = filters.indexOf(filter);
+      if (index>=1) {
+        Filter filterBefore= (Filter) filters.remove(index-1);
+        filters.add(index, filterBefore);
+        filter.getEntity().setFieldValue("priority", filterBefore.getEntity().getFieldValue("priority"));
+        filterBefore.getEntity().setFieldValue("priority", priority);
+        filter.getEntity().update();
+        filterBefore.getEntity().update();
+      }
+
+      return "";
+    }
+
+    public String moveFilterToTop(String anId) {
+      Filter filter = getFilterForId(anId);
+      String priority = filter.getEntity().getFieldValue("priority");
+      int index = filters.indexOf(filter);
+      if (index>0) {
+        filters.remove(index);
+        Filter filterBefore= (Filter) filters.get(0);
+        filters.add(0, filter);
+        filter.getEntity().setFieldValue("priority", filterBefore.getEntity().getFieldValue("priority"));
+        filterBefore.getEntity().setFieldValue("priority", priority);
+        filter.getEntity().update();
+        filterBefore.getEntity().update();
+      }
+
+      return "";
+    }
+
+    public String moveFilterDown(String anId) {
+      Filter filter = getFilterForId(anId);
+      String priority = filter.getEntity().getFieldValue("priority");
+      int index = filters.indexOf(filter);
+      if (index<filters.size()-1) {
+        Filter filterAfter = (Filter) filters.remove(index+1);
+        filters.add(index, filterAfter);
+        filter.getEntity().setFieldValue("priority", filterAfter.getEntity().getFieldValue("priority"));
+        filterAfter.getEntity().setFieldValue("priority", priority);
+        filter.getEntity().update();
+        filterAfter.getEntity().update();
+      }
+
+      return "";
+    }
+
+    public String moveFilterToBottom(String anId) {
+      Filter filter = getFilterForId(anId);
+      String priority = filter.getEntity().getFieldValue("priority");
+      int index = filters.indexOf(filter);
+      if (index>=0 && index<filters.size()-1) {
+        filters.remove(index);
+        Filter filterBefore= (Filter) filters.get(filters.size()-1);
+        filters.add(filters.size(), filter);
+        filter.getEntity().setFieldValue("priority", filterBefore.getEntity().getFieldValue("priority"));
+        filterBefore.getEntity().setFieldValue("priority", priority);
+        filter.getEntity().update();
+        filterBefore.getEntity().update();
+      }
+
+      return "";
+    }
+
+
     public String getName() {
       return entity.getFieldValue("name");
     }
@@ -392,13 +473,53 @@ public class FilterEngine {
   public synchronized void addFilterGroup(String aName) throws DatabaseExc {
     Entity entity = DatabaseFilterGroup.getInstance().createNewEntity();
     entity.setFieldValue("name", aName);
-    entity.setFieldValue("priority", "1");
+
+    String priority = "1";
+
+    if (filterGroups.size() > 0) {
+      try {
+        String lastPriorityString = ((FilterGroup) filterGroups.get(filterGroups.size()-1)).getEntity().getFieldValue("priority");
+        int lastPriority = Integer.parseInt(lastPriorityString);
+        priority = Integer.toString(lastPriority + 1);
+      }
+      catch (Exception e) {
+      }
+    }
+    entity.setFieldValue("priority", priority);
     entity.insert();
 
     FilterGroup filterGroup = new FilterGroup(entity);
     introduceFilterGroup(filterGroup);
   }
 
+  public synchronized void moveFilterGroupUp(String anId) {
+    FilterGroup group = (FilterGroup) idToFilterGroup.get(anId);
+    String priority = group.getEntity().getFieldValue("priority");
+    int index = filterGroups.indexOf(group);
+    if (index>=1) {
+      FilterGroup groupBefore = (FilterGroup) filterGroups.remove(index-1);
+      filterGroups.add(index, groupBefore);
+      group.getEntity().setFieldValue("priority", groupBefore.getEntity().getFieldValue("priority"));
+      groupBefore.getEntity().setFieldValue("priority", priority);
+      group.getEntity().update();
+      groupBefore.getEntity().update();
+    }
+  }
+
+  public synchronized void moveFilterGroupDown(String anId) {
+    FilterGroup group = (FilterGroup) idToFilterGroup.get(anId);
+    String priority = group.getEntity().getFieldValue("priority");
+    int index = filterGroups.indexOf(group);
+    if (index<filterGroups.size()-1) {
+      FilterGroup groupAfter = (FilterGroup) filterGroups.remove(index+1);
+      filterGroups.add(index, groupAfter);
+      group.getEntity().setFieldValue("priority", groupAfter.getEntity().getFieldValue("priority"));
+      groupAfter.getEntity().setFieldValue("priority", priority);
+      group.getEntity().update();
+      groupAfter.getEntity().update();
+    }
+  }
+
   public synchronized void deleteFilterGroup(String anId) {
 
     FilterGroup filterGroup = getFilterGroupForId(anId);
@@ -432,6 +553,23 @@ public class FilterEngine {
         aComments, aTag, anArticleAction, aCommentAction);
   }
 
+  public synchronized String moveFilterUp(String aGroupId, String anId) {
+    return getFilterGroupForId(aGroupId).moveFilterUp(anId);
+  }
+
+  public synchronized String moveFilterDown(String aGroupId, String anId) {
+    return getFilterGroupForId(aGroupId).moveFilterDown(anId);
+  }
+
+  public synchronized String moveFilterToTop(String aGroupId, String anId) {
+    return getFilterGroupForId(aGroupId).moveFilterToTop(anId);
+  }
+
+  public synchronized String moveFilterToBottom(String aGroupId, String anId) {
+    return getFilterGroupForId(aGroupId).moveFilterToBottom(anId);
+  }
+
+
 
   public FilterGroup getFilterGroupForId(String anId) {
     FilterGroup result = (FilterGroup) idToFilterGroup.get(anId);
index e0463e3..5cb0ded 100755 (executable)
@@ -154,6 +154,47 @@ public class ServletModuleAbuse extends AdminServletModule {
     }
   }
 
+  public void movefilterup(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String id=requestParser.getParameter("id");
+    String groupid=requestParser.getParameter("groupid");
+
+    MirGlobal.abuse().getFilterEngine().moveFilterUp(groupid, id);
+    listfilters(aRequest, aResponse);
+  }
+
+
+  public void movefilterdown(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String id=requestParser.getParameter("id");
+    String groupid=requestParser.getParameter("groupid");
+
+    MirGlobal.abuse().getFilterEngine().moveFilterDown(groupid, id);
+    listfilters(aRequest, aResponse);
+  }
+
+  public void movefiltertop(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String id=requestParser.getParameter("id");
+    String groupid=requestParser.getParameter("groupid");
+
+    MirGlobal.abuse().getFilterEngine().moveFilterToTop(groupid, id);
+    listfilters(aRequest, aResponse);
+  }
+
+  public void movefilterbottom(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String id=requestParser.getParameter("id");
+    String groupid=requestParser.getParameter("groupid");
+
+    MirGlobal.abuse().getFilterEngine().moveFilterToBottom(groupid, id);
+    listfilters(aRequest, aResponse);
+  }
+
   public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
 
@@ -176,6 +217,28 @@ public class ServletModuleAbuse extends AdminServletModule {
     showfiltergroups(aRequest, aResponse);
   }
 
+  public void movefiltergroupup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String groupid=requestParser.getParameter("groupid");
+    MirGlobal.abuse().getFilterEngine().moveFilterGroupUp(groupid);
+
+    MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filtergroup:"+groupid, "filter group moved upwards");
+
+    showfiltergroups(aRequest, aResponse);
+  }
+
+  public void movefiltergroupdown(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String groupid=requestParser.getParameter("groupid");
+    MirGlobal.abuse().getFilterEngine().moveFilterGroupDown(groupid);
+
+    MirGlobal.logAdminUsage(ServletHelper.getUser(aRequest), getName() + ":" + "filtergroup:"+groupid, "filter group moved downwards");
+
+    showfiltergroups(aRequest, aResponse);
+  }
+
   public void showfilterconfiguration(HttpServletRequest aRequest, HttpServletResponse aResponse) {
     showfiltergroups(aRequest, aResponse);
   }