首页 > 其他 > 详细

esper(2)-事件类型-pojo

时间:2019-03-22 16:30:27      阅读:119      评论:0      收藏:0      [点我收藏+]

一、

1、Person.java

import lombok.*;

import java.util.List;
import java.util.Map;


@Setter
@Getter
@ToString
public class Person {
    String name;
    int age;
    List<Child> children;
    Map<String,Integer> phones;
    Address address;
}
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
class Child {
    String name;
    int gender;

}
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
class Address {
    String road;
    String street;
    int houseNo;
}

2、PojoTest.java

import cn.hutool.core.collection.CollUtil;
import com.espertech.esper.client.*;
import org.junit.Test;

import java.util.List;


/**
 * @author yaoyuan2
 * @date 2019/3/21
 */
public class PojoTest {
    static EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider();
    static EPAdministrator admin = epService.getEPAdministrator();

    public EPRuntime getRuntime(String epl) {
        EPStatement state = admin.createEPL(epl);
        state.addListener(new UpdateListener() {
            @Override
            public void update(EventBean[] newEvents, EventBean[] oldEvents) {
                if (newEvents != null) {
                    Address address = (Address)newEvents[0].get("address");
                    List<Child> children = (List<Child>)newEvents[0].get("children");
                    Integer age = (Integer)newEvents[0].get("age");

                    System.out.println("address =" + address.getRoad());
                    System.out.println("children =" + children);
                    System.out.println("age =" + age);
                }
            }
        });
        EPRuntime runtime = epService.getEPRuntime();
        return runtime;
    }
    @Test
    public void test1() {
        String epl = "select age,children,address from com.ebc.eventtype.pojo.Person where name=\"yaoyuan\"";
        EPRuntime runtime = getRuntime(epl);

        Person p1 = new Person();
        p1.setName("yaoyuan");
        p1.setAge(20);
        p1.setChildren(CollUtil.newArrayList(new Child("c1", 1), new Child("c2", 2)));
        p1.setAddress(new Address("解放道", "食品大街", 30));
        runtime.sendEvent(p1);

        Person p2 = new Person();
        p2.setName("yaoyuan2");
        p2.setAge(21);
        p2.setChildren(CollUtil.newArrayList(new Child("c1", 1), new Child("c2", 2)));
        p2.setAddress(new Address("燕顺路", "开发区大街", 31));
        runtime.sendEvent(p2);
    }
}

输出

address =解放道
children =[Child(name=c1, gender=1), Child(name=c2, gender=2)]
age =20

 二、获取List指定元素、map指定元素、对象的某个属性值

1、

public class Person {

    public Child getChildren(int index) {
        return children.get(index);
    }
    public int getPhones(String name) {
        return phones.get(name);
    }

}

2、

String epl = "select children[1],phones(‘home‘),address.road from com.ebc.eventtype.pojo.pojo2.Person where name=\"yaoyuan\"";
public void update(EventBean[] newEvents, EventBean[] oldEvents) {
                if (newEvents != null) {
                    Child child = (Child)newEvents[0].get("children[1]");
                    Integer phone = (Integer)newEvents[0].get("phones(‘home‘)");
                    String road = (String)newEvents[0].get("address.road");
                    Console.log("child={},phone={},road={}",child,phone,road);
                }
            }

输出:

child=Child(name=c2, gender=2),phone=186000,road=解放道

 

esper(2)-事件类型-pojo

原文:https://www.cnblogs.com/yaoyuan2/p/10578648.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!