提交 85f783f7 编写于 作者: F Frankie Wu

add interfaces after group discussion/brainstorm

上级 b75e9c0d
package com.dianping.dog.alarm.data;
import java.util.Date;
public interface DataEvent {
public Date getTimestamp();
public String getDomain();
public String getIp();
public String getReport();
public String getType();
public String getName();
public long getTotalCount();
public long getFailCount();
}
package com.dianping.dog.alarm.data;
public interface TransactionEvent extends DataEvent {
public double getAvg();
// add more
}
package com.dianping.dog.alarm.notification;
import java.util.List;
public interface EmailEvent {
public String getTitle();
public String getContent();
public List<String> getTos();
}
package com.dianping.dog.alarm.notification;
import java.util.List;
public interface SmsEvent {
public String getContent();
public List<String> getPhoneNumbers();
}
package com.dianping.dog.alarm.problem;
import com.dianping.dog.alarm.data.DataEvent;
public interface ProblemEvent extends DataEvent {
}
package com.dianping.dog.alarm.problem;
public interface ProblemViolationEvent {
public ProblemEvent getOrigin();
}
package com.dianping.dog.alarm.rule;
public enum AlarmRuleType {
Exception,
Service;
}
package com.dianping.dog.alarm.rule;
public enum AlarmStrategy {
EMAIL("email"), SMS("sms");
private String m_name;
private int m_interval;
private AlarmStrategy(String name) {
m_name = name;
}
public AlarmStrategy setInterval(int interval) {
m_interval = interval;
return this;
}
public String getName() {
return m_name;
}
public int getInterval() {
return m_interval;
}
}
package com.dianping.dog.alarm.rule;
public enum Level {
Level1, Level2, Level3
}
package com.dianping.dog.alarm.rule.exception;
import java.util.List;
import com.dianping.dog.connector.RowData;
import com.dianping.dog.event.AlarmEvent;
import com.dianping.dog.event.DataEvent;
import com.dianping.dog.event.EventDispatcher;
import com.dianping.dog.event.EventListener;
import com.site.lookup.annotation.Inject;
public class ExceptionAlarmExecutor implements EventListener<DataEvent> {
@Inject
private EventDispatcher m_dispatch;
@Inject
private ExceptionRowDataManager m_rowDatamanager;
@Inject
private ExceptionRuleManager m_manager;
@Override
public boolean isEligible(DataEvent event) {
return false;
}
@Override
public void onEvent(DataEvent event) {
m_rowDatamanager.addData(event.getRowData());
List<ExceptionRule> rules = m_manager.getRules();
if (rules != null) {
for (ExceptionRule rule : rules) {
List<RowData> datas = m_rowDatamanager.fetchRowData(rule);
AlarmEvent alarm = rule.apply(datas);
if (alarm != null) {
m_dispatch.dispatch(alarm);
}
}
}
}
}
package com.dianping.dog.alarm.rule.exception;
import java.util.List;
import com.dianping.dog.connector.RowData;
public class ExceptionRowDataManager {
public void addData(RowData data) {
}
public List<RowData> fetchRowData(ExceptionRule rule) {
return null;
}
}
package com.dianping.dog.alarm.rule.exception;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.dianping.dog.alarm.rule.AlarmStrategy;
import com.dianping.dog.alarm.rule.Level;
import com.dianping.dog.connector.RowData;
import com.dianping.dog.event.AlarmEvent;
public class ExceptionRule {
private String m_domain;
private Map<Level, List<AlarmStrategy>> m_alarmStrategies = new HashMap<Level, List<AlarmStrategy>>();
private Map<Level, Integer> m_alarmThresholds = new HashMap<Level, Integer>();
public int getByAlarmStrategy(Level level) {
return 0;
}
public AlarmEvent apply(List<RowData> datas) {
return null;
}
public ExceptionRule addBaseRuleDef(ExceptionRuleDef def) {
return this;
}
public Map<Level, List<AlarmStrategy>> getCustomAlarmStrategies() {
return m_alarmStrategies;
}
public Map<Level, Integer> get_customAlarmThresholds() {
return m_alarmThresholds;
}
public String getDomain() {
return m_domain;
}
public void setDomain(String domain) {
m_domain = domain;
}
}
package com.dianping.dog.alarm.rule.exception;
import java.util.HashMap;
import java.util.Map;
import com.dianping.dog.alarm.rule.AlarmStrategy;
import com.dianping.dog.alarm.rule.Level;
import com.sun.tools.javac.util.List;
public class ExceptionRuleDef {
private Map<Level, List<AlarmStrategy>> m_alarmStrategies = new HashMap<Level, List<AlarmStrategy>>();
private Map<Level, Integer> m_alarmThresholds = new HashMap<Level, Integer>();
public Map<Level, List<AlarmStrategy>> getAlarmStrategies() {
return m_alarmStrategies;
}
public void setAlarmStrategies(Map<Level, List<AlarmStrategy>> alarmStrategies) {
m_alarmStrategies = alarmStrategies;
}
public Map<Level, Integer> getAlarmThresholds() {
return m_alarmThresholds;
}
public void setAlarmThresholds(Map<Level, Integer> alarmThresholds) {
m_alarmThresholds = alarmThresholds;
}
}
package com.dianping.dog.alarm.rule.exception;
import java.util.ArrayList;
import java.util.List;
public class ExceptionRuleManager {
private List<ExceptionRule> rules=new ArrayList<ExceptionRule>();
public List<ExceptionRule> getRules() {
return rules;
}
public void add(){
}
public void update(){
}
public void delete(){
}
}
package com.dianping.dog.alarm.voilation;
public interface ViolationEvent {
}
......@@ -6,7 +6,6 @@ import java.util.List;
import java.util.Map;
public class DefaultEventListenerRegistry implements EventListenerRegistry,EventListener<RuleEvent> {
private Map<EventType, List<EventListener<Event>>> m_map = new HashMap<EventType, List<EventListener<Event>>>();
@Override
......
package com.dianping.dog.event;
public interface EventListener<T extends Event> {
public boolean isEligible(T event);
public void onEvent(T event);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册