blob: e24cb797c59f6dee4d6c7e9919ccf42d89c6889d [file] [log] [blame]
/*
Derby - Class org.apache.derby.iapi.types.NumberDataValue
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.derby.iapi.types;
import org.apache.derby.iapi.error.StandardException;
public interface NumberDataValue extends DataValueDescriptor
{
/**
* The minimum scale when dividing Decimals
*/
public static final int MIN_DECIMAL_DIVIDE_SCALE = 4;
public static final int MAX_DECIMAL_PRECISION_SCALE = 31;
/**
* The SQL + operator.
*
* @param addend1 One of the addends
* @param addend2 The other addend
* @param result The result of the previous call to this method, null
* if not called yet.
*
* @return The sum of the two addends
*
* @exception StandardException Thrown on error, if result is non-null then its value will be unchanged.
*/
public NumberDataValue plus(NumberDataValue addend1,
NumberDataValue addend2,
NumberDataValue result)
throws StandardException;
/**
* The SQL - operator.
*
* @param left The left operand
* @param right The right operand
* @param result The result of the previous call to this method, null
* if not called yet.
*
* @return left - right
*
* @exception StandardException Thrown on error, if result is non-null then its value will be unchanged.
*/
public NumberDataValue minus(NumberDataValue left,
NumberDataValue right,
NumberDataValue result)
throws StandardException;
/**
* The SQL * operator.
*
* @param left The left operand
* @param right The right operand
* @param result The result of the previous call to this method, null
* if not called yet.
*
* @return left * right
*
* @exception StandardException Thrown on error, if result is non-null then its value will be unchanged.
*/
public NumberDataValue times(NumberDataValue left,
NumberDataValue right,
NumberDataValue result)
throws StandardException;
/**
* The SQL / operator.
*
* @param dividend The numerator
* @param divisor The denominator
* @param result The result of the previous call to this method, null
* if not called yet.
*
* @return dividend / divisor
*
* @exception StandardException Thrown on error, if result is non-null then its value will be unchanged.
*/
public NumberDataValue divide(NumberDataValue dividend,
NumberDataValue divisor,
NumberDataValue result)
throws StandardException;
/**
* The SQL / operator.
*
* @param dividend The numerator
* @param divisor The denominator
* @param result The result of the previous call to this method, null
* if not called yet.
* @param scale The scale of the result, for decimal type. If pass
* in value < 0, can calculate it dynamically.
*
* @return dividend / divisor
*
* @exception StandardException Thrown on error, if result is non-null then its value will be unchanged.
*/
public NumberDataValue divide(NumberDataValue dividend,
NumberDataValue divisor,
NumberDataValue result,
int scale)
throws StandardException;
/**
* The SQL mod operator.
*
* @param dividend The numerator
* @param divisor The denominator
* @param result The result of the previous call to this method, null
* if not called yet.
*
* @return dividend / divisor
*
* @exception StandardException Thrown on error, if result is non-null then its value will be unchanged.
*/
public NumberDataValue mod(NumberDataValue dividend,
NumberDataValue divisor,
NumberDataValue result)
throws StandardException;
/**
* The SQL unary - operator. Negates this NumberDataValue.
*
* @param result The result of the previous call to this method, null
* if not called yet.
*
* @return - operand
*
* @exception StandardException Thrown on error, if result is non-null then its value will be unchanged.
*/
public NumberDataValue minus(NumberDataValue result)
throws StandardException;
/**
* The SQL ABSOLUTE operator. Absolute value of this NumberDataValue.
*
* @param result The result of the previous call to this method, null
* if not called yet.
*
* @exception StandardException Thrown on error, if result is non-null then its value will be unchanged.
*/
public NumberDataValue absolute(NumberDataValue result)
throws StandardException;
/**
* The SQL SQRT operator. Sqrt value of this NumberDataValue.
*
* @param result The result of the previous call to this method, null
* if not call yet.
*
* @exception StandardException Thrown on error (a negative number), if result is non-null then its value will be unchanged.
*/
public NumberDataValue sqrt(NumberDataValue result)
throws StandardException;
/**
* Set the value of this NumberDataValue to the given value.
This is only intended to be called when mapping values from
the Java space into the SQL space, e.g. parameters and return
types from procedures and functions. Each specific type is only
expected to handle the explicit type according the JDBC.
<UL>
<LI> SMALLINT from java.lang.Integer
<LI> INTEGER from java.lang.Integer
<LI> LONG from java.lang.Long
<LI> FLOAT from java.lang.Float
<LI> DOUBLE from java.lang.Double
<LI> DECIMAL from java.math.BigDecimal
</UL>
*
* @param theValue An Number containing the value to set this
* NumberDataValue to. Null means set the value
* to SQL null.
*
*/
public void setValue(Number theValue) throws StandardException;
}