Package com.dianping.cat.report.page

Source Code of com.dianping.cat.report.page.AbstractReportModel

package com.dianping.cat.report.page;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.unidal.lookup.ContainerLoader;
import org.unidal.web.mvc.Action;
import org.unidal.web.mvc.ActionContext;
import org.unidal.web.mvc.ViewModel;

import com.dianping.cat.Cat;
import com.dianping.cat.core.dal.Project;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.view.DomainNavManager;
import com.dianping.cat.report.view.DomainNavManager.Department;
import com.dianping.cat.report.view.HistoryNav;
import com.dianping.cat.report.view.UrlNav;
import com.dianping.cat.service.HostinfoService;

public abstract class AbstractReportModel<A extends Action, M extends ActionContext<?>> extends
      ViewModel<ReportPage, A, M> {

  private Date m_creatTime;

  private String m_customDate;

  private long m_date;

  private SimpleDateFormat m_dateFormat = new SimpleDateFormat("yyyyMMddHH");

  private SimpleDateFormat m_dayFormat = new SimpleDateFormat("yyyyMMdd");

  private String m_displayDomain;

  private Throwable m_exception;

  private String m_ipAddress;

  private String m_reportType;

  private DomainNavManager m_manager;

  private HostinfoService m_hostinfoService;

  public AbstractReportModel(M ctx) {
    super(ctx);
    try {
      m_manager = ContainerLoader.getDefaultContainer().lookup(DomainNavManager.class);
      m_hostinfoService = ContainerLoader.getDefaultContainer().lookup(HostinfoService.class);
    } catch (Exception e) {
      Cat.logError(e);
    }
  }

  public String getBaseUri() {
    return buildPageUri(getPage().getPath(), null);
  }

  public Date getCreatTime() {
    return m_creatTime;
  }

  // required by current tag()
  public HistoryNav getCurrentNav() {
    return HistoryNav.getByName(m_reportType);
  }

  // required by report tag
  public Date getCurrentTime() {
    return new Date();
  }

  public String getCustomDate() {
    return m_customDate;
  }

  // required by report tag
  public String getDate() {
    if (m_reportType != null && m_reportType.length() > 0) {
      return m_dayFormat.format(new Date(m_date));
    }
    return m_dateFormat.format(new Date(m_date));
  }

  public String getDepartment() {
    String domain = getDomain();

    if (domain != null && m_manager != null) {
      Project project = m_manager.getProjectByName(domain);
      if (project != null) {
        return project.getDepartment();
      }
    }
    return "Default";
  }

  public String getDisplayDomain() {
    return m_displayDomain;
  }

  public String getDisplayHour() {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(m_date);
    int hour = cal.get(Calendar.HOUR_OF_DAY);
    if (hour < 10) {
      return "0" + Integer.toString(hour);
    } else {
      return Integer.toString(hour);
    }
  }

  public String getIpToHostnameStr() {
    return new JsonBuilder().toJson(getIpToHostname());
  }

  public abstract String getDomain();

  public Map<String, Department> getDomainGroups() {
    return m_manager.getDepartment(getDomains());
  }

  // required by report tag
  public abstract Collection<String> getDomains();

  public Throwable getException() {
    return m_exception;
  }

  // required by report tag
  // required by report history tag
  public HistoryNav[] getHistoryNavs() {
    return HistoryNav.values();
  }

  public String getIpAddress() {
    return m_ipAddress;
  }

  public List<String> getIps() {
    return new ArrayList<String>();
  };

  public Map<String, String> getIpToHostname() {
    List<String> ips = getIps();
    Map<String, String> ipToHostname = new HashMap<String, String>();

    for (String ip : ips) {
      String hostname = m_hostinfoService.queryHostnameByIp(ip);

      if (hostname != null && !hostname.equalsIgnoreCase("null")) {
        ipToHostname.put(ip, hostname);
      }
    }

    return ipToHostname;
  }

  public String getLogViewBaseUri() {
    return buildPageUri(ReportPage.LOGVIEW.getPath(), null);
  }

  public long getLongDate() {
    return m_date;
  }

  // required by report tag
  public UrlNav[] getNavs() {
    return UrlNav.values();
  }

  public String getProjectLine() {
    String domain = getDomain();

    if (domain != null && m_manager != null) {
      Project project = m_manager.getProjectByName(domain);
      if (project != null) {
        return project.getProjectLine();
      }
    }
    return "Default";
  }

  public String getReportType() {
    return m_reportType;
  }

  public void setCreatTime(Date creatTime) {
    m_creatTime = creatTime;
  }

  public void setCustomDate(Date start, Date end) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    StringBuilder sb = new StringBuilder();

    sb.append("&startDate=").append(sdf.format(start)).append("&endDate=").append(sdf.format(end));
    m_customDate = sb.toString();
  }

  public void setDisplayDomain(String displayDomain) {
    m_displayDomain = displayDomain;
  }

  public void setException(Throwable exception) {
    m_exception = exception;
  }

  public void setIpAddress(String ipAddress) {
    m_ipAddress = ipAddress;
  }

  public void setLongDate(long date) {
    m_date = date;
  }

  public void setReportType(String reportType) {
    m_reportType = reportType;
  }
}
TOP

Related Classes of com.dianping.cat.report.page.AbstractReportModel

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.