提交 0982f3d3 编写于 作者: Y yanchun.yang

modified connect commponent

上级 9b5083f8
<?xml version="1.0" encoding="utf-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="config" type="ConfigType"/>
<xs:complexType name="ConfigType">
<xs:sequence>
......
<?xml version="1.0" encoding="utf-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="status" type="StatusType"/>
<xs:complexType name="StatusType">
<xs:sequence>
......
......@@ -23,6 +23,11 @@
<artifactId>web-framework</artifactId>
<version>1.0.15</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>org.json</artifactId>
<version>chargebee-1.0</version>
</dependency>
<dependency>
<groupId>com.site.common</groupId>
<artifactId>test-framework</artifactId>
......
......@@ -2,6 +2,7 @@ package com.dianping.dog.alarm.connector;
import java.util.Date;
import com.dianping.dog.alarm.entity.ConnectEntity;
import com.dianping.dog.alarm.parser.DataParser;
import com.dianping.dog.alarm.parser.DataParserFactory;
......@@ -9,32 +10,31 @@ public abstract class AbstractConnector<T> implements Connector {
private long connectorId;
private ConnectorContext m_ctx;
private ConnectEntity m_entity;
private DataParserFactory m_parserFactory;
@Override
public void init(ConnectorContext rule) {
m_ctx = rule;
this.connectorId = rule.getRuleId();
public void init(ConnectEntity entity) {
m_entity = entity;
this.connectorId = m_entity.getConId();
}
@Override
public ConnectEntity getConnectorEntity() {
return m_entity;
}
@Override
public long getConnectorId() {
return connectorId;
}
@Override
public ConnectorContext getConnectorContext() {
return m_ctx;
}
public abstract T fetchContent(ConnectorContext ctx);
public abstract T fetchContent(ConnectEntity m_entity);
public final RowData produceData(Date currentTime){
m_ctx.touch(currentTime);
T content = fetchContent(m_ctx);
DataParser parser = m_parserFactory.getDataParser(m_ctx.getUrl());
T content = fetchContent(m_entity);
DataParser parser = m_parserFactory.getDataParser(m_entity.getUrl());
return parser.parse(content);
}
......
......@@ -2,13 +2,15 @@ package com.dianping.dog.alarm.connector;
import java.util.Date;
import com.dianping.dog.alarm.entity.ConnectEntity;
public interface Connector {
ConnectorContext getConnectorContext();
void init(ConnectEntity entity);
void init(ConnectorContext ctx);
ConnectEntity getConnectorEntity();
long getConnectorId();
......
package com.dianping.dog.alarm.connector;
import java.util.Date;
import com.dianping.dog.alarm.entity.ConnectEntity;
public class ConnectorContext implements Comparable<ConnectorContext> {
private ConnectorType type;
private ConnectEntity conEntity;
private Date time;
private String url;
@SuppressWarnings("unused")
private ConnectorContext() {
}
public ConnectorContext(ConnectEntity con) {
conEntity = con;
}
public long getRuleId(){
return 0;
}
public ConnectorType getType(){
return type;
}
public String getUrl(){
return url;
}
public ConnectEntity getConEntity() {
return conEntity;
}
public void setConEntity(ConnectEntity conEntity) {
this.conEntity = conEntity;
}
public Date getTime() {
return time;
}
public Date getModifiedTime(){
return this.conEntity.getGmtModified();
}
public void touch(Date time) {
this.time = time;
}
@Override
public int compareTo(ConnectorContext o) {
long t1 = this.getModifiedTime().getTime();
long t2 = o.getModifiedTime().getTime();
return (int)(t1 - t2);
}
}
......@@ -5,6 +5,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.dianping.dog.alarm.entity.ConnectEntity;
public class ConnectorManager {
......@@ -18,20 +20,20 @@ public class ConnectorManager {
return connectorList;
}
public void registerConnector(ConnectorContext ctx) {
public void registerConnector(ConnectEntity entity) {
synchronized (m_connectors) {
Connector con = m_connectors.get(ctx.getRuleId());
Connector con = m_connectors.get(entity.getConId());
if (con != null) {
if (con.getConnectorContext().compareTo(ctx) == 0) {
if (con.getConnectorEntity().compareTo(entity) == 0) {
return;
}
m_connectors.remove(ctx.getRuleId());
m_connectors.remove(entity.getConId());
}
if (ctx.getType() == ConnectorType.HTTP) {
if (entity.getConType() == ConnectorType.HTTP) {
con = new HttpConnector();
con.init(ctx);
con.init(entity);
}
m_connectors.put(ctx.getRuleId(), con);
m_connectors.put(entity.getConId(), con);
}
}
......
......@@ -2,12 +2,13 @@ package com.dianping.dog.alarm.connector;
import java.net.URL;
import com.dianping.dog.alarm.entity.ConnectEntity;
import com.site.helper.Files;
public class HttpConnector extends AbstractConnector<String> {
@Override
public String fetchContent(ConnectorContext ctx) {
public String fetchContent(ConnectEntity ctx) {
String url = ctx.getUrl();
try {
URL data = new URL(url);
......@@ -18,5 +19,4 @@ public class HttpConnector extends AbstractConnector<String> {
}
return null;
}
}
......@@ -2,7 +2,11 @@ package com.dianping.dog.alarm.entity;
import java.util.Date;
public class ConnectEntity {
import com.dianping.dog.alarm.connector.ConnectorType;
public class ConnectEntity implements Comparable<ConnectEntity>{
private long conId;
private String connectType;// http
......@@ -16,7 +20,29 @@ public class ConnectEntity {
private String name;
private String url;
private Date gmtModified;
public ConnectorType getConType(){
if(url.startsWith("http://")){
return ConnectorType.HTTP;
}else{
return ConnectorType.UNSUPPORT;
}
}
public String getUrl() {
return url;
}
public long getConId() {
return conId;
}
public void setConId(long conId) {
this.conId = conId;
}
public String getConnectType() {
return connectType;
......@@ -73,5 +99,10 @@ public class ConnectEntity {
public void setGmtModified(Date gmtModified) {
this.gmtModified = gmtModified;
}
@Override
public int compareTo(ConnectEntity o) {
return (int) (this.getGmtModified().getTime() - o.getGmtModified().getTime());
}
}
......@@ -22,7 +22,7 @@ public class RuleEntity {
private ConnectEntity connect;
private Date gmtModified;
private long interval;
public long getId() {
......
......@@ -4,7 +4,7 @@ public class DataParserFactory {
public DataParser getDataParser(String url){
return null;
return new DefaultDataParser();
}
}
package com.dianping.dog.alarm.parser;
import org.json.JSONObject;
import com.dianping.dog.alarm.connector.RowData;
public class DefaultDataParser implements DataParser {
......@@ -7,7 +9,7 @@ public class DefaultDataParser implements DataParser {
@SuppressWarnings("hiding")
@Override
public <String> RowData parse(String context) {
JSONObject jsonObject = new JSONObject(context);
return new RowData();
}
......
......@@ -2,14 +2,13 @@ package com.dianping.dog.alarm.rule;
import java.util.List;
import com.dianping.dog.alarm.data.DataEvent;
import com.dianping.dog.alarm.entity.Duration;
import com.dianping.dog.alarm.entity.RuleEntity;
import com.dianping.dog.event.Event;
public class ExceptionRule implements Rule{
RuleEntity m_entity;
private RuleEntity m_entity;
@Override
public boolean init(RuleEntity entity) {
......@@ -23,17 +22,15 @@ public class ExceptionRule implements Rule{
}
@Override
public boolean isEligible(Event event) {
public boolean isEligible(DataEvent event) {
return false;
}
@Override
public boolean apply(Event event) {
public boolean apply(DataEvent event) {
List<Duration> durations = m_entity.getDurations();
for(Duration duration:durations){
}
return false;
}
......
package com.dianping.dog.alarm.rule;
import java.util.Comparator;
import java.util.TreeSet;
import com.dianping.dog.alarm.problem.ProblemEvent;
public class PeriodStorage implements Storage<ProblemEvent, Integer> {
private long m_period;
private TreeSet<ProblemEvent> sortedDatas;
@Override
public void init(long period) {
m_period = period;
sortedDatas = new TreeSet<ProblemEvent>();
}
@Override
public void save(ProblemEvent data, long timeStamp) {
WrapperProblemEvent wrapper = new WrapperProblemEvent(data);
long expiredTime = timeStamp - m_period;
//sortedDatas.subSet(wrapper, toElement);
}
@Override
public Integer getData(DataVistor<ProblemEvent, Integer> vistor) {
return null;
}
}
class WrapperProblemEvent implements Comparator<ProblemEvent>{
private ProblemEvent m_problemEvent;
public WrapperProblemEvent(ProblemEvent event){
m_problemEvent = event;
}
public ProblemEvent getProblemEvent(){
return m_problemEvent;
}
@Override
public int compare(ProblemEvent o1, ProblemEvent o2) {
long t1 = o1.getTimestamp().getTime();
long t2 = o2.getTimestamp().getTime();
return (int) (t1-t2);
}
}
\ No newline at end of file
package com.dianping.dog.alarm.rule;
import com.dianping.dog.alarm.data.DataEvent;
import com.dianping.dog.alarm.entity.RuleEntity;
import com.dianping.dog.event.Event;
public interface Rule {
......@@ -9,8 +9,8 @@ public interface Rule {
public String getName();
public boolean isEligible(Event event);
public boolean isEligible(DataEvent event);
public boolean apply(Event event);
public boolean apply(DataEvent event);
}
package com.dianping.dog.alarm.rule;
import com.dianping.dog.event.Event;
public interface Storage<T extends Event,R> {
void init(long period);
void save(T data,long currentTime);
R getData(DataVistor<T,R> vistor);
}
package com.dianping.dog.event;
import org.junit.Test;
import com.site.lookup.ComponentTestCase;
public class TestDataParser extends ComponentTestCase{
@Test
public void testDataParser() throws Exception{
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册