Package com.dianping.cat.system.page.router

Source Code of com.dianping.cat.system.page.router.Handler

package com.dianping.cat.system.page.router;

import java.io.IOException;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;

import org.unidal.lookup.annotation.Inject;
import org.unidal.web.mvc.PageHandler;
import org.unidal.web.mvc.annotation.InboundActionMeta;
import org.unidal.web.mvc.annotation.OutboundActionMeta;
import org.unidal.web.mvc.annotation.PayloadMeta;

import com.dianping.cat.Constants;
import com.dianping.cat.helper.TimeHelper;
import com.dianping.cat.home.router.entity.Domain;
import com.dianping.cat.home.router.entity.RouterConfig;
import com.dianping.cat.home.router.entity.Server;
import com.dianping.cat.report.service.ReportServiceManager;
import com.dianping.cat.system.config.RouterConfigManager;

public class Handler implements PageHandler<Context> {

  @Inject
  private ReportServiceManager m_reportService;

  @Inject
  private RouterConfigManager m_configManager;

  private String buildServerStr(List<Server> servers) {
    StringBuilder sb = new StringBuilder();

    for (Server server : servers) {
      sb.append(server.getId()).append(":").append(server.getPort()).append(";");
    }
    return sb.toString();
  }

  @Override
  @PayloadMeta(Payload.class)
  @InboundActionMeta(name = "router")
  public void handleInbound(Context ctx) throws ServletException, IOException {
    // display only, no action here
  }

  @Override
  @OutboundActionMeta(name = "router")
  public void handleOutbound(Context ctx) throws ServletException, IOException {
    Model model = new Model(ctx);
    Payload payload = ctx.getPayload();
    Action action = payload.getAction();
    Date start = payload.getDate();
    Date end = new Date(start.getTime() + TimeHelper.ONE_DAY);
    RouterConfig report = m_reportService.queryRouterConfigReport(Constants.CAT, start, end);

    switch (action) {
    case API:
      Domain domainConfig = m_configManager.getRouterConfig().findDomain(payload.getDomain());

      if (domainConfig == null) {
        if (report != null) {
          Domain domain = report.findDomain(payload.getDomain());
          String str = null;

          if (domain == null) {
            m_configManager.getRouterConfig().getDefaultServers();

            List<Server> servers = m_configManager.queryServersByDomain(payload.getDomain());

            str = buildServerStr(servers);
          } else {
            List<Server> servers = domain.getServers();

            str = buildServerStr(servers);
          }
          model.setContent(str);
        } else {
          List<Server> servers = m_configManager.queryServersByDomain(payload.getDomain());

          model.setContent(buildServerStr(servers));
        }
      } else {
        model.setContent(buildServerStr(domainConfig.getServers()));
      }
      break;
    case MODEL:
      if (report != null) {
        model.setContent(report.toString());
      }
    }

    ctx.getHttpServletResponse().getWriter().write(model.getContent());
  }
}
TOP

Related Classes of com.dianping.cat.system.page.router.Handler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.