com.espertech.esper.epl.index.quadtree.EngineImportApplicationDotMethodPointInsideRectange Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of esper Show documentation
Show all versions of esper Show documentation
Complex event processing and event series analysis component
/*
***************************************************************************************
* 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.epl.index.quadtree;
import com.espertech.esper.client.EventBean;
import com.espertech.esper.epl.expression.core.*;
import com.espertech.esper.epl.util.EPLExpressionParamType;
import com.espertech.esper.epl.util.EPLValidationUtil;
import com.espertech.esper.spatial.quadtree.core.BoundingBox;
public class EngineImportApplicationDotMethodPointInsideRectange extends EngineImportApplicationDotMethodBase {
protected final static String LOOKUP_OPERATION_NAME = "point.inside(rectangle)";
public final static String INDEXTYPE_NAME = "pointregionquadtree";
public EngineImportApplicationDotMethodPointInsideRectange(String lhsName, ExprNode[] lhs, String dotMethodName, String rhsName, ExprNode[] rhs, ExprNode[] indexNamedParameter) {
super(lhsName, lhs, dotMethodName, rhsName, rhs, indexNamedParameter);
}
protected ExprEvaluator validateAll(String lhsName, ExprNode[] lhs, String rhsName, ExprNode[] rhs, ExprValidationContext validationContext) throws ExprValidationException {
EPLValidationUtil.validateParameterNumber(lhsName, LHS_VALIDATION_NAME, false, 2, lhs.length);
EPLValidationUtil.validateParametersTypePredefined(lhs, lhsName, LHS_VALIDATION_NAME, EPLExpressionParamType.NUMERIC);
EPLValidationUtil.validateParameterNumber(rhsName, RHS_VALIDATION_NAME, true, 4, rhs.length);
EPLValidationUtil.validateParametersTypePredefined(rhs, rhsName, RHS_VALIDATION_NAME, EPLExpressionParamType.NUMERIC);
ExprEvaluator pxEval = lhs[0].getExprEvaluator();
ExprEvaluator pyEval = lhs[1].getExprEvaluator();
ExprEvaluator xEval = rhs[0].getExprEvaluator();
ExprEvaluator yEval = rhs[1].getExprEvaluator();
ExprEvaluator widthEval = rhs[2].getExprEvaluator();
ExprEvaluator heightEval = rhs[3].getExprEvaluator();
return new PointIntersectsRectangleEvaluator(pxEval, pyEval, xEval, yEval, widthEval, heightEval);
}
protected String operationName() {
return LOOKUP_OPERATION_NAME;
}
protected String indexTypeName() {
return INDEXTYPE_NAME;
}
public final static class PointIntersectsRectangleEvaluator implements ExprEvaluator {
private final ExprEvaluator pxEval;
private final ExprEvaluator pyEval;
private final ExprEvaluator xEval;
private final ExprEvaluator yEval;
private final ExprEvaluator widthEval;
private final ExprEvaluator heightEval;
PointIntersectsRectangleEvaluator(ExprEvaluator pxEval, ExprEvaluator pyEval, ExprEvaluator xEval, ExprEvaluator yEval, ExprEvaluator widthEval, ExprEvaluator heightEval) {
this.pxEval = pxEval;
this.pyEval = pyEval;
this.xEval = xEval;
this.yEval = yEval;
this.widthEval = widthEval;
this.heightEval = heightEval;
}
public Object evaluate(EventBean[] eventsPerStream, boolean isNewData, ExprEvaluatorContext context) {
Number px = (Number) pxEval.evaluate(eventsPerStream, isNewData, context);
if (px == null) {
return null;
}
Number py = (Number) pyEval.evaluate(eventsPerStream, isNewData, context);
if (py == null) {
return null;
}
Number x = (Number) xEval.evaluate(eventsPerStream, isNewData, context);
if (x == null) {
return null;
}
Number y = (Number) yEval.evaluate(eventsPerStream, isNewData, context);
if (y == null) {
return null;
}
Number width = (Number) widthEval.evaluate(eventsPerStream, isNewData, context);
if (width == null) {
return null;
}
Number height = (Number) heightEval.evaluate(eventsPerStream, isNewData, context);
if (height == null) {
return null;
}
return BoundingBox.containsPoint(x.doubleValue(), y.doubleValue(), width.doubleValue(), height.doubleValue(), px.doubleValue(), py.doubleValue());
}
public Class getType() {
return Boolean.class;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy