提交 255dba5b 编写于 作者: Y You Yong

add the sql report

上级 e16aee58
<?xml version="1.0" encoding="utf-8"?>
<data-sources>
<data-source id="cat">
<maximum-pool-size>3</maximum-pool-size>
<connection-timeout>1s</connection-timeout>
<idle-timeout>10m</idle-timeout>
<statement-cache-size>1000</statement-cache-size>
<properties>
<driver>com.mysql.jdbc.Driver</driver>
<url><![CDATA[jdbc:mysql://localhost:3306/cat]]></url>
<user>root</user>
<password>123456</password>
<connectionProperties><![CDATA[useUnicode=true&autoReconnect=true]]></connectionProperties>
</properties>
</data-source>
</data-sources>
......@@ -46,6 +46,11 @@
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-2.1</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.site.common</groupId>
<artifactId>test-framework</artifactId>
......
......@@ -9,6 +9,8 @@ import com.site.web.mvc.annotation.ModulePagesMeta;
com.dianping.cat.report.page.home.Handler.class,
com.dianping.cat.report.page.problem.Handler.class,
com.dianping.cat.report.page.transaction.Handler.class,
com.dianping.cat.report.page.logview.Handler.class,
......@@ -17,7 +19,7 @@ com.dianping.cat.report.page.ip.Handler.class,
com.dianping.cat.report.page.model.Handler.class,
com.dianping.cat.report.page.problem.Handler.class
com.dianping.cat.report.page.sql.Handler.class
})
public class ReportModule extends AbstractModule {
......
......@@ -7,19 +7,17 @@ public enum ReportPage implements Page {
HOME("home", "home", "Home", "CAT Home Page.", true),
TRANSACTION("transaction", "t", "Transaction", "CAT summary report for Transactions in current hour.", true),
PROBLEM("problem", "p", "Problem", "Problem discovered", true),
FAILURE("failure", "f", "Failure", "CAT details report for failed messages in current hour.", true),
TRANSACTION("transaction", "t", "Transaction", "Transaction summary report", true),
LOGVIEW("logview", "m", "Logview", "CAT log details view for a given message.", false),
LOGVIEW("logview", "m", "Logview", "Log view details", false),
IP("ip", "ip", "Top IP List", "Top visited IP list in current hour.", true),
IP("ip", "ip", "Top IP List", "Top visited IP addresses", true),
SERVICE("service", "service", "Service", "Service Home", false),
MODEL("model", "model", "Model", "Service model", false),
MODEL("model", "model", "Model", "Model Service", false),
PROBLEM("problem", "p", "Problem", "Problem", true);
SQL("sql", "sql", "Sql", "Sql", true);
private String m_name;
......
package com.dianping.cat.report.page.sql;
public enum Action implements com.site.web.mvc.Action {
VIEW("view");
private String m_name;
private Action(String name) {
m_name = name;
}
public static Action getByName(String name, Action defaultAction) {
for (Action action : Action.values()) {
if (action.getName().equals(name)) {
return action;
}
}
return defaultAction;
}
@Override
public String getName() {
return m_name;
}
}
package com.dianping.cat.report.page.sql;
import com.dianping.cat.report.ReportContext;
public class Context extends ReportContext<Payload> {
}
package com.dianping.cat.report.page.sql;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import com.dianping.cat.job.sql.dal.SqlReportRecord;
import com.dianping.cat.job.sql.dal.SqlReportRecordDao;
import com.dianping.cat.job.sql.dal.SqlReportRecordEntity;
import com.dianping.cat.report.ReportPage;
import com.site.dal.jdbc.DalException;
import com.site.dal.jdbc.Readset;
import com.site.lookup.annotation.Inject;
import com.site.web.mvc.PageHandler;
import com.site.web.mvc.annotation.InboundActionMeta;
import com.site.web.mvc.annotation.OutboundActionMeta;
import com.site.web.mvc.annotation.PayloadMeta;
public class Handler implements PageHandler<Context> {
@Inject
private JspViewer m_jspViewer;
@Inject
private SqlReportRecordDao m_dao;
@Override
@PayloadMeta(Payload.class)
@InboundActionMeta(name = "sql")
public void handleInbound(Context ctx) throws ServletException, IOException {
// display only, no action here
}
@Override
@OutboundActionMeta(name = "sql")
public void handleOutbound(Context ctx) throws ServletException, IOException {
Model model = new Model(ctx);
model.setAction(Action.VIEW);
model.setPage(ReportPage.SQL);
Payload payload = ctx.getPayload();
SqlReport report = new SqlReport();
String domain = payload.getDomain();
long startDate = payload.getDate();
model.setDate(startDate);
Date transactiondate = new Date(startDate);
List<String> domains = new ArrayList<String>();
Readset<SqlReportRecord> domainSet = SqlReportRecordEntity.READSET_DOMAIN;
List<SqlReportModel> sqlRecordModels = new ArrayList<SqlReportModel>();
try {
List<SqlReportRecord> recordsForDomain = m_dao.findAllDistinctByDate(transactiondate, domainSet);
if (recordsForDomain != null) {
for (SqlReportRecord record : recordsForDomain) {
domains.add(record.getDomain());
}
} else {
if (domain != null) {
domains.add(domain);
}
}
if (domain == null && domains.size() > 0) {
domain = domains.get(0);
}
List<SqlReportRecord> reportRecords = m_dao.findAllByDomainAndDate(domain, transactiondate, SqlReportRecordEntity.READSET_FULL);
if (reportRecords != null) {
for (SqlReportRecord record : reportRecords) {
sqlRecordModels.add(new SqlReportModel(record));
}
}
if (domain != null) {
reportRecords = m_dao.findAllByDomainAndDate(domain, transactiondate, domainSet);
}
report.setDomain(domain).setDomains(domains).setReportRecords(sqlRecordModels);
report.setStartTime(new Date(startDate)).setEndTime(new Date(startDate + 60 * 60 * 1000 - 100));
model.setReport(report);
} catch (DalException e) {
e.printStackTrace();
}
m_jspViewer.view(ctx, model);
}
}
package com.dianping.cat.report.page.sql;
public enum JspFile {
VIEW("/jsp/report/sql.jsp"),
;
private String m_path;
private JspFile(String path) {
m_path = path;
}
public String getPath() {
return m_path;
}
}
package com.dianping.cat.report.page.sql;
import com.dianping.cat.report.ReportPage;
import com.site.web.mvc.view.BaseJspViewer;
public class JspViewer extends BaseJspViewer<ReportPage, Action, Context, Model> {
@Override
protected String getJspFilePath(Context ctx, Model model) {
Action action = model.getAction();
switch (action) {
case VIEW:
return JspFile.VIEW.getPath();
}
throw new RuntimeException("Unknown action: " + action);
}
}
package com.dianping.cat.report.page.sql;
import java.util.Collection;
import java.util.Collections;
import com.dianping.cat.report.page.AbstractReportModel;
public class Model extends AbstractReportModel<Action, Context> {
private SqlReport m_report;
public Model(Context ctx) {
super(ctx);
}
@Override
public Action getDefaultAction() {
return Action.VIEW;
}
public SqlReport getReport() {
return m_report;
}
public void setReport(SqlReport report) {
this.m_report = report;
}
@Override
public String getDomain() {
if (m_report == null) {
return null;
} else {
return m_report.getDomain();
}
}
@Override
public Collection<String> getDomains() {
if (m_report == null) {
return Collections.emptySet();
} else {
return m_report.getDomains();
}
}
}
package com.dianping.cat.report.page.sql;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.AbstractReportPayload;
import com.dianping.cat.report.page.transaction.Action;
import com.site.web.mvc.ActionContext;
import com.site.web.mvc.payload.annotation.FieldMeta;
public class Payload extends AbstractReportPayload<Action> {
private ReportPage m_page;
@FieldMeta("op")
private Action m_action;
public Payload() {
super(ReportPage.SQL);
}
public void setAction(Action action) {
m_action = action;
}
@Override
public Action getAction() {
return m_action;
}
@Override
public ReportPage getPage() {
return m_page;
}
@Override
public void setPage(String page) {
m_page = ReportPage.getByName(page, ReportPage.SQL);
}
@Override
public void validate(ActionContext<?> ctx) {
}
}
package com.dianping.cat.report.page.sql;
import java.util.Date;
import java.util.List;
public class SqlReport {
private Date m_startTime;
private Date m_endTime;
private List<String> m_domains;
private String m_domain;
private List<SqlReportModel> m_reportRecords;
public Date getStartTime() {
return m_startTime;
}
public SqlReport setStartTime(Date startTime) {
m_startTime = startTime;
return this;
}
public Date getEndTime() {
return m_endTime;
}
public SqlReport setEndTime(Date endTime) {
m_endTime = endTime;
return this;
}
public List<String> getDomains() {
return m_domains;
}
public SqlReport setDomains(List<String> domains) {
m_domains = domains;
return this;
}
public String getDomain() {
return m_domain;
}
public SqlReport setDomain(String domain) {
m_domain = domain;
return this;
}
public List<SqlReportModel> getReportRecords() {
return m_reportRecords;
}
public void setReportRecords(List<SqlReportModel> reportRecords) {
m_reportRecords = reportRecords;
}
}
package com.dianping.cat.report.page.sql;
import java.text.DecimalFormat;
import com.dianping.cat.job.sql.dal.SqlReportRecord;
public class SqlReportModel {
private SqlReportRecord m_record;
private DecimalFormat percent = new DecimalFormat("#.##%");
private DecimalFormat number = new DecimalFormat("#.##");
public SqlReportModel(SqlReportRecord record) {
m_record = record;
}
public String getFailurePercent() {
double value = m_record.getFailures() / m_record.getTotalcount();
return percent.format(value);
}
public String getLongPercent() {
double value = m_record.getLongsqls() / m_record.getTotalcount();
return percent.format(value);
}
public String getAvg() {
double value = m_record.getSumvalue() / m_record.getTotalcount();
return number.format(value);
}
public String getStd() {
double sum2 = m_record.getSum2value();
int count = m_record.getTotalcount();
double avg = m_record.getSumvalue() / m_record.getTotalcount();
double std = Math.sqrt(sum2 / count - avg * avg);
return number.format(std);
}
public SqlReportRecord getRecord() {
return m_record;
}
public void setRecord(SqlReportRecord record) {
m_record = record;
}
}
......@@ -9,15 +9,16 @@ public class NavigationBar {
ReportPage.HOME,
ReportPage.FAILURE,
//ReportPage.FAILURE,
ReportPage.TRANSACTION,
ReportPage.PROBLEM,
ReportPage.IP,
ReportPage.SERVICE,
ReportPage.SQL,
//ReportPage.SERVICE,
ReportPage.LOGVIEW
......
......@@ -22,47 +22,6 @@
<fileServer>127.0.0.1</fileServer>
</configuration>
</component>
<component>
<role>com.dianping.cat.report.page.service.provider.ModelProvider</role>
<role-hint>failure</role-hint>
<implementation>com.dianping.cat.report.page.service.provider.FailureModelProvider</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.service.provider.ModelProvider</role>
<role-hint>transaction</role-hint>
<implementation>com.dianping.cat.report.page.service.provider.TransactionModelProvider</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.service.provider.ModelProvider</role>
<role-hint>ip</role-hint>
<implementation>com.dianping.cat.report.page.service.provider.IpModelProvider</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.failure.FailureManager</role>
<implementation>com.dianping.cat.report.page.failure.FailureManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.transaction.TransactionManager</role>
<implementation>com.dianping.cat.report.page.transaction.TransactionManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.ip.IpManager</role>
<implementation>com.dianping.cat.report.page.ip.IpManager</implementation>
......@@ -230,60 +189,43 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.transaction.Handler</role>
<implementation>com.dianping.cat.report.page.transaction.Handler</implementation>
<role>com.dianping.cat.report.page.problem.Handler</role>
<implementation>com.dianping.cat.report.page.problem.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.transaction.JspViewer</role>
<role>com.dianping.cat.report.page.problem.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction</role-hint>
<role-hint>problem</role-hint>
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.graph.GraphBuilder</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.transaction.JspViewer</role>
<implementation>com.dianping.cat.report.page.transaction.JspViewer</implementation>
<role>com.dianping.cat.report.page.problem.JspViewer</role>
<implementation>com.dianping.cat.report.page.problem.JspViewer</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.failure.Handler</role>
<implementation>com.dianping.cat.report.page.failure.Handler</implementation>
<role>com.dianping.cat.report.page.transaction.Handler</role>
<implementation>com.dianping.cat.report.page.transaction.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.ServerConfig</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.failure.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.failure.FailureManager</role>
<role>com.dianping.cat.report.page.transaction.JspViewer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.ServerConfig</role>
<implementation>com.dianping.cat.report.ServerConfig</implementation>
<requirements>
<requirement>
<role>java.util.List</role>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction</role-hint>
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>java.lang.String</role>
<role>com.dianping.cat.report.graph.GraphBuilder</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.failure.JspViewer</role>
<implementation>com.dianping.cat.report.page.failure.JspViewer</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.failure.FailureManager</role>
<implementation>com.dianping.cat.report.page.failure.FailureManager</implementation>
<role>com.dianping.cat.report.page.transaction.JspViewer</role>
<implementation>com.dianping.cat.report.page.transaction.JspViewer</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.logview.Handler</role>
......@@ -323,36 +265,20 @@
<implementation>com.dianping.cat.report.page.ip.JspViewer</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.ip.IpManager</role>
<implementation>com.dianping.cat.report.page.ip.IpManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.service.Handler</role>
<implementation>com.dianping.cat.report.page.service.Handler</implementation>
<role>com.dianping.cat.report.ServerConfig</role>
<implementation>com.dianping.cat.report.ServerConfig</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.service.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.service.provider.ModelProvider</role>
<role-hint>failure</role-hint>
<field-name>m_failureModel</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.service.provider.ModelProvider</role>
<role-hint>transaction</role-hint>
<field-name>m_transactionModel</field-name>
<role>java.util.List</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.service.provider.ModelProvider</role>
<role-hint>ip</role-hint>
<field-name>m_ipModel</field-name>
<role>java.lang.String</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.service.JspViewer</role>
<implementation>com.dianping.cat.report.page.service.JspViewer</implementation>
<role>com.dianping.cat.report.page.ip.IpManager</role>
<implementation>com.dianping.cat.report.page.ip.IpManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.model.Handler</role>
......@@ -366,6 +292,11 @@
<role-hint>transaction-local</role-hint>
<field-name>m_transactionService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>problem-local</role-hint>
<field-name>m_problemService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>logview-local</role-hint>
......@@ -388,6 +319,17 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.problem.LocalProblemService</role>
<implementation>com.dianping.cat.report.page.model.problem.LocalProblemService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
<field-name>m_consumer</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.logview.LocalLogViewService</role>
<implementation>com.dianping.cat.report.page.model.logview.LocalLogViewService</implementation>
......@@ -398,22 +340,29 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.problem.Handler</role>
<implementation>com.dianping.cat.report.page.problem.Handler</implementation>
<role>com.dianping.cat.report.page.sql.Handler</role>
<implementation>com.dianping.cat.report.page.sql.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.problem.JspViewer</role>
<role>com.dianping.cat.report.page.sql.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>problem</role-hint>
<field-name>m_service</field-name>
<role>com.dianping.cat.job.sql.dal.SqlReportRecordDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.problem.JspViewer</role>
<implementation>com.dianping.cat.report.page.problem.JspViewer</implementation>
<role>com.dianping.cat.report.page.sql.JspViewer</role>
<implementation>com.dianping.cat.report.page.sql.JspViewer</implementation>
</component>
<component>
<role>com.dianping.cat.job.sql.dal.SqlReportRecordDao</role>
<implementation>com.dianping.cat.job.sql.dal.SqlReportRecordDao</implementation>
<requirements>
<requirement>
<role>com.site.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
</components>
</plexus>
......@@ -20,6 +20,9 @@
<page name="model" title="Model" path="model" standalone="false">
<description>Service model</description>
</page>
<page name="sql" title="Sql" path="sql">
<description>Sql</description>
</page>
</module>
</webapp>
</wizard>
......
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="a" uri="/WEB-INF/app.tld"%>
<%@ taglib prefix="w" uri="/web/core"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="res" uri="http://www.unidal.org/webres"%>
<jsp:useBean id="ctx" type="com.dianping.cat.report.page.sql.Context" scope="request" />
<jsp:useBean id="payload" type="com.dianping.cat.report.page.sql.Payload" scope="request" />
<jsp:useBean id="model" type="com.dianping.cat.report.page.sql.Model" scope="request" />
<a:report
title="SQL Report"
navUrlPrefix="domain=${model.domain}"
timestamp="${w:format(model.currentTime,'yyyy-MM-dd HH:mm:ss')}">
<jsp:attribute name="subtitle">From ${w:format(model.report.startTime,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.report.endTime,'yyyy-MM-dd HH:mm:ss')}</jsp:attribute>
<jsp:body>
<res:useCss value="${res.css.local.transaction_css}" target="head-css"/>
<res:useJs value="${res.js.local['jquery-1.7.1.js']}" target="head-js"/>
<res:useJs value="${res.js.local.transaction_js}" target="head-js"/>
<br>
<table class="sql">
<tr>
<th>SQL</th>
<th>Total</th>
<th>Failure</th>
<th>Failure%</th>
<th>LongSQL</th>
<th>Long%</th>
<th>Min/Max/Avg/Std(ms)</th>
<th>95% Avg</th>
<th>Sample Link</th>
</tr>
<c:forEach var="reportRecord" items="${model.report.reportRecords}" varStatus="status">
<tr class="${status.index mod 2 != 0 ? 'odd' : 'even'}">
<td>${reportRecord.record.name}</td>
<td>${reportRecord.record.totalcount}</td>
<td>${reportRecord.record.failures}</td>
<td>${reportRecord.failurePercent}</td>
<td>${reportRecord.record.longsqls}</td>
<td>${reportRecord.longPercent}</td>
<td>${reportRecord.record.minvalue}/${reportRecord.record.maxvalue}/${reportRecord.avg}/${reportRecord.std}</td>
<td>${reportRecord.avg}</td>
<td><a href='cat/r/m/${reportRecord.record.samplelink}/logview.html'>Link</a></td>
</tr>
</c:forEach>
</table>
<br>
</jsp:body>
</a:report>
......@@ -101,7 +101,7 @@ public class SimpleServer extends SimpleServerSupport {
@Test
public void startServer() throws Exception {
// open the page in the default browser
s_adaptor.display("/cat/r");
//s_adaptor.display("/cat/r");
System.out.println(String.format("[%s] Press any key to stop server ... ", getTimestamp()));
System.in.read();
......
......@@ -7,19 +7,19 @@ import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import com.dianping.cat.job.sql.dal.Sqlreport;
import com.dianping.cat.job.sql.dal.SqlreportDao;
import com.dianping.cat.job.sql.dal.SqlReportRecord;
import com.dianping.cat.job.sql.dal.SqlReportRecordDao;
import com.site.dal.jdbc.DalException;
public class SqlRecordJobReducer extends Reducer<Text, Text, Text, Text>{
public void reduce(Text key, Iterable<Text> values, Context context) throws IOException,
InterruptedException {
Text currentHour = values.iterator().next();
SqlReportRecord sql = new SqlReportRecord(currentHour.toString(),key.toString());
SqlReportJobRecord sql = new SqlReportJobRecord(currentHour.toString(),key.toString());
try {
SqlreportDao dao = ContainerBootstrap.INSTANCE.lookup(SqlreportDao.class);
Sqlreport row = dao.createLocal();
SqlReportRecordDao dao = ContainerBootstrap.INSTANCE.lookup(SqlReportRecordDao.class);
SqlReportRecord row = dao.createLocal();
row.setDomain(sql.getDomain());
row.setTotalcount(sql.getTotalCount());
row.setFailures(sql.getFailureCount());
......@@ -36,13 +36,9 @@ public class SqlRecordJobReducer extends Reducer<Text, Text, Text, Text>{
row.setCreationdate(new Date());
dao.insert(row);
} catch (ComponentLookupException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sql);
}
}
......@@ -4,7 +4,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SqlReportRecord {
public class SqlReportJobRecord {
private String m_domain;
......@@ -43,7 +43,7 @@ public class SqlReportRecord {
private static final String SPIT = "\t";
public SqlReportRecord(){
public SqlReportJobRecord(){
}
......@@ -68,7 +68,7 @@ public class SqlReportRecord {
}
// domain1 SQLStatement Internal9 500 500 500 100 199 74750 11591750 147
public SqlReportRecord(String currentHour,String text) {
public SqlReportJobRecord(String currentHour,String text) {
try {
m_transactionDate = hourFormat.parse(currentHour);
......
<?xml version="1.0" encoding="UTF-8"?>
<entities do-package="com.dianping.cat.job.sql.dal" gen="true">
<entity name="sqlreport" table="SqlReport" alias="s">
<entity name="sqlreport" class-name="SqlReportRecord" table="SqlReport" alias="s">
<member name="minvalue" field="MinValue" value-type="double"
length="22" nullable="false" />
<member name="maxvalue" field="MaxValue" value-type="double"
......@@ -12,6 +12,32 @@
length="22" nullable="false" />
<member name="sum2value" field="Sum2Value" value-type="double"
length="22" nullable="false" />
<readsets>
<readset name="DOMAIN">
<member name="domain"/>
</readset>
</readsets>
<query-defs>
<query name="find-all-by-domain-and-date" type="SELECT" multiple="true">
<param name="domain" />
<param name="transactiondate" />
<statement><![CDATA[
SELECT <FIELDS/> FROM <TABLE/>
WHERE <FIELD name='domain'/> = ${domain}
AND <FIELD name='transactiondate'/> = ${transactiondate}
]]></statement>
</query>
<query name="find-all-distinct-by-date" type="SELECT" multiple="true">
<param name="transactiondate" />
<statement><![CDATA[
SELECT distinct <FIELDS/> FROM <TABLE/>
WHERE <FIELD name='transactiondate'/> = ${transactiondate}
]]></statement>
</query>
</query-defs>
</entity>
</entities>
......@@ -86,8 +86,8 @@
</configuration>
</component>
<component>
<role>com.dianping.cat.job.sql.dal.SqlreportDao</role>
<implementation>com.dianping.cat.job.sql.dal.SqlreportDao</implementation>
<role>com.dianping.cat.job.sql.dal.SqlReportRecordDao</role>
<implementation>com.dianping.cat.job.sql.dal.SqlReportRecordDao</implementation>
<requirements>
<requirement>
<role>com.site.dal.jdbc.QueryEngine</role>
......
......@@ -8,7 +8,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import com.dianping.cat.job.sql.database.SqlReportRecord;
import com.dianping.cat.job.sql.database.SqlReportJobRecord;
@RunWith(JUnit4.class)
public class SqlRecordTest {
......@@ -23,7 +23,7 @@ public class SqlRecordTest {
@Test
public void test2() {
String text = "domain1 SQLStatement-Internal9 insert into mysql where is='sfsdf' 500 500 500 100 199 74750 11591750 147 www.sina.com";
SqlReportRecord record = new SqlReportRecord("20120309/11", text);
SqlReportJobRecord record = new SqlReportJobRecord("20120309/11", text);
Assert.assertEquals("domain1", record.getDomain());
Assert.assertEquals("SQLStatement-Internal9", record.getName());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册