org.apache.solr.analytics.expression.DualDelegateExpression Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of solr-analytics Show documentation
Show all versions of solr-analytics Show documentation
Apache Solr Content Analytics Package
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.solr.analytics.expression;
/**
* Abstraction of an expression that applies a function to two delegate expressions.
*/
public abstract class DualDelegateExpression extends Expression {
protected Expression a;
protected Expression b;
public DualDelegateExpression(Expression a, Expression b) {
this.a = a;
this.b = b;
}
}
/**
* DivideExpression
returns the quotient of 'a' and 'b'.
*/
class DivideExpression extends DualDelegateExpression {
/**
* @param a numerator
* @param b divisor
*/
public DivideExpression(Expression a, Expression b) {
super(a,b);
}
@Override
public Comparable getValue() {
Comparable aComp = a.getValue();
Comparable bComp = b.getValue();
if (aComp==null || bComp==null) {
return null;
}
double div = ((Number)aComp).doubleValue();
div = div / ((Number)bComp).doubleValue();
return new Double(div);
}
}
/**
* PowerExpression
returns 'a' to the power of 'b'.
*/
class PowerExpression extends DualDelegateExpression {
/**
* @param a base
* @param b exponent
*/
public PowerExpression(Expression a, Expression b) {
super(a,b);
}
@Override
public Comparable getValue() {
Comparable aComp = a.getValue();
Comparable bComp = b.getValue();
if (aComp==null || bComp==null) {
return null;
}
return new Double(Math.pow(((Number)aComp).doubleValue(),((Number)bComp).doubleValue()));
}
}
/**
* LogExpression
returns the log of the delegate's value given a base number.
*/
class LogExpression extends DualDelegateExpression {
/**
* @param a number
* @param b base
*/
public LogExpression(Expression a, Expression b) {
super(a,b);
}
@Override
public Comparable getValue() {
Comparable aComp = a.getValue();
Comparable bComp = b.getValue();
if (aComp==null || bComp==null) {
return null;
}
return Math.log(((Number)aComp).doubleValue())/Math.log(((Number)bComp).doubleValue());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy