sequence.java
来自「RFID复杂事件处理系统的研究实验」· Java 代码 · 共 254 行
JAVA
254 行
package test2;
import java.util.LinkedList;
public class Sequence extends NonLeaf{
public Sequence(Sequence q)
{
super(q);
this.operator=new String(";");
}
public Sequence()
{
super();
this.operator=new String(";");
}
public C_Event work(NonLeaf n,Node n2)
{
C_Event ce=null;
Node n1=n.getlchild();
NonLeaf p1;
Leaf q1,q2;
if(n1.getisleaf() && n2.getisleaf())
{
q1=(Leaf)n1;
q2=(Leaf)n2;
if(q1.getevents().size()==0)
{
q2.getevents().getLast().setFlag();
}
else{
P_Event pe2=q2.getevents().getLast();
int i;
for(i=0;i<q1.getevents().size();i++)
{
if(q1.getevents().get(i).flag)
{
P_Event pe1=q1.getevents().get(i);
ce=new C_Event(pe1,pe2,n);
pe1.setFlag();
pe2.setFlag();
break;
}
}
if(i==q1.getevents().size())
q2.getevents().getLast().setFlag();
}
}else{
if(!n1.getisleaf() && n2.getisleaf())
{
p1=(NonLeaf)n1;
q2=(Leaf)n2;
if(p1.getmid_result().size()==0)
{
q2.getevents().getLast().setFlag();
}
else{
P_Event pe1=q2.getevents().getLast();
int i;
for(i=0;i<p1.getmid_result().size();i++)
{
if(p1.getmid_result().get(i).flag)
{
C_Event ce0=p1.getmid_result().get(i);
ce=new C_Event(pe1,ce0,n);
pe1.setFlag();
ce0.setFlag();
break;
}
}
if(i==p1.getmid_result().size())
q2.getevents().getLast().setFlag();
}
}
}
/*try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}*/
return ce;
}
public LinkedList<C_Event> work0(int ii,NonLeaf n,Node n2)
{
LinkedList<C_Event> cel=new LinkedList<C_Event>();
Node n1;
if(n2==n.getlchild()){
n1=n.getrchild();
}else n1=n.getlchild();
NonLeaf p1,p2;
Leaf q1,q2;
if(n1.getisleaf() && n2.getisleaf())
{
q1=(Leaf)n1;
q2=(Leaf)n2;
if(q2==n.getlchild()){//左结点有乱序
int k;
for(k=0;k<q1.getevents().size();k++)
{
if(q2.getevents().get(ii).gettimestamp()<q1.getevents().get(k).gettimestamp()) break;
}
if(k!=q1.getevents().size())
{
int j=ii;
int i;
for(i=k;i<q1.getevents().size();i++)
{
POINT1:for(;j<q2.getevents().size();j++)
{
if(q2.getevents().get(j).compareEarly(q1.getevents().get(i)))
break POINT1;
}
if(j!=q2.getevents().size()){
cel.addLast(new C_Event(q1.getevents().get(i),q2.getevents().get(j),n));
q1.getevents().get(i).setFlag();
q2.getevents().get(j).setFlag();
j++;
}
else{
for(;i<q1.getevents().size();i++)
q1.getevents().get(i).setFlag();
}
}
if(i==q1.getevents().size() && j!=q2.getevents().size())
{
for(;j<q2.getevents().size();j++)
q2.getevents().get(j).resetFlag();
}
}
}else{
if(q1.getevents().size()==0)
{
q2.getevents().get(ii).setFlag();
}else{
int j=ii;
POINT0:for(int i=ii;i<q2.getevents().size();i++)
{
POINT:for(;j<q1.getevents().size();j++)
{
if(q1.getevents().get(j).compareEarly(q2.getevents().get(i)))
break POINT;
}
if(j<q1.getevents().size()){
cel.addLast(new C_Event(q1.getevents().get(j),q2.getevents().get(i),n));
q1.getevents().get(j).setFlag();
q2.getevents().get(i).setFlag();
j++;
}
else{
for(;i<q2.getevents().size();i++)
q2.getevents().get(i).setFlag();
break POINT0;
}
}
}
}
}else{
if(!n1.getisleaf() && n2.getisleaf())//右结点有乱序
{
p1=(NonLeaf)n1;
q2=(Leaf)n2;
if(p1.getmid_result().size()==0)
{
q2.getevents().get(ii).setFlag();
}else{
int j=ii;
for(int i=ii;i<q2.getevents().size();i++)
{
POINT:for(;j<p1.getmid_result().size();j++)
{
if(p1.getmid_result().get(j).compareEarly(q2.getevents().get(i)))
break POINT;
}
if(j<p1.getmid_result().size()){
cel.addLast(new C_Event(q2.getevents().get(i),p1.getmid_result().get(j),n));
p1.getmid_result().get(j).setFlag();
q2.getevents().get(i).setFlag();
}
else{
for(;i<q2.getevents().size();i++)
q2.getevents().get(i).setFlag();
}
}
}
}else{
if(n1.getisleaf() && !n2.getisleaf())//左结点有乱序
{
q1=(Leaf)n1;
p2=(NonLeaf)n2;
int k;
for(k=0;k<q1.getevents().size();k++)
{
if(p2.getmid_result().get(ii).gett_end()<q1.getevents().get(k).gettimestamp()) break;
}
if(k!=q1.getevents().size())
{
int j=ii;
int i;
for(i=k;i<q1.getevents().size();i++)
{
POINT1:for(;j<p2.getmid_result().size();j++)
{
if(p2.getmid_result().get(j).compareEarly(q1.getevents().get(i)))
break POINT1;
}
if(j!=p2.getmid_result().size()){
cel.addLast(new C_Event(q1.getevents().get(i),p2.getmid_result().get(j),n));
q1.getevents().get(i).setFlag();
p2.getmid_result().get(j).setFlag();
}
else{
for(;i<q1.getevents().size();i++)
q1.getevents().get(i).setFlag();
}
}
j++;
if(i==q1.getevents().size() && j!=p2.getmid_result().size())
{
for(;j<p2.getmid_result().size();j++)
p2.getmid_result().get(j).resetFlag();
}
}
}
}
}
/*try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}*/
return cel;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?