提交 25dd0ea7 编写于 作者: F Frankie Wu

bug fix and code cleanup

上级 962427d7
......@@ -2,7 +2,6 @@ package com.dianping.bee.engine;
import java.sql.SQLException;
public interface QueryService {
public RowSet query(String sql, Object... params) throws SQLException;
......
......@@ -79,7 +79,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(TableHelper.class) //
.req(TableProviderManager.class));
all.add(C(RowContext.class, DefaultRowContext.class));
all.add(C(RowContext.class, DefaultRowContext.class).is(PER_LOOKUP));
all.add(C(SingleTableStatement.class).is(PER_LOOKUP)//
.req(RowContext.class));
all.add(C(SingleTableRowFilter.class).is(PER_LOOKUP));
......@@ -146,8 +146,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(Evaluator.class, ComparisionEqualsEvaluator.ID, ComparisionEqualsEvaluator.class));
all.add(C(Evaluator.class, ComparisionIsEvaluator.ID, ComparisionIsEvaluator.class));
all.add(C(Evaluator.class, ComparisionGreaterThanEvaluator.ID, ComparisionGreaterThanEvaluator.class));
all.add(C(Evaluator.class, ComparisionGreaterThanOrEqualsEvaluator.ID,
ComparisionGreaterThanOrEqualsEvaluator.class));
all.add(C(Evaluator.class, ComparisionGreaterThanOrEqualsEvaluator.ID, ComparisionGreaterThanOrEqualsEvaluator.class));
all.add(C(Evaluator.class, ComparisionLessThanEvaluator.ID, ComparisionLessThanEvaluator.class));
all.add(C(Evaluator.class, ComparisionLessThanOrEqualsEvaluator.ID, ComparisionLessThanOrEqualsEvaluator.class));
......
package com.dianping.bee.engine.evaluator.function;
import java.util.HashSet;
import java.util.Set;
import com.alibaba.cobar.parser.ast.expression.Expression;
import com.alibaba.cobar.parser.ast.expression.primary.Wildcard;
import com.alibaba.cobar.parser.ast.expression.primary.function.groupby.Count;
import com.dianping.bee.engine.evaluator.AbstractEvaluator;
import com.dianping.bee.engine.spi.RowContext;
......@@ -9,15 +14,38 @@ public class CountEvaluator extends AbstractEvaluator<Count, Number> {
private long m_count;
private Set<Object> m_distincts;
@Override
public Number evaluate(RowContext ctx, Count expr) {
m_count++;
if (expr.isDistinct()) {
if (m_distincts == null) {
m_distincts = new HashSet<Object>();
}
Expression first = expr.getArguments().get(0);
if (first instanceof Wildcard) {
m_count++;
} else {
Object val = eval(ctx, first);
m_distincts.add(val);
}
} else {
m_count++;
}
return 0;
}
@Override
public Object getAggregatedValue() {
return m_count;
if (m_distincts != null) {
return m_distincts.size();
} else {
return m_count;
}
}
@Override
......
......@@ -3,8 +3,6 @@ package com.dianping.bee.engine.spi;
import java.util.List;
import java.util.Map;
import com.dianping.bee.engine.evaluator.Evaluator;
public interface RowContext {
public void afterQuery();
......@@ -18,8 +16,6 @@ public interface RowContext {
public int getColumnSize();
public Evaluator<?, ?> getEvaluator(String name);
public <T> T getFirstAttribute(String name, T defaultValue);
public <T> T getParameter(int colIndex);
......@@ -28,6 +24,12 @@ public interface RowContext {
public <T> T getValue(String columnName);
public <T> T lookupComponent(Class<T> role);
public <T> T lookupComponent(Class<T> role, String roleHint);
public void releaseComponent(Object component);
public void setAttributes(Map<String, List<Object>> m_attributes);
public void setColumns(ColumnMeta[] columns);
......
......@@ -4,7 +4,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import com.dianping.bee.engine.evaluator.Evaluator;
import com.dianping.bee.engine.spi.ColumnMeta;
import com.dianping.bee.engine.spi.RowContext;
import com.dianping.bee.engine.spi.RowListener;
......@@ -22,9 +21,9 @@ public class DefaultRowContext extends ContainerHolder implements RowContext {
private Map<String, List<Object>> m_attributes;
@Override
public void afterQuery() {
public void afterQuery() {
m_listener.onEnd(this);
}
}
@Override
public void applyRow() {
......@@ -33,9 +32,9 @@ public class DefaultRowContext extends ContainerHolder implements RowContext {
}
@Override
public void beforeQuery() {
public void beforeQuery() {
m_listener.onBegin(this);
}
}
@SuppressWarnings("unchecked")
@Override
......@@ -54,10 +53,6 @@ public class DefaultRowContext extends ContainerHolder implements RowContext {
return m_columns.length;
}
public Evaluator<?, ?> getEvaluator(String name) {
return lookup(Evaluator.class, name);
}
@SuppressWarnings("unchecked")
@Override
public <T> T getFirstAttribute(String name, T defaultValue) {
......@@ -75,7 +70,7 @@ public class DefaultRowContext extends ContainerHolder implements RowContext {
public <T> T getParameter(int colIndex) {
return (T) m_parameters[colIndex];
}
@SuppressWarnings("unchecked")
@Override
public <T> T getValue(int colIndex) {
......@@ -98,6 +93,21 @@ public class DefaultRowContext extends ContainerHolder implements RowContext {
return null;
}
@Override
public <T> T lookupComponent(Class<T> role) {
return lookup(role);
}
@Override
public <T> T lookupComponent(Class<T> role, String roleHint) {
return lookup(role, roleHint);
}
@Override
public void releaseComponent(Object component) {
release(component);
}
public void setAttributes(Map<String, List<Object>> attributes) {
m_attributes = attributes;
}
......
......@@ -87,7 +87,7 @@ public class DefaultRowListener extends ContainerHolder implements RowListener {
if (field.isAggregator(ctx)) {
m_values[i] = field.getAggregatedValue();
field.reset();
field.reset(ctx);
}
cells[i] = new DefaultCell(field, m_values[i]);
......
......@@ -92,7 +92,13 @@ public class DefaultStatementManager extends ContainerHolder implements Statemen
@Override
protected boolean removeEldestEntry(Entry<K, V> eldest) {
return size() > m_capacity;
boolean shouldRemove = size() > m_capacity;
if (shouldRemove) {
release(eldest.getValue());
}
return shouldRemove;
}
}
}
......@@ -62,7 +62,8 @@ class SelectField implements ColumnMeta {
@SuppressWarnings("unchecked")
private Evaluator<Expression, Object> getEvaluator(RowContext ctx) {
if (m_evaluator == null) {
Evaluator<Expression, Object> evaluator = (Evaluator<Expression, Object>) ctx.getEvaluator(m_expr.getClass().getName());
String name = m_expr.getClass().getName();
Evaluator<Expression, Object> evaluator = (Evaluator<Expression, Object>) ctx.lookupComponent(Evaluator.class, name);
m_evaluator = evaluator;
}
......@@ -81,7 +82,8 @@ class SelectField implements ColumnMeta {
@SuppressWarnings("unchecked")
public boolean isAggregator(RowContext ctx) {
if (m_expr != null) {
Evaluator<Expression, Object> evaluator = (Evaluator<Expression, Object>) ctx.getEvaluator(m_expr.getClass().getName());
String name = m_expr.getClass().getName();
Evaluator<Expression, Object> evaluator = (Evaluator<Expression, Object>) ctx.lookupComponent(Evaluator.class, name);
return evaluator.isAggregator();
} else {
......@@ -89,7 +91,10 @@ class SelectField implements ColumnMeta {
}
}
public void reset() {
m_evaluator = null;
public void reset(RowContext ctx) {
if (m_evaluator != null) {
ctx.releaseComponent(m_evaluator);
m_evaluator = null;
}
}
}
\ No newline at end of file
......@@ -45,6 +45,13 @@ public class SimpleServerConnection extends ServerConnection {
super(channel);
}
@Override
public boolean close() {
((SimpleServerQueryHandler) queryHandler).close();
return super.close();
}
// commands --------------------------------------------------------------
/**
* Override parent method in FrontendConnection
......@@ -111,7 +118,8 @@ public class SimpleServerConnection extends ServerConnection {
}
}
@Override
@SuppressWarnings("unused")
@Override
public void stmtExecute(byte[] data) {
LOGGER.info("StmtExecute : " + data);
m_sessionManager.getSession().setDatabase(getSchema());
......
......@@ -35,9 +35,7 @@ public class SimpleServerConnectionFactory extends FrontendConnectionFactory {
protected FrontendConnection getConnection(SocketChannel channel) {
LOGGER.info("getConnection : " + channel);
SimpleServerConnection c = new SimpleServerConnection(channel);
FrontendQueryHandler queryHandler = getQueryHandler(c); // TODO use
// another one for
// test
FrontendQueryHandler queryHandler = getQueryHandler(c);
c.setSessionManager(getSessionManager());
c.setQueryHandler(queryHandler);
......
......@@ -19,9 +19,10 @@ import com.dianping.bee.engine.spi.handler.SelectHandler;
import com.dianping.bee.engine.spi.handler.SetHandler;
import com.dianping.bee.engine.spi.handler.ShowHandler;
import com.dianping.bee.engine.spi.handler.UseHandler;
import com.site.lookup.ContainerHolder;
import com.site.lookup.annotation.Inject;
public class SimpleServerQueryHandler implements FrontendQueryHandler {
public class SimpleServerQueryHandler extends ContainerHolder implements FrontendQueryHandler {
private static final Logger LOGGER = Logger.getLogger(SimpleServerQueryHandler.class);
......@@ -45,6 +46,10 @@ public class SimpleServerQueryHandler implements FrontendQueryHandler {
private ServerConnection m_conn;
public void close() {
release(this);
}
public PreparedStatement getStatement(Long stmtId) {
return m_prepareHandler.getStatement(stmtId);
}
......
......@@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.List;
import com.dianping.cat.message.spi.MessageCodec;
import com.dianping.cat.message.spi.MessagePathBuilder;
import com.dianping.cat.message.spi.codec.BufferWriter;
import com.dianping.cat.message.spi.codec.EscapingBufferWriter;
import com.dianping.cat.message.spi.codec.HtmlEncodingBufferWriter;
......@@ -24,7 +23,6 @@ class CodecComponentConfigurator extends AbstractResourceConfigurator {
all.add(C(MessageCodec.class, PlainTextMessageCodec.ID, PlainTextMessageCodec.class) //
.req(BufferWriter.class, EscapingBufferWriter.ID));
all.add(C(MessageCodec.class, HtmlMessageCodec.ID, HtmlMessageCodec.class) //
.req(MessagePathBuilder.class) //
.req(BufferWriter.class, HtmlEncodingBufferWriter.ID));
return all;
......
......@@ -17,7 +17,6 @@ import com.dianping.cat.message.Heartbeat;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.message.spi.MessageCodec;
import com.dianping.cat.message.spi.MessagePathBuilder;
import com.dianping.cat.message.spi.MessageTree;
import com.site.lookup.annotation.Inject;
......@@ -32,9 +31,6 @@ public class HtmlMessageCodec implements MessageCodec, Initializable {
@Inject
private BufferWriter m_writer;
@Inject
private MessagePathBuilder m_builder;
@Inject
private String m_logViewPrefix = "/cat/r/m/";
......@@ -191,8 +187,8 @@ public class HtmlMessageCodec implements MessageCodec, Initializable {
count += helper.td1(buf);
count += helper.nbsp(buf, level * 2); // 2 spaces per level
count += helper.write(buf, String.format("<a href=\"%s%s\" onclick=\"return show(this,'%s');\">[:: show ::]</a>",
m_logViewPrefix, link, link));
count += helper.write(buf,
String.format("<a href=\"%s%s\" onclick=\"return show(this,'%s');\">[:: show ::]</a>", m_logViewPrefix, link, link));
count += helper.td2(buf);
count += helper.td(buf, "<div id=\"" + link + "\"></div>", "colspan=\"4\"");
......@@ -256,10 +252,6 @@ public class HtmlMessageCodec implements MessageCodec, Initializable {
m_logViewPrefix = logViewPrefix;
}
public void setMessagePathBuilder(MessagePathBuilder builder) {
m_builder = builder;
}
public void setShowNav(boolean showNav) {
m_showNav = showNav;
}
......
......@@ -10,7 +10,6 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.message.spi.MessageCodec;
import com.dianping.cat.message.spi.MessagePathBuilder;
import com.dianping.cat.message.spi.MessageTree;
import com.site.lookup.annotation.Inject;
......@@ -25,9 +24,6 @@ public class WaterfallMessageCodec implements MessageCodec, Initializable {
@Inject
private BufferWriter m_writer;
@Inject
private MessagePathBuilder m_builder;
@Inject
private boolean m_showNav = true;
......@@ -141,10 +137,6 @@ public class WaterfallMessageCodec implements MessageCodec, Initializable {
m_bufferHelper = new BufferHelper(m_writer);
}
public void setMessagePathBuilder(MessagePathBuilder builder) {
m_builder = builder;
}
public void setShowNav(boolean showNav) {
m_showNav = showNav;
}
......
......@@ -9,7 +9,6 @@ import java.util.Set;
import javax.servlet.ServletException;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.consumer.database.model.entity.DatabaseReport;
import com.dianping.cat.consumer.database.model.transform.DefaultSaxParser;
import com.dianping.cat.hadoop.dal.Dailyreport;
......@@ -38,7 +37,6 @@ import com.site.web.mvc.annotation.PayloadMeta;
* @author youyong
*/
public class Handler implements PageHandler<Context> {
public static final long ONE_HOUR = 3600 * 1000L;
@Inject
......@@ -53,9 +51,6 @@ public class Handler implements PageHandler<Context> {
@Inject
private JspViewer m_jspViewer;
@Inject
private ServerConfigManager m_manager;
@Inject(type = ModelService.class, value = "database")
private ModelService<DatabaseReport> m_service;
......@@ -178,8 +173,8 @@ public class Handler implements PageHandler<Context> {
}
} else {
try {
List<Dailyreport> reports = m_dailyreportDao.findDatabaseAllByDomainNameDuration(start, end, database,
"database", DailyreportEntity.READSET_FULL);
List<Dailyreport> reports = m_dailyreportDao.findDatabaseAllByDomainNameDuration(start, end, database, "database",
DailyreportEntity.READSET_FULL);
DatabaseReportMerger merger = new DatabaseReportMerger(new DatabaseReport(database));
for (Dailyreport report : reports) {
String xml = report.getContent();
......
......@@ -1991,9 +1991,6 @@
<requirement>
<role>com.dianping.cat.report.page.database.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>database</role-hint>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册