提交 ba159e63 编写于 作者: Y yong.you

modify the cat report table to binary storage

上级 e3343b98
......@@ -9,6 +9,8 @@ import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.consumer.browser.BrowserReportMerger;
import com.dianping.cat.consumer.browser.model.entity.BrowserReport;
import com.dianping.cat.consumer.browser.model.transform.DefaultSaxParser;
import com.dianping.cat.consumer.browser.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.browser.model.transform.DefaultNativeParser;
import com.dianping.cat.service.ReportDelegate;
import com.dianping.cat.task.TaskManager;
import com.dianping.cat.task.TaskManager.TaskProlicy;
......@@ -71,4 +73,14 @@ public class BrowserDelegate implements ReportDelegate<BrowserReport> {
return report;
}
@Override
public byte[] buildBinary(BrowserReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public BrowserReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -29,6 +29,7 @@ import com.dianping.cat.consumer.sql.SqlAnalyzer;
import com.dianping.cat.consumer.sql.SqlDelegate;
import com.dianping.cat.consumer.sql.SqlParseManager;
import com.dianping.cat.core.config.ConfigDao;
import com.dianping.cat.core.dal.HourlyReportContentDao;
import com.dianping.cat.core.dal.HourlyReportDao;
import com.dianping.cat.service.DefaultReportManager;
import com.dianping.cat.service.ReportDelegate;
......@@ -74,7 +75,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ReportManager.class, ID).req(ServerConfigManager.class));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, MatrixDelegate.class).req(TaskManager.class));
......@@ -89,7 +90,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ReportManager.class, ID).req(ServerConfigManager.class, DomainManager.class, DatabaseParser.class));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, DependencyDelegate.class).req(TaskManager.class));
......@@ -104,7 +105,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ReportManager.class, ID).req(ServerConfigManager.class));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, CrossDelegate.class).req(TaskManager.class));
......@@ -121,7 +122,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ReportManager.class, ID).req(SqlParseManager.class, DatabaseParser.class));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, SqlDelegate.class).req(TaskManager.class));
......
......@@ -6,6 +6,8 @@ import java.util.Set;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.consumer.cross.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.cross.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.cross.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
......@@ -70,4 +72,14 @@ public class CrossDelegate implements ReportDelegate<CrossReport> {
return report;
}
@Override
public byte[] buildBinary(CrossReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public CrossReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -6,6 +6,8 @@ import java.util.Set;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.consumer.dependency.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.dependency.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.dependency.model.entity.DependencyReport;
import com.dianping.cat.consumer.dependency.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
......@@ -70,4 +72,14 @@ public class DependencyDelegate implements ReportDelegate<DependencyReport> {
return report;
}
@Override
public byte[] buildBinary(DependencyReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public DependencyReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -6,6 +6,8 @@ import java.util.Set;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.consumer.matrix.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.matrix.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.consumer.matrix.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
......@@ -72,4 +74,14 @@ public class MatrixDelegate implements ReportDelegate<MatrixReport> {
return report;
}
@Override
public byte[] buildBinary(MatrixReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public MatrixReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -7,6 +7,8 @@ import java.util.Set;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.consumer.sql.model.entity.SqlReport;
import com.dianping.cat.consumer.sql.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.sql.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.sql.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
import com.dianping.cat.task.TaskManager;
......@@ -38,7 +40,8 @@ public class SqlDelegate implements ReportDelegate<SqlReport> {
@Override
public boolean createHourlyTask(SqlReport report) {
return m_taskManager.createTask(report.getStartTime(), report.getDomain(), SqlAnalyzer.ID, TaskProlicy.ALL_EXCLUED_HOURLY);
return m_taskManager.createTask(report.getStartTime(), report.getDomain(), SqlAnalyzer.ID,
TaskProlicy.ALL_EXCLUED_HOURLY);
}
@Override
......@@ -70,4 +73,14 @@ public class SqlDelegate implements ReportDelegate<SqlReport> {
return report;
}
@Override
public byte[] buildBinary(SqlReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public SqlReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -18,8 +18,8 @@
<entity-ref name="browser-version" type="list" names="browser-versions" />
</entity>
<entity name="browser-version">
<attribute name="id" value-type="String" />
<attribute name="count" value-type="int" />
<element name="text" value-type="double" text="true" />
</entity>
<entity name="os">
<attribute name="id" value-type="String" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.browser.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="browser-report" root="true">
<attribute name="domain" value-type="String" key="true"/>
<attribute name="startTime" value-type="Date" format="yyyy-MM-dd HH:mm:ss" />
......@@ -19,8 +19,8 @@
<entity-ref name="browser-version" type="map" names="browser-versions" method-find-or-create="true" />
</entity>
<entity name="browser-version">
<attribute name="id" value-type="String" key="true"/>
<attribute name="count" value-type="long" primitive="true" />
<element name="text" value-type="String" text="true" key="true"/>
</entity>
<entity name="os">
<attribute name="id" value-type="String" key="true" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.cross.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="cross-report" root="true">
<attribute name="domain" key="true" />
<element name="domain" value-type="String" type="set" names="domain-names" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.dependency.model"
enable-merger="true" enable-sax-parser="true" enable-base-visitor="true">
enable-merger="true" enable-sax-parser="true" enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="dependency-report" root="true">
<attribute name="domain" value-type="String" key="true" />
<attribute name="startTime" value-type="Date" format="yyyy-MM-dd HH:mm:ss" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.matrix.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="matrix-report" root="true">
<attribute name="domain" value-type="String" key="true"/>
<attribute name="startTime" value-type="Date" format="yyyy-MM-dd HH:mm:ss" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.sql.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="sql-report" root="true">
<attribute name="domain" value-type="String" key="true" />
<attribute name="startTime" value-type="Date" format="yyyy-MM-dd HH:mm:ss" />
......
......@@ -49,6 +49,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -94,6 +97,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -139,6 +145,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -190,6 +199,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......
......@@ -35,6 +35,7 @@ import com.dianping.cat.consumer.top.TopDelegate;
import com.dianping.cat.consumer.transaction.TransactionAnalyzer;
import com.dianping.cat.consumer.transaction.TransactionDelegate;
import com.dianping.cat.core.config.ConfigDao;
import com.dianping.cat.core.dal.HourlyReportContentDao;
import com.dianping.cat.core.dal.HourlyReportDao;
import com.dianping.cat.message.spi.core.MessageConsumer;
import com.dianping.cat.service.DefaultReportManager;
......@@ -86,7 +87,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ReportManager.class, ID));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, EventDelegate.class).req(TaskManager.class));
......@@ -101,7 +102,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ReportManager.class, ID));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, HeartbeatDelegate.class).req(TaskManager.class));
......@@ -131,7 +132,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
new String[] { DefaultProblemHandler.ID, LongExecutionProblemHandler.ID }, "m_handlers"));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, ProblemDelegate.class) //
.req(ProblemReportAggregation.class, TaskManager.class));
......@@ -147,7 +148,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ServerConfigManager.class, DomainManager.class, ServerStatisticManager.class));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, StateDelegate.class).req(TaskManager.class));
......@@ -162,7 +163,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ReportManager.class, ID).req(ServerConfigManager.class));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, TopDelegate.class));
......@@ -177,7 +178,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ReportManager.class, ID).req(ReportDelegate.class, ID).req(ServerConfigManager.class));
all.add(C(ReportManager.class, ID, DefaultReportManager.class) //
.req(ReportDelegate.class, ID) //
.req(BucketManager.class, HourlyReportDao.class) //
.req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) //
.config(E("name").value(ID)));
all.add(C(ReportDelegate.class, ID, TransactionDelegate.class).req(TaskManager.class));
......
......@@ -7,6 +7,8 @@ import java.util.Set;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.event.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.event.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.event.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
import com.dianping.cat.task.TaskManager;
......@@ -70,4 +72,14 @@ public class EventDelegate implements ReportDelegate<EventReport> {
return report;
}
@Override
public byte[] buildBinary(EventReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public EventReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -6,6 +6,8 @@ import java.util.Set;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.consumer.heartbeat.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.heartbeat.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.heartbeat.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
......@@ -70,4 +72,14 @@ public class HeartbeatDelegate implements ReportDelegate<HeartbeatReport> {
return report;
}
@Override
public byte[] buildBinary(HeartbeatReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public HeartbeatReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -8,6 +8,8 @@ import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Cat;
import com.dianping.cat.Constants;
import com.dianping.cat.consumer.problem.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.problem.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.problem.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
......@@ -40,7 +42,7 @@ public class ProblemDelegate implements ReportDelegate<ProblemReport> {
reports.put(all.getDomain(), all);
}
ProblemReport frontEnd = reports.get(Constants.FRONT_END);
if (frontEnd != null) {
......@@ -54,7 +56,7 @@ public class ProblemDelegate implements ReportDelegate<ProblemReport> {
return m_problemReportAggregation.getReport();
}
private boolean validateDomain(String domain) {
return !domain.equals(Constants.FRONT_END);
}
......@@ -116,4 +118,14 @@ public class ProblemDelegate implements ReportDelegate<ProblemReport> {
return report;
}
@Override
public byte[] buildBinary(ProblemReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public ProblemReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -6,6 +6,8 @@ import java.util.Map;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Constants;
import com.dianping.cat.consumer.state.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.state.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.state.model.entity.StateReport;
import com.dianping.cat.consumer.state.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
......@@ -72,4 +74,14 @@ public class StateDelegate implements ReportDelegate<StateReport> {
return report;
}
@Override
public byte[] buildBinary(StateReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public StateReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -3,6 +3,8 @@ package com.dianping.cat.consumer.top;
import java.util.Date;
import java.util.Map;
import com.dianping.cat.consumer.top.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.top.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.top.model.entity.TopReport;
import com.dianping.cat.consumer.top.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
......@@ -56,4 +58,14 @@ public class TopDelegate implements ReportDelegate<TopReport> {
return report;
}
@Override
public byte[] buildBinary(TopReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public TopReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
}
......@@ -11,6 +11,8 @@ import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Cat;
import com.dianping.cat.Constants;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.consumer.transaction.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.transaction.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser;
import com.dianping.cat.service.ReportDelegate;
import com.dianping.cat.task.TaskManager;
......@@ -20,7 +22,7 @@ public class TransactionDelegate implements ReportDelegate<TransactionReport> {
@Inject
private TaskManager m_taskManager;
@Override
public void afterLoad(Map<String, TransactionReport> reports) {
}
......@@ -41,6 +43,11 @@ public class TransactionDelegate implements ReportDelegate<TransactionReport> {
}
}
@Override
public byte[] buildBinary(TransactionReport report) {
return DefaultNativeBuilder.build(report);
}
@Override
public String buildXml(TransactionReport report) {
report.accept(new TransactionStatisticsComputer());
......@@ -72,7 +79,8 @@ public class TransactionDelegate implements ReportDelegate<TransactionReport> {
@Override
public boolean createHourlyTask(TransactionReport report) {
return m_taskManager.createTask(report.getStartTime(), report.getDomain(), TransactionAnalyzer.ID, TaskProlicy.ALL);
return m_taskManager.createTask(report.getStartTime(), report.getDomain(), TransactionAnalyzer.ID,
TaskProlicy.ALL);
}
@Override
......@@ -98,6 +106,11 @@ public class TransactionDelegate implements ReportDelegate<TransactionReport> {
return old;
}
@Override
public TransactionReport parseBinary(byte[] bytes) {
return DefaultNativeParser.parse(bytes);
}
@Override
public TransactionReport parseXml(String xml) throws Exception {
TransactionReport report = DefaultSaxParser.parse(xml);
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.event.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="event-report" root="true">
<attribute name="domain" key="true" />
<element name="domain" value-type="String" type="set" names="domain-names" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.heartbeat.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="heartbeat-report" root="true">
<attribute name="domain" value-type="String" key="true"/>
<attribute name="startTime" value-type="Date" format="yyyy-MM-dd HH:mm:ss" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.problem.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="problem-report" root="true">
<attribute name="domain" value-type="String" key="true" />
<element name="domain" value-type="String" type="set" names="domain-names" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.state.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="state-report" root="true">
<attribute name="domain" value-type="String" key="true" />
<attribute name="startTime" value-type="Date" format="yyyy-MM-dd HH:mm:ss" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.top.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="top-report" root="true">
<attribute name="domain" value-type="String" key="true" />
<attribute name="startTime" value-type="Date" format="yyyy-MM-dd HH:mm:ss" />
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.consumer.transaction.model" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" >
enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true">
<entity name="transaction-report" root="true">
<attribute name="domain" key="true" />
<attribute name="startTime" value-type="Date" format="yyyy-MM-dd HH:mm:ss" />
......
......@@ -49,6 +49,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -91,6 +94,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -189,6 +195,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -234,6 +243,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -279,6 +291,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -340,6 +355,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>com.dianping.cat</groupId>
<artifactId>parent</artifactId>
<version>0.6.2</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cat-core</artifactId>
<name>cat-core</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.dianping.cat</groupId>
<artifactId>cat-client</artifactId>
</dependency>
<dependency>
<groupId>org.unidal.framework</groupId>
<artifactId>foundation-service</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>com.dianping.cat</groupId>
<artifactId>parent</artifactId>
<version>0.6.2</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cat-core</artifactId>
<name>cat-core</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.dianping.cat</groupId>
<artifactId>cat-client</artifactId>
</dependency>
<dependency>
<groupId>org.unidal.framework</groupId>
<artifactId>foundation-service</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.unidal.webres</groupId>
<artifactId>WebResBase</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.unidal.framework</groupId>
<artifactId>dal-jdbc</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<optional>true</optional>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.unidal.framework</groupId>
<artifactId>test-framework</artifactId>
<version>2.0.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.unidal.maven.plugins</groupId>
<artifactId>codegen-maven-plugin</artifactId>
<version>2.0.5</version>
<executions>
<execution>
<id>generate data model</id>
<phase>generate-sources</phase>
<goals>
<goal>dal-model</goal>
</goals>
<configuration>
<manifest>
${basedir}/src/main/resources/META-INF/dal/model/server-manifest.xml,
</manifest>
</configuration>
</execution>
<execution>
<id>generate dal jdbc model</id>
<phase>generate-sources</phase>
<goals>
<goal>dal-jdbc</goal>
</goals>
<configuration>
<manifest>
${basedir}/src/main/resources/META-INF/dal/jdbc/report-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/config-manifest.xml,
</manifest>
</configuration>
</execution>
<execution>
<id>generate plexus component descriptor</id>
<phase>process-classes</phase>
<goals>
<goal>plexus</goal>
</goals>
<configuration>
<className>com.dianping.cat.build.ComponentsConfigurator</className>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</dependency>
<dependency>
<groupId>org.unidal.framework</groupId>
<artifactId>dal-jdbc</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<optional>true</optional>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.unidal.framework</groupId>
<artifactId>test-framework</artifactId>
<version>2.0.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.unidal.maven.plugins</groupId>
<artifactId>codegen-maven-plugin</artifactId>
<version>2.0.5</version>
<executions>
<execution>
<id>generate data model</id>
<phase>generate-sources</phase>
<goals>
<goal>dal-model</goal>
</goals>
<configuration>
<manifest>${basedir}/src/main/resources/META-INF/dal/model/server-manifest.xml,</manifest>
</configuration>
</execution>
<execution>
<id>generate dal jdbc model</id>
<phase>generate-sources</phase>
<goals>
<goal>dal-jdbc</goal>
</goals>
<configuration>
<manifest>${basedir}/src/main/resources/META-INF/dal/jdbc/report-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/config-manifest.xml, <![CDATA[${basedir}/src/main/resources/META-INF/dal/jdbc/report-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/config-manifest.xml,]]></manifest>
</configuration>
</execution>
<execution>
<id>generate plexus component descriptor</id>
<phase>process-classes</phase>
<goals>
<goal>plexus</goal>
</goals>
<configuration>
<className>com.dianping.cat.build.ComponentsConfigurator</className>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
</properties>
</project>
......@@ -20,6 +20,8 @@ import com.dianping.cat.Cat;
import com.dianping.cat.Constants;
import com.dianping.cat.configuration.NetworkInterfaceManager;
import com.dianping.cat.core.dal.HourlyReport;
import com.dianping.cat.core.dal.HourlyReportContent;
import com.dianping.cat.core.dal.HourlyReportContentDao;
import com.dianping.cat.core.dal.HourlyReportDao;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.Transaction;
......@@ -40,6 +42,9 @@ public class DefaultReportManager<T> implements ReportManager<T>, LogEnabled {
@Inject
private HourlyReportDao m_reportDao;
@Inject
private HourlyReportContentDao m_reportContentDao;
private String m_name;
private Map<Long, Map<String, T>> m_map = new ConcurrentHashMap<Long, Map<String, T>>();
......@@ -212,9 +217,25 @@ public class DefaultReportManager<T> implements ReportManager<T>, LogEnabled {
r.setPeriod(period);
r.setIp(ip);
r.setType(1);
r.setContent(xml);
if (!"transaction".equals(m_name)) {
r.setContent(xml);
} else {
r.setContent("");
}
m_reportDao.insert(r);
if ("transaction".equals(m_name)) {
int id = r.getId();
byte[] binaryContent = m_reportDelegate.buildBinary(report);
HourlyReportContent content = m_reportContentDao.createLocal();
content.setReportId(id);
content.setContent(binaryContent);
m_reportContentDao.insert(content);
}
m_reportDelegate.createHourlyTask(report);
} catch (Throwable e) {
t.setStatus(e);
......
......@@ -7,6 +7,10 @@ public interface ReportDelegate<T> {
public void beforeSave(Map<String, T> reports);
public byte[] buildBinary(T report);
public T parseBinary(byte[] bytes);
public String buildXml(T report);
public String getDomain(T report);
......
<?xml version="1.0" encoding="UTF-8"?>
<entities>
<entity name="hostinfo" table="hostinfo" alias="h">
<entity name="dailygraph" table="dailygraph" alias="d">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="ip" field="ip" value-type="String" length="50" nullable="false" />
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="detail-content" field="detail_content" value-type="String" length="16777215" nullable="false" />
<member name="summary-content" field="summary_content" value-type="String" length="16777215" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<member name="last-modified-date" field="last_modified_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="ip_index" unique="true" members="ip ASC" />
<index name="dailygraph_period_ip_domain_name" unique="true" members="period ASC, ip ASC, domain ASC, name ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......@@ -39,17 +43,19 @@
</query>
</query-defs>
</entity>
<entity name="project" table="project" alias="p">
<entity name="dailyreport" table="dailyreport" alias="d2">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="project-line" field="project_line" value-type="String" length="50" />
<member name="department" field="department" value-type="String" length="50" />
<member name="owner" field="owner" value-type="String" length="50" />
<member name="email" field="email" value-type="String" length="200" />
<member name="creation-date" field="creation_date" value-type="Date" />
<member name="modify-date" field="modify_date" value-type="Date" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" nullable="false" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="content" field="content" value-type="String" length="16777215" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="period" unique="true" members="period ASC, domain ASC, name ASC" />
<index name="type" members="type ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......@@ -80,20 +86,19 @@
</query>
</query-defs>
</entity>
<entity name="report" table="report" alias="r">
<entity name="graph" table="graph" alias="g">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" />
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="content" field="content" value-type="String" length="2147483647" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="detail-content" field="detail_content" value-type="String" length="16777215" nullable="false" />
<member name="summary-content" field="summary_content" value-type="String" length="16777215" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="IX_Domain_Name_Period" members="domain ASC, name ASC, period ASC" />
<index name="IX_Name_Period" members="name ASC, period ASC" />
<index name="IX_Period" members="period ASC" />
<index name="graph_period_ip_domain_name" unique="true" members="period ASC, ip ASC, domain ASC, name ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......@@ -124,23 +129,15 @@
</query>
</query-defs>
</entity>
<entity name="task" table="task" alias="t">
<entity name="hostinfo" table="hostinfo" alias="h">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="producer" field="producer" value-type="String" length="20" nullable="false" />
<member name="consumer" field="consumer" value-type="String" length="20" />
<member name="failure-count" field="failure_count" value-type="int" length="3" nullable="false" />
<member name="report-name" field="report_name" value-type="String" length="20" nullable="false" />
<member name="report-domain" field="report_domain" value-type="String" length="50" nullable="false" />
<member name="report-period" field="report_period" value-type="Date" nullable="false" />
<member name="status" field="status" value-type="int" length="3" nullable="false" />
<member name="ip" field="ip" value-type="String" length="50" nullable="false" />
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<member name="start-date" field="start_date" value-type="Date" />
<member name="end-date" field="end_date" value-type="Date" />
<member name="task-type" field="task_type" value-type="int" length="3" />
<member name="last-modified-date" field="last_modified_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="task_period_domain_name" unique="true" members="report_period ASC, report_domain ASC, report_name ASC, task_type ASC" />
<index name="status" members="status ASC" />
<index name="ip_index" unique="true" members="ip ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......@@ -171,19 +168,18 @@
</query>
</query-defs>
</entity>
<entity name="dailygraph" table="dailygraph" alias="d">
<entity name="monthreport" table="monthreport" alias="m">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" />
<member name="ip" field="ip" value-type="String" length="20" nullable="false" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="detail-content" field="detail_content" value-type="String" length="16777215" nullable="false" />
<member name="summary-content" field="summary_content" value-type="String" length="16777215" nullable="false" />
<member name="content" field="content" value-type="String" length="16777215" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="dailygraph_period_ip_domain_name" unique="true" members="period ASC, ip ASC, domain ASC, name ASC" />
<index name="period" unique="true" members="period ASC, domain ASC, name ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......@@ -214,19 +210,17 @@
</query>
</query-defs>
</entity>
<entity name="dailyreport" table="dailyreport" alias="d2">
<entity name="project" table="project" alias="p">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" nullable="false" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="content" field="content" value-type="String" length="16777215" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="project-line" field="project_line" value-type="String" length="50" />
<member name="department" field="department" value-type="String" length="50" />
<member name="owner" field="owner" value-type="String" length="50" />
<member name="email" field="email" value-type="String" length="200" />
<member name="creation-date" field="creation_date" value-type="Date" />
<member name="modify-date" field="modify_date" value-type="Date" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="period" unique="true" members="period ASC, domain ASC, name ASC" />
<index name="type" members="type ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......@@ -257,19 +251,20 @@
</query>
</query-defs>
</entity>
<entity name="graph" table="graph" alias="g">
<entity name="report" table="report" alias="r">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="detail-content" field="detail_content" value-type="String" length="16777215" nullable="false" />
<member name="summary-content" field="summary_content" value-type="String" length="16777215" nullable="false" />
<member name="content" field="content" value-type="String" length="2147483647" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="graph_period_ip_domain_name" unique="true" members="period ASC, ip ASC, domain ASC, name ASC" />
<index name="IX_Domain_Name_Period" members="domain ASC, name ASC, period ASC" />
<index name="IX_Name_Period" members="name ASC, period ASC" />
<index name="IX_Period" members="period ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......@@ -300,18 +295,58 @@
</query>
</query-defs>
</entity>
<entity name="monthreport" table="monthreport" alias="m">
<entity name="report-content" table="report_content" alias="rc">
<member name="report-id" field="report_id" value-type="int" length="10" nullable="false" key="true" />
<member name="content" field="content" value-type="byte[]" length="2147483647" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-report-id" value-type="int" key-member="report-id" />
<primary-key name="PRIMARY" members="report_id" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-report-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='report-id'/> = ${key-report-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-report-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='report-id'/> = ${key-report-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-report-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='report-id'/> = ${key-report-id}]]></statement>
</query>
</query-defs>
</entity>
<entity name="task" table="task" alias="t">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" nullable="false" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="content" field="content" value-type="String" length="16777215" nullable="false" />
<member name="producer" field="producer" value-type="String" length="20" nullable="false" />
<member name="consumer" field="consumer" value-type="String" length="20" />
<member name="failure-count" field="failure_count" value-type="int" length="3" nullable="false" />
<member name="report-name" field="report_name" value-type="String" length="20" nullable="false" />
<member name="report-domain" field="report_domain" value-type="String" length="20" nullable="false" />
<member name="report-period" field="report_period" value-type="Date" nullable="false" />
<member name="status" field="status" value-type="int" length="3" nullable="false" />
<member name="task-type" field="task_type" value-type="int" length="3" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<member name="start-date" field="start_date" value-type="Date" />
<member name="end-date" field="end_date" value-type="Date" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="period" unique="true" members="period ASC, domain ASC, name ASC" />
<index name="task_period_domain_name_type" unique="true" members="report_period ASC, report_domain ASC, report_name ASC, task_type ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......
......@@ -229,7 +229,10 @@
</query>
</query-defs>
</entity>
<entity name="report-content" table="report_content" alias="rc" class-name="HourlyReportContent">
<query-defs>
</query-defs>
</entity>
<entity name="report" table="report" alias="r" class-name="HourlyReport">
<member name="creation-date" insert-expr="NOW()" />
<var name="start-date" value-type="Date" />
......
......@@ -154,81 +154,91 @@
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>hostinfo</role-hint>
<role-hint>dailygraph</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>hostinfo</logical-table-name>
<physical-table-name>hostinfo</physical-table-name>
<logical-table-name>dailygraph</logical-table-name>
<physical-table-name>dailygraph</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>project</role-hint>
<role-hint>dailyreport</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>project</logical-table-name>
<physical-table-name>project</physical-table-name>
<logical-table-name>dailyreport</logical-table-name>
<physical-table-name>dailyreport</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>report</role-hint>
<role-hint>graph</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>report</logical-table-name>
<physical-table-name>report</physical-table-name>
<logical-table-name>graph</logical-table-name>
<physical-table-name>graph</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>task</role-hint>
<role-hint>hostinfo</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>task</logical-table-name>
<physical-table-name>task</physical-table-name>
<logical-table-name>hostinfo</logical-table-name>
<physical-table-name>hostinfo</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>dailygraph</role-hint>
<role-hint>monthreport</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>dailygraph</logical-table-name>
<physical-table-name>dailygraph</physical-table-name>
<logical-table-name>monthreport</logical-table-name>
<physical-table-name>monthreport</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>dailyreport</role-hint>
<role-hint>project</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>dailyreport</logical-table-name>
<physical-table-name>dailyreport</physical-table-name>
<logical-table-name>project</logical-table-name>
<physical-table-name>project</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>graph</role-hint>
<role-hint>report</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>graph</logical-table-name>
<physical-table-name>graph</physical-table-name>
<logical-table-name>report</logical-table-name>
<physical-table-name>report</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>monthreport</role-hint>
<role-hint>report-content</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>monthreport</logical-table-name>
<physical-table-name>monthreport</physical-table-name>
<logical-table-name>report-content</logical-table-name>
<physical-table-name>report_content</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>task</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>task</logical-table-name>
<physical-table-name>task</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
......@@ -243,8 +253,8 @@
</configuration>
</component>
<component>
<role>com.dianping.cat.core.dal.HostinfoDao</role>
<implementation>com.dianping.cat.core.dal.HostinfoDao</implementation>
<role>com.dianping.cat.core.dal.DailyGraphDao</role>
<implementation>com.dianping.cat.core.dal.DailyGraphDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
......@@ -252,8 +262,8 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.ProjectDao</role>
<implementation>com.dianping.cat.core.dal.ProjectDao</implementation>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
<implementation>com.dianping.cat.core.dal.DailyReportDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
......@@ -261,8 +271,8 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
<implementation>com.dianping.cat.core.dal.HourlyReportDao</implementation>
<role>com.dianping.cat.core.dal.GraphDao</role>
<implementation>com.dianping.cat.core.dal.GraphDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
......@@ -270,8 +280,8 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.TaskDao</role>
<implementation>com.dianping.cat.core.dal.TaskDao</implementation>
<role>com.dianping.cat.core.dal.HostinfoDao</role>
<implementation>com.dianping.cat.core.dal.HostinfoDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
......@@ -279,8 +289,8 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.DailyGraphDao</role>
<implementation>com.dianping.cat.core.dal.DailyGraphDao</implementation>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
<implementation>com.dianping.cat.core.dal.MonthlyReportDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
......@@ -288,8 +298,8 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
<implementation>com.dianping.cat.core.dal.DailyReportDao</implementation>
<role>com.dianping.cat.core.dal.ProjectDao</role>
<implementation>com.dianping.cat.core.dal.ProjectDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
......@@ -297,8 +307,8 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.GraphDao</role>
<implementation>com.dianping.cat.core.dal.GraphDao</implementation>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
<implementation>com.dianping.cat.core.dal.HourlyReportDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
......@@ -306,8 +316,17 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
<implementation>com.dianping.cat.core.dal.MonthlyReportDao</implementation>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
<implementation>com.dianping.cat.core.dal.HourlyReportContentDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.TaskDao</role>
<implementation>com.dianping.cat.core.dal.TaskDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
......
<?xml version="1.0" encoding="utf-8"?>
<wizard package="com.dianping.cat.consumer">
<jdbc package="com.dainping.cat.consumer.dal" name="cat">
<wizard package="com.dianping.cat.core">
<jdbc package="com.dianping.cat.core" name="cat">
<datasource>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://192.168.7.43:3306/cat</url>
<user>dpcom_cat</user>
<url>jdbc:mysql://127.0.0.1:3306/cat</url>
<user>root</user>
<password>password</password>
<properties>useUnicode=true&amp;autoReconnect=true</properties>
</datasource>
<group name="report" package="com.dainping.cat.consumer.dal.report">
<group name="report" package="com.dianping.cat.core.dal">
<table name="hostinfo"/>
<table name="task"/>
<table name="project"/>
......@@ -18,8 +18,9 @@
<table name="monthreport"/>
<table name="graph"/>
<table name="dailygraph"/>
<table name="report_content"/>
</group>
<group name="config" package="com.dainping.cat.consumer.dal.config">
<group name="config" package="com.dianping.cat.core.config">
<table name="config"/>
</group>
</jdbc>
......
package com.dianping.cat.consumer;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({
// add test classes here
})
public class AllTests {
}
package com.dianping.cat.core;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({
// add test classes here
})
public class AllTests {
}
......@@ -11,7 +11,8 @@ final class CatDatabaseConfigurator extends AbstractJdbcResourceConfigurator {
public List<Component> defineComponents() {
List<Component> all = new ArrayList<Component>();
all.add(defineJdbcDataSourceComponent("cat", "com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/cat", "root", "", "<![CDATA[useUnicode=true&autoReconnect=true]]>"));
all.add(defineJdbcDataSourceComponent("cat", "com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/cat", "root", "password", "<![CDATA[useUnicode=true&autoReconnect=true]]>"));
defineSimpleTableProviderComponents(all, "cat", com.dianping.cat.home.dal.report._INDEX.getEntityClasses());
defineDaoComponents(all, com.dianping.cat.home.dal.report._INDEX.getDaoClasses());
......
......@@ -8,6 +8,7 @@ import org.unidal.lookup.configuration.Component;
import com.dianping.cat.consumer.advanced.dal.BusinessReportDao;
import com.dianping.cat.core.dal.DailyReportDao;
import com.dianping.cat.core.dal.HourlyReportContentDao;
import com.dianping.cat.core.dal.HourlyReportDao;
import com.dianping.cat.core.dal.MonthlyReportDao;
import com.dianping.cat.core.dal.WeeklyReportDao;
......@@ -34,34 +35,34 @@ public class ReportServiceComponentConfigurator extends AbstractResourceConfigur
public List<Component> defineComponents() {
List<Component> all = new ArrayList<Component>();
all.add(C(TransactionReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(EventReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(ProblemReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(MatrixReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(CrossReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(SqlReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(StateReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(TransactionReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class,
DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(EventReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class,
DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(ProblemReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class,
DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(MatrixReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class,
DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(CrossReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class,
DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(SqlReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, DailyReportDao.class,
WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(StateReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class,
DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(TopReportService.class).req(HourlyReportDao.class));
all.add(C(DependencyReportService.class).req(HourlyReportDao.class));
all.add(C(HeartbeatReportService.class).req(HourlyReportDao.class));
all.add(C(TopReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class));
all.add(C(DependencyReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class));
all.add(C(HeartbeatReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class));
all.add(C(MetricReportService.class).req(HourlyReportDao.class, BusinessReportDao.class));
all.add(C(BugReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(UtilizationReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(ServiceReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(HeavyReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class,
MonthlyReportDao.class));
all.add(C(BugReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, DailyReportDao.class,
WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(UtilizationReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class,
DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(ServiceReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class,
DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(HeavyReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class,
DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class));
all.add(C(ReportService.class, DefaultReportService.class)
.req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class) //
......
......@@ -52,7 +52,6 @@ public class Model extends AbstractReportModel<Action, Context> {
return m_utilizationWebList;
}
public List<com.dianping.cat.home.utilization.entity.Domain> getUtilizationServiceList() {
return m_utilizationServiceList;
}
......
......@@ -11,6 +11,7 @@ import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Cat;
import com.dianping.cat.core.dal.HourlyReport;
import com.dianping.cat.core.dal.HourlyReportContentDao;
import com.dianping.cat.core.dal.HourlyReportDao;
import com.dianping.cat.core.dal.HourlyReportEntity;
import com.dianping.cat.helper.TimeUtil;
......@@ -19,6 +20,9 @@ public abstract class AbstractReportService<T> {
@Inject
protected HourlyReportDao m_hourlyReportDao;
@Inject
protected HourlyReportContentDao m_hourlyReportContentDao;
public static final int s_hourly = 1;
......
......@@ -11,10 +11,13 @@ import com.dianping.cat.Cat;
import com.dianping.cat.consumer.transaction.TransactionAnalyzer;
import com.dianping.cat.consumer.transaction.TransactionReportMerger;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.consumer.transaction.model.transform.DefaultNativeParser;
import com.dianping.cat.core.dal.DailyReport;
import com.dianping.cat.core.dal.DailyReportDao;
import com.dianping.cat.core.dal.DailyReportEntity;
import com.dianping.cat.core.dal.HourlyReport;
import com.dianping.cat.core.dal.HourlyReportContent;
import com.dianping.cat.core.dal.HourlyReportContentEntity;
import com.dianping.cat.core.dal.HourlyReportEntity;
import com.dianping.cat.core.dal.MonthlyReport;
import com.dianping.cat.core.dal.MonthlyReportDao;
......@@ -23,7 +26,6 @@ import com.dianping.cat.core.dal.WeeklyReport;
import com.dianping.cat.core.dal.WeeklyReportDao;
import com.dianping.cat.core.dal.WeeklyReportEntity;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.message.Message;
import com.dianping.cat.report.service.AbstractReportService;
public class TransactionReportService extends AbstractReportService<TransactionReport> {
......@@ -46,6 +48,16 @@ public class TransactionReportService extends AbstractReportService<TransactionR
return report;
}
private TransactionReport queryFromBinary(int id, String domain) throws DalException {
HourlyReportContent content = m_hourlyReportContentDao.findByPK(id, HourlyReportContentEntity.READSET_FULL);
if (content != null) {
return DefaultNativeParser.parse(content.getContent());
} else {
return new TransactionReport(domain);
}
}
@Override
public TransactionReport queryDailyReport(String domain, Date start, Date end) {
TransactionReportMerger merger = new TransactionReportMerger(new TransactionReport(domain));
......@@ -58,6 +70,11 @@ public class TransactionReportService extends AbstractReportService<TransactionR
DailyReport report = m_dailyReportDao.findByDomainNamePeriod(domain, name, new Date(startTime),
DailyReportEntity.READSET_FULL);
String xml = report.getContent();
if (xml == null || xml.length() == 0) {
}
TransactionReport reportModel = com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser
.parse(xml);
reportModel.accept(merger);
......@@ -92,13 +109,17 @@ public class TransactionReportService extends AbstractReportService<TransactionR
String xml = report.getContent();
try {
TransactionReport reportModel = com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser
.parse(xml);
reportModel.accept(merger);
if (xml != null && xml.length() > 0) {// for old xml storage
TransactionReport reportModel = com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser
.parse(xml);
reportModel.accept(merger);
} else {// for new binary storage, binary is same to report id
TransactionReport reportModel = queryFromBinary(report.getId(), domain);
reportModel.accept(merger);
}
} catch (Exception e) {
Cat.logError(e);
Cat.getProducer().logEvent("ErrorXML", name, Message.SUCCESS,
report.getDomain() + " " + report.getPeriod() + " " + report.getId());
}
}
}
......
......@@ -51,7 +51,94 @@
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="ix_date_domain" members="date ASC, domain ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
</query-defs>
</entity>
<entity name="report-content" table="report_content" alias="rc">
<member name="report-id" field="report_id" value-type="int" length="10" nullable="false" key="true" />
<member name="content" field="content" value-type="byte[]" length="2147483647" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-report-id" value-type="int" key-member="report-id" />
<primary-key name="PRIMARY" members="report_id" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-report-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='report-id'/> = ${key-report-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-report-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='report-id'/> = ${key-report-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-report-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='report-id'/> = ${key-report-id}]]></statement>
</query>
</query-defs>
</entity>
<entity name="sqlreport" table="sqlreport" alias="s">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="name" field="name" value-type="String" length="100" nullable="false" />
<member name="statement" field="statement" value-type="String" length="3000" nullable="false" />
<member name="total-count" field="total_count" value-type="int" length="10" nullable="false" />
<member name="failure-count" field="failure_count" value-type="int" length="10" nullable="false" />
<member name="long-sqls" field="long_sqls" value-type="int" length="10" nullable="false" />
<member name="min-value" field="min_value" value-type="double" length="22" nullable="false" />
<member name="max-value" field="max_value" value-type="double" length="22" nullable="false" />
<member name="avg2-value" field="avg2_value" value-type="double" length="22" nullable="false" />
<member name="sum-value" field="sum_value" value-type="double" length="22" nullable="false" />
<member name="sum2-value" field="sum2_value" value-type="double" length="22" nullable="false" />
<member name="sample-link" field="sample_link" value-type="String" length="64" nullable="false" />
<member name="transaction-date" field="transaction_date" value-type="Date" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<member name="duration-distribution" field="duration_distribution" value-type="String" length="512" nullable="false" />
<member name="hits-over-time" field="hits_over_time" value-type="String" length="512" nullable="false" />
<member name="duration-over-time" field="duration_over_time" value-type="String" length="512" nullable="false" />
<member name="failure-over-time" field="failure_over_time" value-type="String" length="512" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......
......@@ -163,6 +163,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -181,6 +184,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -199,6 +205,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -217,6 +226,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -235,6 +247,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -253,6 +268,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -271,6 +289,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -289,6 +310,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -298,6 +322,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -307,6 +334,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
......@@ -328,6 +358,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -346,6 +379,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -364,6 +400,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -382,6 +421,9 @@
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
......@@ -1391,7 +1433,7 @@
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://127.0.0.1:3306/cat</url>
<user>root</user>
<password></password>
<password>password</password>
<connectionProperties><![CDATA[useUnicode=true&autoReconnect=true]]></connectionProperties>
</properties>
</configuration>
......@@ -1421,6 +1463,26 @@
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>report-content</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>report-content</logical-table-name>
<physical-table-name>report_content</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>sqlreport</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>sqlreport</logical-table-name>
<physical-table-name>sqlreport</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>topology-graph</role-hint>
......@@ -1449,6 +1511,24 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.ReportContentDao</role>
<implementation>com.dianping.cat.home.dal.report.ReportContentDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.SqlreportDao</role>
<implementation>com.dianping.cat.home.dal.report.SqlreportDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.TopologyGraphDao</role>
<implementation>com.dianping.cat.home.dal.report.TopologyGraphDao</implementation>
......
......@@ -12,6 +12,7 @@
<table name="event"/>
<table name="topologyGraph"/>
<table name="baseline"/>
<table name="sqlreport"/>
</group>
<group name="alarm" package="com.dianping.cat.home.dal.alarm">
<table name="mailRecord"/>
......
......@@ -86,17 +86,14 @@ CREATE TABLE `location` (
UNIQUE KEY `transaction_date_lat_lng` (`transaction_date`,`lat`,`lng`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用于热点图地理位置表';
CREATE TABLE `report` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` tinyint(4) NOT NULL COMMENT '报表类型, 1/xml, 9/binary 默认1',
`name` varchar(20) NOT NULL COMMENT '报表名称',
`ip` varchar(20) DEFAULT NULL COMMENT '报表来自于哪台机器',
`domain` varchar(50) NOT NULL,
`period` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '报表时间段',
`headers` text NOT NULL,
`domain` varchar(50) NOT NULL COMMENT '报表项目',
`period` timestamp NOT NULL COMMENT '报表时间段',
`content` longtext NULL,
`binary_content` longblob NULL,
`creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '报表创建时间',
PRIMARY KEY (`id`),
KEY `IX_Domain_Name_Period` (`domain`,`name`,`period`),
......@@ -104,6 +101,12 @@ CREATE TABLE `report` (
KEY `IX_Period` (`period`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED COMMENT='用于存放实时报表信息,处理之后的结果';
CREATE TABLE `report_content` (
`report_id` int(11) NOT NULL COMMENT '报表ID',
`content` longblob NOT NULL COMMENT '二进制报表内容',
`creation_date` timestamp NOT NULL COMMENT '创建时间',
PRIMARY KEY (`report_id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED COMMENT='小时报表二进制内容';
CREATE TABLE `businessReport` (
`id` int(11) NOT NULL AUTO_INCREMENT,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册