提交 3baf867c 编写于 作者: F Frankie Wu

resolve the conflicts

......@@ -3,15 +3,24 @@ package com.dianping.bee.engine.spi;
import com.dianping.bee.engine.spi.meta.ColumnMeta;
import com.dianping.bee.engine.spi.meta.IndexMeta;
import com.dianping.bee.engine.spi.meta.RowSet;
import com.dianping.bee.engine.spi.row.RowFilter;
public interface Statement {
public IndexMeta getIndex();
public int getParameterSize();
public RowFilter getRowFilter();
public ColumnMeta[] getSelectColumns();
public RowSet query();
public void setIndex(IndexMeta index);
public void setSelectColumns(ColumnMeta[] selectColumns);
public void setParameterSize(int m_parameterSize);
public RowSet query();
public void setRowFilter(RowFilter rowFilter);
public void setSelectColumns(ColumnMeta[] selectColumns);
}
......@@ -3,7 +3,13 @@ package com.dianping.bee.engine.spi;
import java.sql.SQLSyntaxErrorException;
public interface StatementManager {
public Statement parseSQL(String sql) throws SQLSyntaxErrorException;
public Statement build(String sql) throws SQLSyntaxErrorException;
public Statement prepare(String sql) throws SQLSyntaxErrorException;
public long stmtPrepare(Statement stmt);
public Statement stmtExecute(long stmtId);
public void stmtClose(long stmtId);
}
......@@ -78,27 +78,25 @@ public abstract class AbstractCommandHandler extends ContainerHolder implements
}
public void write(MySQLPacket packet) {
packet.packetId = m_packetId++;
m_buffer = packet.write(m_buffer, m_conn);
}
public void writeEOF() {
EOFPacket eof = new EOFPacket();
eof.packetId = m_packetId++;
write(eof);
}
public void writeField(String name, int fieldType) {
FieldPacket field = PacketUtil.getField(name, fieldType);
field.packetId = m_packetId++;
write(field);
}
public void writeHeader(int fieldCount) {
ResultSetHeaderPacket header = PacketUtil.getHeader(fieldCount);
header.packetId = m_packetId++;
write(header);
}
......@@ -114,7 +112,6 @@ public abstract class AbstractCommandHandler extends ContainerHolder implements
row.add(StringUtil.encode(values[i], m_charset));
}
row.packetId = m_packetId++;
write(row);
}
......@@ -161,7 +158,6 @@ public abstract class AbstractCommandHandler extends ContainerHolder implements
}
}
packet.packetId = m_packetId++;
write(packet);
}
}
......
......@@ -18,10 +18,11 @@ import java.sql.SQLSyntaxErrorException;
import java.util.List;
import com.alibaba.cobar.ErrorCode;
import com.alibaba.cobar.Fields;
import com.alibaba.cobar.server.ServerConnection;
import com.dianping.bee.engine.spi.Statement;
import com.dianping.bee.engine.spi.StatementManager;
import com.dianping.bee.engine.spi.handler.AbstractCommandHandler;
import com.site.helper.Joiners;
import com.site.lookup.annotation.Inject;
/**
......@@ -33,11 +34,60 @@ public class PrepareHandler extends AbstractCommandHandler {
@Override
protected void handle(ServerConnection c, List<String> parts) {
String stmt = Joiners.by(' ').join(parts);
// String stmt = Joiners.by(' ').join(parts);
// try {
// m_manager.stmtPrepare(stmt);
// } catch (SQLSyntaxErrorException e) {
// error(c, ErrorCode.ER_SYNTAX_ERROR, e.getMessage());
// }
}
/**
* @param sql
* @param c
* @param offset
*/
public void close(String sql, ServerConnection c, int offset) {
}
/**
* @param sql
* @param c
* @param offset
*/
public void execute(String sql, ServerConnection c, int offset) {
}
/**
* @param sql
* @param c
* @param offset
*/
public void prepare(String sql, ServerConnection c, int offset) {
Statement stmt = null;
try {
m_manager.prepare(stmt);
stmt = m_manager.parseSQL(sql);
} catch (SQLSyntaxErrorException e) {
error(c, ErrorCode.ER_SYNTAX_ERROR, e.getMessage());
}
long stmtId = m_manager.stmtPrepare(stmt);
CommandContext ctx = new CommandContext(c);
int columnSize = stmt.getSelectColumns().length;
int parameterSize = stmt.getParameterSize();
PreparePacket packet = new PreparePacket(stmtId, columnSize, parameterSize);
ctx.write(packet);
// FIXME: just some sample code here
for (int i = 0; i < parameterSize; i++) {
PrepareParameterPacket parameterPacket = new PrepareParameterPacket(Fields.FIELD_TYPE_STRING,
Fields.NOT_NULL_FLAG, (byte) 0, 50);
ctx.write(parameterPacket);
}
ctx.complete();
}
}
}
\ No newline at end of file
/**
* Project: bee-engine
*
* File Created at 2012-8-31
*
* Copyright 2012 dianping.com.
* All rights reserved.
*
* This software is the confidential and proprietary information of
* Dianping Company. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with dianping.com.
*/
package com.dianping.bee.engine.spi.handler.internal;
import java.nio.ByteBuffer;
import com.alibaba.cobar.net.FrontendConnection;
import com.alibaba.cobar.net.util.BufferUtil;
import com.alibaba.cobar.protocol.MySQLPacket;
/**
* @author <a href="mailto:yiming.liu@dianping.com">Yiming Liu</a>
*/
public class PreparePacket extends MySQLPacket {
public static final byte FIELD_COUNT = 0x00;
private byte m_fieldCount = FIELD_COUNT;
private long m_statementId;
private int m_columnSize;
private int m_parameterSize;
public PreparePacket(long statementId, int columnSize, int parameterSize) {
this.m_statementId = statementId;
this.m_columnSize = columnSize;
this.m_parameterSize = parameterSize;
}
@Override
public ByteBuffer write(ByteBuffer buffer, FrontendConnection c) {
int size = calcPacketSize();
buffer = c.checkWriteBuffer(buffer, c.getPacketHeaderSize() + size);
BufferUtil.writeUB3(buffer, size);
buffer.put(packetId);
buffer.put(m_fieldCount);
BufferUtil.writeUB4(buffer, m_statementId);
BufferUtil.writeUB2(buffer, m_columnSize);
BufferUtil.writeUB2(buffer, m_parameterSize);
return buffer;
}
@Override
public int calcPacketSize() {
return 9;// 1+4+2+2
}
@Override
protected String getPacketInfo() {
return "MySQL Prepare Packet";
}
}
\ No newline at end of file
/**
* Project: bee-engine
*
* File Created at 2012-8-31
*
* Copyright 2012 dianping.com.
* All rights reserved.
*
* This software is the confidential and proprietary information of
* Dianping Company. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with dianping.com.
*/
package com.dianping.bee.engine.spi.handler.internal;
import java.nio.ByteBuffer;
import com.alibaba.cobar.net.FrontendConnection;
import com.alibaba.cobar.net.util.BufferUtil;
import com.alibaba.cobar.protocol.MySQLPacket;
/**
* @author <a href="mailto:yiming.liu@dianping.com">Yiming Liu</a>
*/
public class PrepareParameterPacket extends MySQLPacket {
private int m_fieldType;
private int m_columnFlag;
private byte m_decimal;
private int m_length;
public PrepareParameterPacket(int fieldType, int columnFlag, byte decimal, int length) {
this.m_fieldType = fieldType;
this.m_columnFlag = columnFlag;
this.m_decimal = decimal;
this.m_length = length;
}
@Override
public ByteBuffer write(ByteBuffer buffer, FrontendConnection c) {
int size = calcPacketSize();
buffer = c.checkWriteBuffer(buffer, c.getPacketHeaderSize() + size);
BufferUtil.writeUB3(buffer, size);
buffer.put(packetId);
BufferUtil.writeUB2(buffer, m_fieldType);
BufferUtil.writeUB2(buffer, m_columnFlag);
buffer.put(m_decimal);
BufferUtil.writeUB4(buffer, m_length);
return buffer;
}
@Override
public int calcPacketSize() {
return 9; // 2+2+1+4
}
@Override
protected String getPacketInfo() {
return "MySQL Prepare Parameter Packet";
}
}
......@@ -13,7 +13,9 @@ import com.site.lookup.ContainerHolder;
public class DefaultStatementManager extends ContainerHolder implements StatementManager {
private Map<String, Statement> m_statements = new HashMap<String, Statement>();
private Map<String, Statement> m_prepares = new HashMap<String, Statement>();
private Map<Long, Statement> m_prepares = new HashMap<Long, Statement>();
private static long stmtId = 0;
@Override
public Statement build(String sql) throws SQLSyntaxErrorException {
......@@ -33,7 +35,7 @@ public class DefaultStatementManager extends ContainerHolder implements Statemen
return statement;
}
private Statement parseSQL(String sql) throws SQLSyntaxErrorException {
public Statement parseSQL(String sql) throws SQLSyntaxErrorException {
SQLStatement statement = SQLParserDelegate.parse(sql);
DefaultStatementVisitor defaultVisitor = new DefaultStatementVisitor();
......@@ -49,20 +51,23 @@ public class DefaultStatementManager extends ContainerHolder implements Statemen
}
@Override
public Statement prepare(String sql) throws SQLSyntaxErrorException {
Statement statement = m_prepares.get(sql);
public long stmtPrepare(Statement stmt) {
synchronized (m_prepares) {
m_prepares.put(stmtId++ % Long.MAX_VALUE, stmt);
}
if (statement == null) {
synchronized (m_prepares) {
statement = m_prepares.get(sql);
return stmtId;
}
if (statement == null) {
statement = parseSQL(sql);
m_prepares.put(sql, statement);
}
}
}
@Override
public Statement stmtExecute(long stmtId) {
return m_prepares.get(stmtId);
}
return statement;
@Override
public void stmtClose(long stmtId) {
synchronized (m_prepares) {
m_prepares.remove(stmtId);
}
}
}
......@@ -21,36 +21,27 @@ public class SingleTableStatement extends ContainerHolder implements Statement {
private ColumnMeta[] m_selectColumns;
private int m_parameterSize;
@Override
public IndexMeta getIndex() {
return m_index;
}
@Override
public ColumnMeta[] getSelectColumns() {
return m_selectColumns;
public int getParameterSize() {
return m_parameterSize;
}
@Override
public void setIndex(IndexMeta index) {
m_index = index;
}
public void setRowFilter(RowFilter rowFilter) {
m_rowFilter = rowFilter;
public RowFilter getRowFilter() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setSelectColumns(ColumnMeta[] selectColumns) {
if (selectColumns != null && selectColumns.length > 0) {
m_selectColumns = selectColumns;
} else {
m_selectColumns = m_table.getColumns();
}
}
public void setTable(TableProvider table) {
m_table = table;
public ColumnMeta[] getSelectColumns() {
return m_selectColumns;
}
@Override
......@@ -70,4 +61,36 @@ public class SingleTableStatement extends ContainerHolder implements Statement {
throw new RuntimeException(e);
}
}
@Override
public void setIndex(IndexMeta index) {
// TODO Auto-generated method stub
}
@Override
public void setParameterSize(int m_parameterSize) {
// TODO Auto-generated method stub
}
@Override
public void setRowFilter(RowFilter rowFilter) {
// TODO Auto-generated method stub
}
@Override
public void setSelectColumns(ColumnMeta[] selectColumns) {
if (selectColumns != null && selectColumns.length > 0) {
m_selectColumns = selectColumns;
} else {
m_selectColumns = m_table.getColumns();
}
}
public void setTable(TableProvider table) {
m_table = table;
}
}
......@@ -5,6 +5,7 @@ import java.util.List;
import com.alibaba.cobar.parser.ast.expression.Expression;
import com.alibaba.cobar.parser.ast.expression.primary.Identifier;
import com.alibaba.cobar.parser.ast.expression.primary.ParamMarker;
import com.alibaba.cobar.parser.ast.fragment.tableref.TableRefFactor;
import com.alibaba.cobar.parser.ast.fragment.tableref.TableReference;
import com.alibaba.cobar.parser.ast.stmt.dml.DMLSelectStatement;
......@@ -41,6 +42,8 @@ public class SingleTableStatementVisitor extends EmptySQLASTVisitor {
private String m_databaseName;
private int m_parameterSize;
private Clause m_clause;
private List<ColumnMeta> m_selectColumns = new ArrayList<ColumnMeta>();
......@@ -135,6 +138,8 @@ public class SingleTableStatementVisitor extends EmptySQLASTVisitor {
} else {
m_stmt.setIndex(m_helper.findIndex(m_databaseName, m_tableName, m_whereColumns));
}
m_stmt.setParameterSize(m_parameterSize);
}
}
......@@ -174,4 +179,9 @@ public class SingleTableStatementVisitor extends EmptySQLASTVisitor {
m_databaseName = node.getTable().getParent().getIdTextUpUnescape();
}
}
@Override
public void visit(ParamMarker node) {
m_parameterSize++;
}
}
......@@ -93,7 +93,67 @@ public class SimpleServerConnection extends ServerConnection {
// 执行查询
if (queryHandler != null) {
((SimpleServerQueryHandler) queryHandler).prepare(sql);
((SimpleServerQueryHandler) queryHandler).stmtPrepare(sql);
} else {
writeErrMessage(ErrorCode.ER_YES, "Empty QueryHandler");
}
} finally {
m_sessionManager.removeSession();
}
}
@Override
public void stmtExecute(byte[] data) {
m_sessionManager.getSession().setDatabase(getSchema());
try {
// 取得查询语句
MySQLMessage mm = new MySQLMessage(data);
mm.position(5);
String sql = null;
try {
sql = mm.readString(charset);
} catch (UnsupportedEncodingException e) {
writeErrMessage(ErrorCode.ER_UNKNOWN_CHARACTER_SET, "Unknown charset '" + charset + "'");
return;
}
if (sql == null || sql.length() == 0) {
writeErrMessage(ErrorCode.ER_NOT_ALLOWED_COMMAND, "Empty Prepared SQL");
return;
}
// 执行查询
if (queryHandler != null) {
((SimpleServerQueryHandler) queryHandler).stmtExecute(sql);
} else {
writeErrMessage(ErrorCode.ER_YES, "Empty QueryHandler");
}
} finally {
m_sessionManager.removeSession();
}
}
@Override
public void stmtClose(byte[] data) {
m_sessionManager.getSession().setDatabase(getSchema());
try {
// 取得查询语句
MySQLMessage mm = new MySQLMessage(data);
mm.position(5);
String sql = null;
try {
sql = mm.readString(charset);
} catch (UnsupportedEncodingException e) {
writeErrMessage(ErrorCode.ER_UNKNOWN_CHARACTER_SET, "Unknown charset '" + charset + "'");
return;
}
if (sql == null || sql.length() == 0) {
writeErrMessage(ErrorCode.ER_NOT_ALLOWED_COMMAND, "Empty Prepared SQL");
return;
}
// 执行查询
if (queryHandler != null) {
((SimpleServerQueryHandler) queryHandler).stmtClose(sql);
} else {
writeErrMessage(ErrorCode.ER_YES, "Empty QueryHandler");
}
......
......@@ -84,12 +84,28 @@ public class SimpleServerQueryHandler implements FrontendQueryHandler {
}
}
public void prepare(String sql) {
public void setServerConnection(ServerConnection c) {
m_conn = c;
}
/**
* @param sql
*/
public void stmtClose(String sql) {
ServerConnection c = m_conn;
m_prepareHandler.handle(sql, c, -1);
m_prepareHandler.close(sql, c, -1);
}
public void setServerConnection(ServerConnection c) {
m_conn = c;
/**
* @param sql
*/
public void stmtExecute(String sql) {
ServerConnection c = m_conn;
m_prepareHandler.execute(sql, c, -1);
}
public void stmtPrepare(String sql) {
ServerConnection c = m_conn;
m_prepareHandler.prepare(sql, c, -1);
}
}
......@@ -20,6 +20,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Assert;
import org.junit.Test;
......@@ -39,14 +40,15 @@ public class PreparedStatementTest extends ComponentTestCase {
String url = "jdbc:mysql://localhost:2330/";
String dbName = "cat";
String driver = "com.mysql.jdbc.Driver";
String userName = "test";
String password = "test";
String arg = "?useServerPrepStmts=true";
Properties props = new Properties();
props.setProperty("user", "test");
props.setProperty("password", "test");
props.setProperty("useServerPrepStmts", "true");
String sql = "select type, sum(failures) from transaction where domain=? and starttime=?";
Class.forName(driver).newInstance();
DriverManager.setLoginTimeout(600);
Connection conn = DriverManager.getConnection(url + dbName + (arg == null ? "" : arg), userName, password);
Connection conn = DriverManager.getConnection(url + dbName, props);
PreparedStatement stmt = conn.prepareStatement(sql);
Assert.assertNotNull(stmt);
stmt.setString(1, "MobiApi");
......
......@@ -271,7 +271,6 @@ public class EventAnalyzer extends AbstractMessageAnalyzer<EventReport> implemen
task.setReportPeriod(period);
task.setStatus(1); // status todo
m_taskDao.insert(task);
m_logger.info("insert event task:" + task.toString());
} catch (Throwable e) {
Cat.getProducer().logError(e);
}
......
......@@ -301,7 +301,6 @@ public class HeartbeatAnalyzer extends AbstractMessageAnalyzer<HeartbeatReport>
task.setReportPeriod(period);
task.setStatus(1); // status todo
m_taskDao.insert(task);
m_logger.info("insert heartbeat task:" + task.toString());
} catch (Throwable e) {
Cat.getProducer().logError(e);
}
......
......@@ -209,10 +209,9 @@ public class ProblemAnalyzer extends AbstractMessageAnalyzer<ProblemReport> impl
task.setReportDomain(domain);
task.setReportName("problem");
task.setReportPeriod(period);
task.setStatus(1); // status todo
task.setStatus(1);
m_taskDao.insert(task);
m_logger.info("insert event task:" + task.toString());
} catch (Throwable e) {
} catch (Throwable e) {
Cat.getProducer().logError(e);
}
}
......
......@@ -366,13 +366,11 @@ public class TransactionAnalyzer extends AbstractMessageAnalyzer<TransactionRepo
task.setReportPeriod(period);
task.setStatus(1); // status todo
m_taskDao.insert(task);
m_logger.info("insert transaction task:" + task.toString());
} catch (Throwable e) {
Cat.getProducer().logError(e);
}
}
}
t.setStatus(Message.SUCCESS);
} catch (Exception e) {
Cat.getProducer().logError(e);
......
......@@ -49,7 +49,7 @@ class ServiceComponentConfigurator extends AbstractResourceConfigurator {
List<Component> all = new ArrayList<Component>();
all.add(C(ModelService.class, "transaction-local", LocalTransactionService.class) //
.req(BucketManager.class) //
.req(BucketManager.class, ReportDao.class) //
.req(MessageConsumer.class, "realtime"));
all.add(C(ModelService.class, "transaction-historical", HistoricalTransactionService.class) //
.req(BucketManager.class, ReportDao.class));
......@@ -58,7 +58,7 @@ class ServiceComponentConfigurator extends AbstractResourceConfigurator {
.req(ModelService.class, new String[] { "transaction-historical" }, "m_services"));
all.add(C(ModelService.class, "event-local", LocalEventService.class) //
.req(BucketManager.class) //
.req(BucketManager.class, ReportDao.class) //
.req(MessageConsumer.class, "realtime"));
all.add(C(ModelService.class, "event-historical", HistoricalEventService.class) //
.req(BucketManager.class, ReportDao.class));
......@@ -67,7 +67,7 @@ class ServiceComponentConfigurator extends AbstractResourceConfigurator {
.req(ModelService.class, new String[] { "event-historical" }, "m_services"));
all.add(C(ModelService.class, "problem-local", LocalProblemService.class) //
.req(BucketManager.class) //
.req(BucketManager.class, ReportDao.class) //
.req(MessageConsumer.class, "realtime"));
all.add(C(ModelService.class, "problem-historical", HistoricalProblemService.class) //
.req(BucketManager.class, ReportDao.class));
......@@ -76,7 +76,7 @@ class ServiceComponentConfigurator extends AbstractResourceConfigurator {
.req(ModelService.class, new String[] { "problem-historical" }, "m_services"));
all.add(C(ModelService.class, "heartbeat-local", LocalHeartbeatService.class) //
.req(BucketManager.class) //
.req(BucketManager.class, ReportDao.class) //
.req(MessageConsumer.class, "realtime"));
all.add(C(ModelService.class, "heartbeat-historical", HistoricalHeartbeatService.class) //
.req(BucketManager.class, ReportDao.class));
......@@ -85,7 +85,7 @@ class ServiceComponentConfigurator extends AbstractResourceConfigurator {
.req(ModelService.class, new String[] { "heartbeat-historical" }, "m_services"));
all.add(C(ModelService.class, "matrix-local", LocalMatrixService.class) //
.req(BucketManager.class) //
.req(BucketManager.class, ReportDao.class) //
.req(MessageConsumer.class, "realtime"));
all.add(C(ModelService.class, "matrix-historical", HistoricalMatrixService.class) //
.req(BucketManager.class, ReportDao.class));
......@@ -94,7 +94,7 @@ class ServiceComponentConfigurator extends AbstractResourceConfigurator {
.req(ModelService.class, new String[] { "matrix-historical" }, "m_services"));
all.add(C(ModelService.class, "cross-local", LocalCrossService.class) //
.req(BucketManager.class) //
.req(BucketManager.class, ReportDao.class) //
.req(MessageConsumer.class, "realtime"));
all.add(C(ModelService.class, "cross-historical", HistoricalCrossService.class) //
.req(BucketManager.class, ReportDao.class));
......
......@@ -2,6 +2,7 @@ package com.dianping.cat.report.page.cache;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import com.dianping.cat.report.page.AbstractReportModel;
import com.dianping.cat.report.view.StringSortHelper;
......@@ -28,9 +29,15 @@ public class Model extends AbstractReportModel<Action, Context> {
@Override
public Collection<String> getDomains() {
if (m_report == null) {
return new ArrayList<String>();
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(getDomain());
return arrayList;
} else {
return StringSortHelper.sortDomain(m_report.getDomainNames());
Set<String> domainNames = m_report.getDomainNames();
domainNames.add(getDomain());
return StringSortHelper.sortDomain(domainNames);
}
}
......
......@@ -2,6 +2,7 @@ package com.dianping.cat.report.page.cross;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.report.page.AbstractReportModel;
......@@ -11,21 +12,21 @@ import com.dianping.cat.report.page.cross.display.ProjectInfo;
import com.dianping.cat.report.view.StringSortHelper;
public class Model extends AbstractReportModel<Action, Context> {
private String m_callSort;
private String m_queryName;
private HostInfo m_hostInfo;
private MethodInfo m_methodInfo;
private ProjectInfo m_projectInfo;
private CrossReport m_report;
private String m_serviceSort;
public Model(Context ctx) {
super(ctx);
}
......@@ -38,9 +39,9 @@ public class Model extends AbstractReportModel<Action, Context> {
public Action getDefaultAction() {
return Action.HOURLY_PROJECT;
}
@Override
public String getDomain() {
public String getDomain() {
if (m_report == null) {
return getDisplayDomain();
} else {
......@@ -49,19 +50,26 @@ public class Model extends AbstractReportModel<Action, Context> {
}
@Override
public Collection<String> getDomains() {
public Collection<String> getDomains() {
if (m_report == null) {
return new ArrayList<String>();
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(getDomain());
return arrayList;
} else {
return StringSortHelper.sortDomain(m_report.getDomainNames());
Set<String> domainNames = m_report.getDomainNames();
domainNames.add(getDomain());
return StringSortHelper.sortDomain(domainNames);
}
}
public HostInfo getHostInfo() {
return m_hostInfo;
}
public Collection<String> getIps(){
public Collection<String> getIps() {
if (m_report == null) {
return new ArrayList<String>();
} else {
......@@ -84,7 +92,6 @@ public class Model extends AbstractReportModel<Action, Context> {
public CrossReport getReport() {
return m_report;
}
public String getServiceSort() {
return m_serviceSort;
......@@ -117,5 +124,5 @@ public class Model extends AbstractReportModel<Action, Context> {
public void setServiceSort(String serviceSort) {
m_serviceSort = serviceSort;
}
}
......@@ -2,6 +2,7 @@ package com.dianping.cat.report.page.event;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.report.page.AbstractReportModel;
......@@ -60,9 +61,15 @@ public class Model extends AbstractReportModel<Action, Context> {
@Override
public List<String> getDomains() {
if (m_report == null) {
return new ArrayList<String>();
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(getDomain());
return arrayList;
} else {
return StringSortHelper.sortDomain(m_report.getDomainNames());
Set<String> domainNames = m_report.getDomainNames();
domainNames.add(getDomain());
return StringSortHelper.sortDomain(domainNames);
}
}
......
......@@ -2,6 +2,7 @@ package com.dianping.cat.report.page.heartbeat;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.report.page.AbstractReportModel;
......@@ -116,9 +117,16 @@ public class Model extends AbstractReportModel<Action, Context> {
public List<String> getDomains() {
if (m_report == null) {
return new ArrayList<String>();
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(getDomain());
return arrayList;
} else {
return StringSortHelper.sortDomain(m_report.getDomainNames());
Set<String> domainNames = m_report.getDomainNames();
domainNames.add(getDomain());
return StringSortHelper.sortDomain(domainNames);
}
}
......
......@@ -2,6 +2,7 @@ package com.dianping.cat.report.page.matrix;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.report.page.AbstractReportModel;
......@@ -29,9 +30,16 @@ public class Model extends AbstractReportModel<Action, Context> {
@Override
public Collection<String> getDomains() {
if (m_report == null) {
return new ArrayList<String>();
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(getDomain());
return arrayList;
} else {
return StringSortHelper.sortDomain(m_report.getDomainNames());
Set<String> domainNames = m_report.getDomainNames();
domainNames.add(getDomain());
return StringSortHelper.sortDomain(domainNames);
}
}
......
......@@ -305,7 +305,7 @@ public class Handler extends ContainerHolder implements PageHandler<Context> {
private String m_name;
private String m_type;
public TransactionReportFilter(String type, String name, String ip) {
m_type = type;
m_name = name;
......@@ -325,12 +325,14 @@ public class Handler extends ContainerHolder implements PageHandler<Context> {
@Override
public void visitMachine(com.dianping.cat.consumer.transaction.model.entity.Machine machine) {
if (m_ipAddress == null || m_ipAddress.equals(CatString.ALL_IP)) {
super.visitMachine(machine);
} else if (machine.getIp().equals(m_ipAddress)) {
super.visitMachine(machine);
} else {
// skip it
synchronized (machine) {
if (m_ipAddress == null || m_ipAddress.equals(CatString.ALL_IP)) {
super.visitMachine(machine);
} else if (machine.getIp().equals(m_ipAddress)) {
super.visitMachine(machine);
} else {
// skip it
}
}
}
......@@ -362,10 +364,7 @@ public class Handler extends ContainerHolder implements PageHandler<Context> {
public void visitType(TransactionType type) {
if (m_type == null) {
super.visitType(type);
} else if (m_type != null && type.getId().equals(m_type)) {
type.setSuccessMessageUrl(null);
type.setFailMessageUrl(null);
super.visitType(type);
} else {
// skip it
......
package com.dianping.cat.report.page.model.cross;
import java.util.Date;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.cross.model.transform.DefaultSaxParser;
import com.dianping.cat.hadoop.dal.Report;
import com.dianping.cat.hadoop.dal.ReportDao;
import com.dianping.cat.hadoop.dal.ReportEntity;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.internal.BaseLocalModelService;
......@@ -13,6 +20,9 @@ public class LocalCrossService extends BaseLocalModelService<CrossReport> {
@Inject
private BucketManager m_bucketManager;
@Inject
private ReportDao m_reportDao;
public LocalCrossService() {
super("cross");
}
......@@ -36,10 +46,13 @@ public class LocalCrossService extends BaseLocalModelService<CrossReport> {
if (report == null) {
report = new CrossReport(domain);
List<Report> historyReports = m_reportDao.findAllByDomainNameDuration(new Date(hour), new Date(
hour + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME);
CrossReport catReport = getLocalReport(date, "Cat");
if (catReport != null) {
report.getDomainNames().addAll(catReport.getDomainNames());
Set<String> domainNames = report.getDomainNames();
for (Report temp : historyReports) {
domainNames.add(temp.getDomain());
}
}
}
......
package com.dianping.cat.report.page.model.event;
import java.util.Date;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.consumer.event.model.transform.DefaultSaxParser;
import com.dianping.cat.hadoop.dal.Report;
import com.dianping.cat.hadoop.dal.ReportDao;
import com.dianping.cat.hadoop.dal.ReportEntity;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.internal.BaseLocalModelService;
......@@ -13,6 +20,9 @@ public class LocalEventService extends BaseLocalModelService<EventReport> {
@Inject
private BucketManager m_bucketManager;
@Inject
private ReportDao m_reportDao;
public LocalEventService() {
super("event");
}
......@@ -36,10 +46,13 @@ public class LocalEventService extends BaseLocalModelService<EventReport> {
if (report == null) {
report = new EventReport(domain);
List<Report> historyReports = m_reportDao.findAllByDomainNameDuration(new Date(hour), new Date(
hour + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME);
EventReport catReport = getLocalReport(date, "Cat");
if (catReport != null) {
report.getDomainNames().addAll(catReport.getDomainNames());
Set<String> domainNames = report.getDomainNames();
for (Report temp : historyReports) {
domainNames.add(temp.getDomain());
}
}
}
......
package com.dianping.cat.report.page.model.heartbeat;
import java.util.Date;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.heartbeat.model.transform.DefaultSaxParser;
import com.dianping.cat.hadoop.dal.Report;
import com.dianping.cat.hadoop.dal.ReportDao;
import com.dianping.cat.hadoop.dal.ReportEntity;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.internal.BaseLocalModelService;
......@@ -13,6 +20,9 @@ public class LocalHeartbeatService extends BaseLocalModelService<HeartbeatReport
@Inject
private BucketManager m_bucketManager;
@Inject
private ReportDao m_reportDao;
public LocalHeartbeatService() {
super("heartbeat");
}
......@@ -37,9 +47,12 @@ public class LocalHeartbeatService extends BaseLocalModelService<HeartbeatReport
if (report == null) {
report = new HeartbeatReport(domain);
HeartbeatReport catReport = getLocalReport(date, "Cat");
if (catReport != null) {
report.getDomainNames().addAll(catReport.getDomainNames());
List<Report> historyReports = m_reportDao.findAllByDomainNameDuration(new Date(hour), new Date(
hour + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME);
Set<String> domainNames = report.getDomainNames();
for (Report temp : historyReports) {
domainNames.add(temp.getDomain());
}
}
}
......
package com.dianping.cat.report.page.model.matrix;
import java.util.Date;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.matrix.model.entity.MatrixReport;
import com.dianping.cat.consumer.matrix.model.transform.DefaultSaxParser;
import com.dianping.cat.hadoop.dal.Report;
import com.dianping.cat.hadoop.dal.ReportDao;
import com.dianping.cat.hadoop.dal.ReportEntity;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.internal.BaseLocalModelService;
......@@ -13,6 +20,9 @@ public class LocalMatrixService extends BaseLocalModelService<MatrixReport> {
@Inject
private BucketManager m_bucketManager;
@Inject
private ReportDao m_reportDao;
public LocalMatrixService() {
super("matrix");
}
......@@ -37,9 +47,12 @@ public class LocalMatrixService extends BaseLocalModelService<MatrixReport> {
if (report == null) {
report = new MatrixReport(domain);
MatrixReport catReport = getLocalReport(date, "Cat");
if (catReport != null) {
report.getDomainNames().addAll(catReport.getDomainNames());
List<Report> historyReports = m_reportDao.findAllByDomainNameDuration(new Date(hour), new Date(
hour + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME);
Set<String> domainNames = report.getDomainNames();
for (Report temp : historyReports) {
domainNames.add(temp.getDomain());
}
}
}
......
package com.dianping.cat.report.page.model.problem;
import java.util.Date;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.consumer.problem.model.transform.DefaultSaxParser;
import com.dianping.cat.hadoop.dal.Report;
import com.dianping.cat.hadoop.dal.ReportDao;
import com.dianping.cat.hadoop.dal.ReportEntity;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.internal.BaseLocalModelService;
......@@ -13,6 +20,9 @@ public class LocalProblemService extends BaseLocalModelService<ProblemReport> {
@Inject
private BucketManager m_bucketManager;
@Inject
private ReportDao m_reportDao;
public LocalProblemService() {
super("problem");
}
......@@ -36,10 +46,13 @@ public class LocalProblemService extends BaseLocalModelService<ProblemReport> {
if (report == null) {
report = new ProblemReport(domain);
List<Report> historyReports = m_reportDao.findAllByDomainNameDuration(new Date(hour), new Date(
hour + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME);
ProblemReport catReport = getLocalReport(date, "Cat");
if (catReport != null) {
report.getDomainNames().addAll(catReport.getDomainNames());
Set<String> domainNames = report.getDomainNames();
for (Report temp : historyReports) {
domainNames.add(temp.getDomain());
}
}
}
......
package com.dianping.cat.report.page.model.transaction;
import java.util.Date;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser;
import com.dianping.cat.hadoop.dal.Report;
import com.dianping.cat.hadoop.dal.ReportDao;
import com.dianping.cat.hadoop.dal.ReportEntity;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.internal.BaseLocalModelService;
......@@ -13,6 +20,9 @@ public class LocalTransactionService extends BaseLocalModelService<TransactionRe
@Inject
private BucketManager m_bucketManager;
@Inject
private ReportDao m_reportDao;
public LocalTransactionService() {
super("transaction");
}
......@@ -37,9 +47,12 @@ public class LocalTransactionService extends BaseLocalModelService<TransactionRe
if (report == null) {
report = new TransactionReport(domain);
TransactionReport catReport = getLocalReport(date, "Cat");
if (catReport != null) {
report.getDomainNames().addAll(catReport.getDomainNames());
List<Report> historyReports = m_reportDao.findAllByDomainNameDuration(new Date(hour), new Date(
hour + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME);
Set<String> domainNames = report.getDomainNames();
for (Report temp : historyReports) {
domainNames.add(temp.getDomain());
}
}
}
......
package com.dianping.cat.report.page.monthreport;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import com.dianping.cat.consumer.monthreport.model.entity.MonthReport;
......@@ -41,7 +41,11 @@ public class Model extends AbstractReportModel<Action, Context> {
StringSortHelper.sortDomain(domains);
return domains;
}
return Collections.emptySet();
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(getDomain());
return arrayList;
}
public MonthReport getReport() {
......
......@@ -2,6 +2,7 @@ package com.dianping.cat.report.page.problem;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.report.page.AbstractReportModel;
......@@ -83,9 +84,16 @@ public class Model extends AbstractReportModel<Action, Context> {
@Override
public List<String> getDomains() {
if (m_report == null) {
return new ArrayList<String>();
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(getDomain());
return arrayList;
} else {
return StringSortHelper.sortDomain(m_report.getDomainNames());
Set<String> domainNames = m_report.getDomainNames();
domainNames.add(getDomain());
return StringSortHelper.sortDomain(domainNames);
}
}
......
......@@ -2,6 +2,7 @@ package com.dianping.cat.report.page.transaction;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.report.page.AbstractReportModel;
......@@ -64,9 +65,15 @@ public class Model extends AbstractReportModel<Action, Context> {
@Override
public List<String> getDomains() {
if (m_report == null) {
return new ArrayList<String>();
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(getDomain());
return arrayList;
} else {
return StringSortHelper.sortDomain(m_report.getDomainNames());
Set<String> domainNames = m_report.getDomainNames();
domainNames.add(getDomain());
return StringSortHelper.sortDomain(domainNames);
}
}
......
......@@ -256,6 +256,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -300,6 +303,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -344,6 +350,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -388,6 +397,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -432,6 +444,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -476,6 +491,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -1073,6 +1091,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -1087,6 +1108,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -1156,6 +1180,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -1170,6 +1197,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -1184,6 +1214,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......@@ -1198,6 +1231,9 @@
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.hadoop.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageConsumer</role>
<role-hint>realtime</role-hint>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册