/*
***************************************************************************************
* 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.example.transaction;
import com.espertech.esper.client.EPAdministrator;
import com.espertech.esper.client.EPStatement;
import com.espertech.esper.client.UpdateListener;
public class RealtimeSummaryStmt {
private EPStatement totalsStatement;
private EPStatement byCustomerStatement;
private EPStatement bySupplierStatement;
public RealtimeSummaryStmt(EPAdministrator admin) {
//
// Min,Max,Average total latency from the events (difference in time between A and C) over the past 30 minutes.
// Min,Max,Average latency between events A/B (time stamp of B minus A) and B/C (time stamp of C minus B).
//
String stmtTotal = "select min(latencyAC) as minLatencyAC, " +
"max(latencyAC) as maxLatencyAC, " +
"avg(latencyAC) as avgLatencyAC, " +
"min(latencyAB) as minLatencyAB, " +
"max(latencyAB) as maxLatencyAB, " +
"avg(latencyAB) as avgLatencyAB, " +
"min(latencyBC) as minLatencyBC, " +
"max(latencyBC) as maxLatencyBC, " +
"avg(latencyBC) as avgLatencyBC " +
"from CombinedEvent#time(30 min)";
totalsStatement = admin.createEPL(stmtTotal);
//
// Min,Max,Average latency grouped by (a) customer ID and (b) supplier ID.
// In other words, metrics on the the latency of the orders coming from each customer and going to each supplier.
//
String stmtCustomer = "select customerId," +
"min(latencyAC) as minLatency," +
"max(latencyAC) as maxLatency," +
"avg(latencyAC) as avgLatency " +
"from CombinedEvent#time(30 min) " +
"group by customerId";
byCustomerStatement = admin.createEPL(stmtCustomer);
String stmtSupplier = "select supplierId," +
"min(latencyAC) as minLatency," +
"max(latencyAC) as maxLatency," +
"avg(latencyAC) as avgLatency " +
"from CombinedEvent#time(30 min) " +
"group by supplierId";
bySupplierStatement = admin.createEPL(stmtSupplier);
}
public void addTotalsListener(UpdateListener listener) {
totalsStatement.addListener(listener);
}
public void addByCustomerListener(UpdateListener listener) {
byCustomerStatement.addListener(listener);
}
public void addBySupplierListener(UpdateListener listener) {
bySupplierStatement.addListener(listener);
}
}