/*
***************************************************************************************
* Copyright (C) 2006 EsperTech, Inc. All rights reserved. *
* http://www.espertech.com/esper *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
***************************************************************************************
*/
package com.espertech.esper.regression.nwtable;
import com.espertech.esper.client.Configuration;
import com.espertech.esper.client.EPServiceProviderManager;
import com.espertech.esper.client.EPStatement;
import com.espertech.esper.client.scopetest.EPAssertionUtil;
import com.espertech.esper.client.scopetest.SupportUpdateListener;
import com.espertech.esper.core.service.EPServiceProviderSPI;
import com.espertech.esper.core.service.EPStatementSPI;
import com.espertech.esper.core.service.StatementType;
import com.espertech.esper.epl.named.NamedWindowProcessor;
import com.espertech.esper.metrics.instrumentation.InstrumentationHelper;
import com.espertech.esper.supportregression.bean.SupportBean;
import com.espertech.esper.supportregression.bean.SupportBeanTwo;
import com.espertech.esper.supportregression.bean.SupportBean_A;
import com.espertech.esper.supportregression.bean.SupportBean_ST0;
import com.espertech.esper.supportregression.client.SupportConfigFactory;
import com.espertech.esper.util.EventRepresentationChoice;
import junit.framework.TestCase;
import java.util.LinkedList;
import java.util.List;
public class TestNamedWindowOnDelete extends TestCase
{
private EPServiceProviderSPI epService;
private SupportUpdateListener listenerWindow;
private SupportUpdateListener listenerWindowTwo;
private SupportUpdateListener listenerSelect;
private SupportUpdateListener listenerDelete;
public void setUp()
{
Configuration config = SupportConfigFactory.getConfiguration();
config.getEngineDefaults().getLogging().setEnableQueryPlan(true);
epService = (EPServiceProviderSPI) EPServiceProviderManager.getDefaultProvider(config);
epService.initialize();
if (InstrumentationHelper.ENABLED) { InstrumentationHelper.startTest(epService, this.getClass(), getName());}
listenerWindow = new SupportUpdateListener();
listenerWindowTwo = new SupportUpdateListener();
listenerSelect = new SupportUpdateListener();
listenerDelete = new SupportUpdateListener();
}
protected void tearDown() throws Exception {
if (InstrumentationHelper.ENABLED) { InstrumentationHelper.endTest();}
listenerDelete = null;
listenerSelect = null;
listenerWindow = null;
listenerDelete = null;
}
public void testFirstUnique() {
epService.getEPAdministrator().getConfiguration().addEventType("SupportBean", SupportBean.class);
epService.getEPAdministrator().getConfiguration().addEventType("SupportBean_A", SupportBean_A.class);
String[] fields = new String[] {"theString","intPrimitive"};
String stmtTextCreateOne = "create window MyWindowOne#firstunique(theString) as select * from SupportBean";
EPStatement stmtCreate = epService.getEPAdministrator().createEPL(stmtTextCreateOne);
epService.getEPAdministrator().createEPL("insert into MyWindowOne select * from SupportBean");
EPStatement stmtDelete = epService.getEPAdministrator().createEPL("on SupportBean_A a delete from MyWindowOne where theString=a.id");
stmtDelete.addListener(listenerDelete);
epService.getEPRuntime().sendEvent(new SupportBean("A", 1));
epService.getEPRuntime().sendEvent(new SupportBean("A", 2));
epService.getEPRuntime().sendEvent(new SupportBean_A("A"));
EPAssertionUtil.assertProps(listenerDelete.assertOneGetNewAndReset(), fields, new Object[]{"A", 1});
epService.getEPRuntime().sendEvent(new SupportBean("A", 3));
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"A", 3}});
epService.getEPRuntime().sendEvent(new SupportBean_A("A"));
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, null);
}
public void testStaggeredNamedWindow() throws Exception
{
for (EventRepresentationChoice rep : EventRepresentationChoice.values()) {
runAssertionStaggered(rep);
}
}
private void runAssertionStaggered(EventRepresentationChoice outputType) throws Exception {
String[] fieldsOne = new String[] {"a1", "b1"};
String[] fieldsTwo = new String[] {"a2", "b2"};
// create window one
String stmtTextCreateOne = outputType.getAnnotationText() + " create window MyWindowOne#keepall as select theString as a1, intPrimitive as b1 from " + SupportBean.class.getName();
EPStatement stmtCreateOne = epService.getEPAdministrator().createEPL(stmtTextCreateOne);
stmtCreateOne.addListener(listenerWindow);
assertEquals(0, getCount("MyWindowOne"));
assertTrue(outputType.matchesClass(stmtCreateOne.getEventType().getUnderlyingType()));
// create window two
String stmtTextCreateTwo = outputType.getAnnotationText() + " create window MyWindowTwo#keepall as select theString as a2, intPrimitive as b2 from " + SupportBean.class.getName();
EPStatement stmtCreateTwo = epService.getEPAdministrator().createEPL(stmtTextCreateTwo);
stmtCreateTwo.addListener(listenerWindowTwo);
assertEquals(0, getCount("MyWindowTwo"));
assertTrue(outputType.matchesClass(stmtCreateTwo.getEventType().getUnderlyingType()));
// create delete stmt
String stmtTextDelete = "on MyWindowOne delete from MyWindowTwo where a1 = a2";
EPStatement stmtDelete = epService.getEPAdministrator().createEPL(stmtTextDelete);
stmtDelete.addListener(listenerDelete);
assertEquals(StatementType.ON_DELETE, ((EPStatementSPI) stmtDelete).getStatementMetadata().getStatementType());
// create insert into
String stmtTextInsert = "insert into MyWindowOne select theString as a1, intPrimitive as b1 from " + SupportBean.class.getName() + "(intPrimitive > 0)";
epService.getEPAdministrator().createEPL(stmtTextInsert);
stmtTextInsert = "insert into MyWindowTwo select theString as a2, intPrimitive as b2 from " + SupportBean.class.getName() + "(intPrimitive < 0)";
epService.getEPAdministrator().createEPL(stmtTextInsert);
sendSupportBean("E1", -10);
EPAssertionUtil.assertProps(listenerWindowTwo.assertOneGetNewAndReset(), fieldsTwo, new Object[]{"E1", -10});
EPAssertionUtil.assertPropsPerRow(stmtCreateTwo.iterator(), fieldsTwo, new Object[][]{{"E1", -10}});
assertFalse(listenerWindow.isInvoked());
assertEquals(1, getCount("MyWindowTwo"));
sendSupportBean("E2", 5);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetNewAndReset(), fieldsOne, new Object[]{"E2", 5});
EPAssertionUtil.assertPropsPerRow(stmtCreateOne.iterator(), fieldsOne, new Object[][]{{"E2", 5}});
assertFalse(listenerWindowTwo.isInvoked());
assertEquals(1, getCount("MyWindowOne"));
sendSupportBean("E3", -1);
EPAssertionUtil.assertProps(listenerWindowTwo.assertOneGetNewAndReset(), fieldsTwo, new Object[]{"E3", -1});
EPAssertionUtil.assertPropsPerRow(stmtCreateTwo.iterator(), fieldsTwo, new Object[][]{{"E1", -10}, {"E3", -1}});
assertFalse(listenerWindow.isInvoked());
assertEquals(2, getCount("MyWindowTwo"));
sendSupportBean("E3", 1);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetNewAndReset(), fieldsOne, new Object[]{"E3", 1});
EPAssertionUtil.assertPropsPerRow(stmtCreateOne.iterator(), fieldsOne, new Object[][]{{"E2", 5}, {"E3", 1}});
EPAssertionUtil.assertProps(listenerWindowTwo.assertOneGetOldAndReset(), fieldsTwo, new Object[]{"E3", -1});
EPAssertionUtil.assertPropsPerRow(stmtCreateTwo.iterator(), fieldsTwo, new Object[][]{{"E1", -10}});
assertEquals(2, getCount("MyWindowOne"));
assertEquals(1, getCount("MyWindowTwo"));
stmtDelete.destroy();
stmtCreateOne.destroy();
stmtCreateTwo.destroy();
listenerDelete.reset();
listenerSelect.reset();
listenerWindow.reset();
listenerWindowTwo.reset();
epService.getEPAdministrator().getConfiguration().removeEventType("MyWindowOne", true);
epService.getEPAdministrator().getConfiguration().removeEventType("MyWindowTwo", true);
}
public void testCoercionKeyMultiPropIndexes()
{
// create window
String stmtTextCreate = "create window MyWindow#keepall as select " +
"theString, intPrimitive, intBoxed, doublePrimitive, doubleBoxed from " + SupportBean.class.getName();
EPStatement stmtCreate = epService.getEPAdministrator().createEPL(stmtTextCreate);
stmtCreate.addListener(listenerWindow);
List<EPStatement> deleteStatements = new LinkedList<EPStatement>();
String stmtTextDelete = "on " + SupportBean.class.getName() + "(theString='DB') as s0 delete from MyWindow as win where win.intPrimitive = s0.doubleBoxed";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(1, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
stmtTextDelete = "on " + SupportBean.class.getName() + "(theString='DP') as s0 delete from MyWindow as win where win.intPrimitive = s0.doublePrimitive";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(1, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
stmtTextDelete = "on " + SupportBean.class.getName() + "(theString='IB') as s0 delete from MyWindow where MyWindow.intPrimitive = s0.intBoxed";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
stmtTextDelete = "on " + SupportBean.class.getName() + "(theString='IPDP') as s0 delete from MyWindow as win where win.intPrimitive = s0.intPrimitive and win.doublePrimitive = s0.doublePrimitive";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
stmtTextDelete = "on " + SupportBean.class.getName() + "(theString='IPDP2') as s0 delete from MyWindow as win where win.doublePrimitive = s0.doublePrimitive and win.intPrimitive = s0.intPrimitive";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
stmtTextDelete = "on " + SupportBean.class.getName() + "(theString='IPDPIB') as s0 delete from MyWindow as win where win.doublePrimitive = s0.doublePrimitive and win.intPrimitive = s0.intPrimitive and win.intBoxed = s0.intBoxed";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
stmtTextDelete = "on " + SupportBean.class.getName() + "(theString='CAST') as s0 delete from MyWindow as win where win.intBoxed = s0.intPrimitive and win.doublePrimitive = s0.doubleBoxed and win.intPrimitive = s0.intBoxed";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
// create insert into
String stmtTextInsertOne = "insert into MyWindow select theString, intPrimitive, intBoxed, doublePrimitive, doubleBoxed "
+ "from " + SupportBean.class.getName() + "(theString like 'E%')";
epService.getEPAdministrator().createEPL(stmtTextInsertOne);
sendSupportBean("E1", 1, 10, 100d, 1000d);
sendSupportBean("E2", 2, 20, 200d, 2000d);
sendSupportBean("E3", 3, 30, 300d, 3000d);
sendSupportBean("E4", 4, 40, 400d, 4000d);
listenerWindow.reset();
String[] fields = new String[] {"theString"};
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"E1"}, {"E2"}, {"E3"}, {"E4"}});
sendSupportBean("DB", 0, 0, 0d, null);
assertFalse(listenerWindow.isInvoked());
sendSupportBean("DB", 0, 0, 0d, 3d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E3"});
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"E1"}, {"E2"}, {"E4"}});
sendSupportBean("DP", 0, 0, 5d, null);
assertFalse(listenerWindow.isInvoked());
sendSupportBean("DP", 0, 0, 4d, null);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E4"});
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"E1"}, {"E2"}});
sendSupportBean("IB", 0, -1, 0d, null);
assertFalse(listenerWindow.isInvoked());
sendSupportBean("IB", 0, 1, 0d, null);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E1"});
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"E2"}});
sendSupportBean("E5", 5, 50, 500d, 5000d);
sendSupportBean("E6", 6, 60, 600d, 6000d);
sendSupportBean("E7", 7, 70, 700d, 7000d);
listenerWindow.reset();
sendSupportBean("IPDP", 5, 0, 500d, null);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E5"});
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"E2"}, {"E6"}, {"E7"}});
sendSupportBean("IPDP2", 6, 0, 600d, null);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E6"});
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"E2"}, {"E7"}});
sendSupportBean("IPDPIB", 7, 70, 0d, null);
assertFalse(listenerWindow.isInvoked());
sendSupportBean("IPDPIB", 7, 70, 700d, null);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E7"});
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"E2"}});
sendSupportBean("E8", 8, 80, 800d, 8000d);
listenerWindow.reset();
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"E2"}, {"E8"}});
sendSupportBean("CAST", 80, 8, 0, 800d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E8"});
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, new Object[][]{{"E2"}});
for (EPStatement stmt : deleteStatements)
{
stmt.destroy();
}
deleteStatements.clear();
// late delete on a filled window
stmtTextDelete = "on " + SupportBean.class.getName() + "(theString='LAST') as s0 delete from MyWindow as win where win.intPrimitive = s0.intPrimitive and win.doublePrimitive = s0.doublePrimitive";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
sendSupportBean("LAST", 2, 20, 200, 2000d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E2"});
EPAssertionUtil.assertPropsPerRow(stmtCreate.iterator(), fields, null);
for (EPStatement stmt : deleteStatements)
{
stmt.destroy();
}
// test single-two-field index reuse
epService.getEPAdministrator().getConfiguration().addEventType("SupportBean_ST0", SupportBean_ST0.class);
epService.getEPAdministrator().getConfiguration().addEventType("SupportBean", SupportBean.class);
epService.getEPAdministrator().createEPL("create window WinOne#keepall as SupportBean");
epService.getEPAdministrator().createEPL("on SupportBean_ST0 select * from WinOne where theString = key0");
assertEquals(1, epService.getNamedWindowMgmtService().getNamedWindowIndexes("WinOne").length);
epService.getEPAdministrator().createEPL("on SupportBean_ST0 select * from WinOne where theString = key0 and intPrimitive = p00");
assertEquals(1, epService.getNamedWindowMgmtService().getNamedWindowIndexes("WinOne").length);
}
public void testCoercionRangeMultiPropIndexes()
{
epService.getEPAdministrator().getConfiguration().addEventType("SupportBean", SupportBean.class);
epService.getEPAdministrator().getConfiguration().addEventType("SupportBeanTwo", SupportBeanTwo.class);
// create window
String stmtTextCreate = "create window MyWindow#keepall as select " +
"theString, intPrimitive, intBoxed, doublePrimitive, doubleBoxed from SupportBean";
EPStatement stmtCreate = epService.getEPAdministrator().createEPL(stmtTextCreate);
stmtCreate.addListener(listenerWindow);
String stmtText = "insert into MyWindow select theString, intPrimitive, intBoxed, doublePrimitive, doubleBoxed from SupportBean";
epService.getEPAdministrator().createEPL(stmtText);
String[] fields = new String[] {"theString"};
sendSupportBean("E1", 1, 10, 100d, 1000d);
sendSupportBean("E2", 2, 20, 200d, 2000d);
sendSupportBean("E3", 3, 30, 3d, 30d);
sendSupportBean("E4", 4, 40, 4d, 40d);
sendSupportBean("E5", 5, 50, 500d, 5000d);
sendSupportBean("E6", 6, 60, 600d, 6000d);
listenerWindow.reset();
List<EPStatement> deleteStatements = new LinkedList<EPStatement>();
String stmtTextDelete = "on SupportBeanTwo as s2 delete from MyWindow as win where win.intPrimitive between s2.doublePrimitiveTwo and s2.doubleBoxedTwo";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(1, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("T", 0, 0, 0d, null);
assertFalse(listenerWindow.isInvoked());
sendSupportBeanTwo("T", 0, 0, -1d, 1d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E1"});
stmtTextDelete = "on SupportBeanTwo as s2 delete from MyWindow as win where win.intPrimitive between s2.intPrimitiveTwo and s2.intBoxedTwo";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("T", -2, 2, 0d, 0d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E2"});
stmtTextDelete = "on SupportBeanTwo as s2 delete from MyWindow as win " +
"where win.intPrimitive between s2.intPrimitiveTwo and s2.intBoxedTwo and win.doublePrimitive between s2.intPrimitiveTwo and s2.intBoxedTwo";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("T", -3, 3, -3d, 3d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E3"});
stmtTextDelete = "on SupportBeanTwo as s2 delete from MyWindow as win " +
"where win.doublePrimitive between s2.intPrimitiveTwo and s2.intPrimitiveTwo and win.intPrimitive between s2.intPrimitiveTwo and s2.intPrimitiveTwo";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("T", -4, 4, -4, 4d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E4"});
stmtTextDelete = "on SupportBeanTwo as s2 delete from MyWindow as win where win.intPrimitive <= doublePrimitiveTwo";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("T", 0, 0, 5, 1d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E5"});
stmtTextDelete = "on SupportBeanTwo as s2 delete from MyWindow as win where win.intPrimitive not between s2.intPrimitiveTwo and s2.intBoxedTwo";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("T", 100, 200, 0, 0d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E6"});
// delete
for (EPStatement stmt : deleteStatements) {
stmt.destroy();
}
deleteStatements.clear();
assertEquals(0, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
}
public void testCoercionKeyAndRangeMultiPropIndexes()
{
epService.getEPAdministrator().getConfiguration().addEventType("SupportBean", SupportBean.class);
epService.getEPAdministrator().getConfiguration().addEventType("SupportBeanTwo", SupportBeanTwo.class);
// create window
String stmtTextCreate = "create window MyWindow#keepall as select " +
"theString, intPrimitive, intBoxed, doublePrimitive, doubleBoxed from SupportBean";
EPStatement stmtCreate = epService.getEPAdministrator().createEPL(stmtTextCreate);
stmtCreate.addListener(listenerWindow);
String stmtText = "insert into MyWindow select theString, intPrimitive, intBoxed, doublePrimitive, doubleBoxed from SupportBean";
epService.getEPAdministrator().createEPL(stmtText);
String[] fields = new String[] {"theString"};
sendSupportBean("E1", 1, 10, 100d, 1000d);
sendSupportBean("E2", 2, 20, 200d, 2000d);
sendSupportBean("E3", 3, 30, 300d, 3000d);
sendSupportBean("E4", 4, 40, 400d, 4000d);
listenerWindow.reset();
List<EPStatement> deleteStatements = new LinkedList<EPStatement>();
String stmtTextDelete = "on SupportBeanTwo delete from MyWindow where theString = stringTwo and intPrimitive between doublePrimitiveTwo and doubleBoxedTwo";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(1, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("T", 0, 0, 1d, 200d);
assertFalse(listenerWindow.isInvoked());
sendSupportBeanTwo("E1", 0, 0, 1d, 200d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E1"});
stmtTextDelete = "on SupportBeanTwo delete from MyWindow where theString = stringTwo and intPrimitive = intPrimitiveTwo and intBoxed between doublePrimitiveTwo and doubleBoxedTwo";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("E2", 2, 0, 19d, 21d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E2"});
stmtTextDelete = "on SupportBeanTwo delete from MyWindow where intBoxed between doubleBoxedTwo and doublePrimitiveTwo and intPrimitive = intPrimitiveTwo and theString = stringTwo ";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(2, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("E3", 3, 0, 29d, 34d);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E3"});
stmtTextDelete = "on SupportBeanTwo delete from MyWindow where intBoxed between intBoxedTwo and intBoxedTwo and intPrimitive = intPrimitiveTwo and theString = stringTwo ";
deleteStatements.add(epService.getEPAdministrator().createEPL(stmtTextDelete));
assertEquals(3, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
sendSupportBeanTwo("E4", 4, 40, 0d, null);
EPAssertionUtil.assertProps(listenerWindow.assertOneGetOldAndReset(), fields, new Object[]{"E4"});
// delete
for (EPStatement stmt : deleteStatements) {
stmt.destroy();
}
deleteStatements.clear();
assertEquals(0, epService.getNamedWindowMgmtService().getNamedWindowIndexes("MyWindow").length);
}
private SupportBean sendSupportBean(String theString, int intPrimitive, Integer intBoxed,
double doublePrimitive, Double doubleBoxed)
{
SupportBean bean = new SupportBean();
bean.setTheString(theString);
bean.setIntPrimitive(intPrimitive);
bean.setIntBoxed(intBoxed);
bean.setDoublePrimitive(doublePrimitive);
bean.setDoubleBoxed(doubleBoxed);
epService.getEPRuntime().sendEvent(bean);
return bean;
}
private SupportBeanTwo sendSupportBeanTwo(String theString, int intPrimitive, Integer intBoxed,
double doublePrimitive, Double doubleBoxed)
{
SupportBeanTwo bean = new SupportBeanTwo();
bean.setStringTwo(theString);
bean.setIntPrimitiveTwo(intPrimitive);
bean.setIntBoxedTwo(intBoxed);
bean.setDoublePrimitiveTwo(doublePrimitive);
bean.setDoubleBoxedTwo(doubleBoxed);
epService.getEPRuntime().sendEvent(bean);
return bean;
}
private SupportBean sendSupportBean(String theString, int intPrimitive)
{
SupportBean bean = new SupportBean();
bean.setTheString(theString);
bean.setIntPrimitive(intPrimitive);
epService.getEPRuntime().sendEvent(bean);
return bean;
}
private long getCount(String windowName) throws Exception
{
NamedWindowProcessor processor = epService.getNamedWindowMgmtService().getProcessor(windowName);
return processor.getProcessorInstance(null).getCountDataWindow();
}
}