@Override
  public int swapCommentGroupRestriction(String groupName, String swapGroup) {
    if (groupName == null) {
      throw new IllegalArgumentException("You must provide a non null group name.");
    }

    if (swapGroup == null) {
      throw new IllegalArgumentException("You must provide a non null swap group name.");
    }

    return delegator.bulkUpdateByAnd(
        "Action",
        FieldMap.build("level", swapGroup),
        FieldMap.build("level", groupName, "type", ActionConstants.TYPE_COMMENT));
  }
 @Override
 public ChangeItemBean delete(Comment comment) {
   ChangeItemBean changeItemBean = constructChangeItemBeanForCommentDelete(comment);
   // TODO: move this into the Store (when it gets created)
   delegator.removeByAnd(
       "Action", FieldMap.build("id", comment.getId(), "type", ActionConstants.TYPE_COMMENT));
   this.jsonEntityPropertyManager.deleteByEntity(
       EntityPropertyType.COMMENT_PROPERTY.getDbEntityName(), comment.getId());
   return changeItemBean;
 }
  @Override
  public long getCountForCommentsRestrictedByGroup(String groupName) {
    if (groupName == null) {
      throw new IllegalArgumentException("You must provide a non null group name.");
    }

    EntityCondition condition =
        new EntityFieldMap(
            FieldMap.build("level", groupName, "type", ActionConstants.TYPE_COMMENT),
            EntityOperator.AND);
    List commentCount =
        delegator.findByCondition(
            "ActionCount", condition, EasyList.build("count"), Collections.EMPTY_LIST);
    if (commentCount != null && commentCount.size() == 1) {
      GenericValue commentCountGV = (GenericValue) commentCount.get(0);
      return commentCountGV.getLong("count").longValue();
    } else {
      throw new DataAccessException("Unable to access the count for the Action table");
    }
  }