package com.cmos.msgframe.admin.action;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.cmos.msgframe.admin.service.IConsumerService;
import com.cmos.msgframe.common.util.OutPutParameter;

/**
 * 项目名称：cmos-msg-admin 类名称：ConsumerAction 类描述： 消费订阅组管理控制层 创建人：guozq5
 * 创建时间：2016-11-11 上午10:34:35 修改人：guozq5 修改时间：2016-11-11 上午10:34:35 修改备注：
 * 
 * @version
 * 
 */
@Controller
@RequestMapping("/consumer")
public class ConsumerController {
	@Resource
	private IConsumerService consumerService;

	/**
	 * @Title: getConsumerList
	 * @Description: 或者消费者的消费情况
	 * @param @param consumerGroup
	 * @param @param topic
	 * @param @param start
	 * @param @param end
	 * @param @return
	 * @param @throws Exception
	 * @return List<Map> 返回类型
	 * @throws
	 */
	@RequestMapping(value = "/list", method = RequestMethod.POST)
	@ResponseBody
	public OutPutParameter getConsumerList(HttpServletRequest request) throws Exception {
		int start = Integer.parseInt(request.getParameter("start"));		
		int end = Integer.parseInt(request.getParameter("limit"));
		String consumerGroup = request.getParameter("consumerGroup");
		String topic = request.getParameter("topic");
		return consumerService.getConsumerList(consumerGroup, topic, start, end+start);
	}

	/**
	 * @Title: getConsumerStats
	 * @Description: 获取消费组的详细信息
	 * @param @param consumerGroup
	 * @param @return
	 * @param @throws Exception
	 * @return List<Map> 返回类型
	 * @throws
	 */
	@RequestMapping(value = "/detail", method = RequestMethod.POST)
	@ResponseBody
	public OutPutParameter getConsumerStats(HttpServletRequest request)
			throws Exception {
		int start = Integer.parseInt(request.getParameter("start"));		
		int end = Integer.parseInt(request.getParameter("limit"));
		String consumerGroup = request.getParameter("consumerGroup");
		return consumerService.getConsumerStats(consumerGroup,start,end+start);
	}

	/**
	 * @Title: addSubgroup
	 * @Description: 新增订阅组
	 * @param @param brokerAddr
	 * @param @param clusterName
	 * @param @param groupName
	 * @param @param consumeEnable
	 * @param @param consumeFromMinEnable
	 * @param @param consumeBroadcastEnable
	 * @param @param retryQueueNums
	 * @param @param retryMaxTimes
	 * @param @param brokerId
	 * @param @return
	 * @param @throws Exception
	 * @return boolean 返回类型
	 * @throws
	 */
	@RequestMapping(value = "/add", method = RequestMethod.POST)
	@ResponseBody
	public OutPutParameter addSubgroup(HttpServletRequest request) throws Exception {
		String groupName = request.getParameter("groupName");
		return consumerService.addSubgroup(null, null, groupName, null, null,
				null, null, null, null);
	}

	/**
	 * @Title: updateSubgroup
	 * @Description: 修改订阅组
	 * @param @param brokerAddr
	 * @param @param clusterName
	 * @param @param groupName
	 * @param @param consumeEnable
	 * @param @param consumeFromMinEnable
	 * @param @param consumeBroadcastEnable
	 * @param @param retryQueueNums
	 * @param @param retryMaxTimes
	 * @param @param brokerId
	 * @param @return
	 * @param @throws Exception
	 * @return boolean 返回类型
	 * @throws
	 */
	@RequestMapping(value = "/update", method = RequestMethod.POST)
	@ResponseBody
	public OutPutParameter updateSubgroup(HttpServletRequest request) throws Exception {
		String brokerAddr = request.getParameter("brokerAddr");
		String clusterName = request.getParameter("clusterName");
		String groupName = request.getParameter("groupName");
		String consumeEnable = request.getParameter("consumeEnable");
		String consumeFromMinEnable = request.getParameter("consumeFromMinEnable");
		String consumeBroadcastEnable = request.getParameter("consumeBroadcastEnable");
		String retryQueueNums = request.getParameter("retryQueueNums");
		String retryMaxTimes = request.getParameter("retryMaxTimes");
		String brokerId = request.getParameter("brokerId");
		return consumerService
				.updateSubgroup(brokerAddr, clusterName, groupName,
						consumeEnable, consumeFromMinEnable,
						consumeBroadcastEnable, retryQueueNums, retryMaxTimes,
						brokerId);
	}

	/**
	 * @Title: deleteSubgroup
	 * @Description:删除订阅组
	 * @param @param clusterName
	 * @param @param groupName
	 * @param @return
	 * @param @throws Exception
	 * @return boolean 返回类型
	 * @throws
	 */
	@RequestMapping(value = "/delete", method = RequestMethod.POST)
	@ResponseBody
	public OutPutParameter deleteSubgroup(HttpServletRequest request) throws Exception {
		String groupName = request.getParameter("groupName");
		String clusterName = request.getParameter("clusterName");
		return consumerService.deleteSubgroup(clusterName, groupName);
	}
}
