📄 sqlsmallint.java
字号:
/** @exception StandardException if outsideRangeForSmallint */ public void setValue(long theValue) throws StandardException { if (theValue > Short.MAX_VALUE || theValue < Short.MIN_VALUE) throw StandardException.newException(SQLState.LANG_OUTSIDE_RANGE_FOR_DATATYPE, "SMALLINT"); value = (short)theValue; isnull = false; } /** * @see NumberDataValue#setValue * * @exception StandardException Thrown on error */ public void setValue(float theValue) throws StandardException { theValue = NumberDataType.normalizeREAL(theValue); if (theValue > Short.MAX_VALUE || theValue < Short.MIN_VALUE) throw StandardException.newException(SQLState.LANG_OUTSIDE_RANGE_FOR_DATATYPE, "SMALLINT"); float floorValue = (float)Math.floor(theValue); value = (short)floorValue; isnull = false; } /** * @see NumberDataValue#setValue * * @exception StandardException Thrown on error */ public void setValue(double theValue) throws StandardException { theValue = NumberDataType.normalizeDOUBLE(theValue); if (theValue > Short.MAX_VALUE || theValue < Short.MIN_VALUE) throw StandardException.newException(SQLState.LANG_OUTSIDE_RANGE_FOR_DATATYPE, "SMALLINT"); double floorValue = Math.floor(theValue); value = (short)floorValue; isnull = false; } /** * @see NumberDataValue#setValue * */ public void setValue(boolean theValue) { value = theValue?(short)1:(short)0; isnull = false; } /** * @see DataValueDescriptor#setValue * * @exception StandardException Thrown on error */ public void setValue(Object theValue) throws StandardException { if (theValue == null) { setToNull(); } else if (theValue instanceof Number) { this.setValue(((Number)theValue).shortValue()); } else { genericSetObject(theValue); } } protected void setFrom(DataValueDescriptor theValue) throws StandardException { setValue(theValue.getShort()); } /* * DataValueDescriptor interface */ /** @see DataValueDescriptor#typePrecedence */ public int typePrecedence() { return TypeId.SMALLINT_PRECEDENCE; } /* ** SQL Operators */ /** * The = operator as called from the language module, as opposed to * the storage module. * * @param left The value on the left side of the = * @param right The value on the right side of the = * * @return A SQL boolean value telling whether the two parameters are equal * * @exception StandardException Thrown on error */ public BooleanDataValue equals(DataValueDescriptor left, DataValueDescriptor right) throws StandardException { return SQLBoolean.truthValue(left, right, left.getShort() == right.getShort()); } /** * The <> operator as called from the language module, as opposed to * the storage module. * * @param left The value on the left side of the <> * @param right The value on the right side of the <> * * @return A SQL boolean value telling whether the two parameters * are not equal * * @exception StandardException Thrown on error */ public BooleanDataValue notEquals(DataValueDescriptor left, DataValueDescriptor right) throws StandardException { return SQLBoolean.truthValue(left, right, left.getShort() != right.getShort()); } /** * The < operator as called from the language module, as opposed to * the storage module. * * @param left The value on the left side of the < * @param right The value on the right side of the < * is not. * * @return A SQL boolean value telling whether the first operand is less * than the second operand * * @exception StandardException Thrown on error */ public BooleanDataValue lessThan(DataValueDescriptor left, DataValueDescriptor right) throws StandardException { return SQLBoolean.truthValue(left, right, left.getShort() < right.getShort()); } /** * The > operator as called from the language module, as opposed to * the storage module. * * @param left The value on the left side of the > * @param right The value on the right side of the > * * @return A SQL boolean value telling whether the first operand is greater * than the second operand * * @exception StandardException Thrown on error */ public BooleanDataValue greaterThan(DataValueDescriptor left, DataValueDescriptor right) throws StandardException { return SQLBoolean.truthValue(left, right, left.getShort() > right.getShort()); } /** * The <= operator as called from the language module, as opposed to * the storage module. * * @param left The value on the left side of the <= * @param right The value on the right side of the <= * * @return A SQL boolean value telling whether the first operand is less * than or equal to the second operand * * @exception StandardException Thrown on error */ public BooleanDataValue lessOrEquals(DataValueDescriptor left, DataValueDescriptor right) throws StandardException { return SQLBoolean.truthValue(left, right, left.getShort() <= right.getShort()); } /** * The >= operator as called from the language module, as opposed to * the storage module. * * @param left The value on the left side of the >= * @param right The value on the right side of the >= * * @return A SQL boolean value telling whether the first operand is greater * than or equal to the second operand * * @exception StandardException Thrown on error */ public BooleanDataValue greaterOrEquals(DataValueDescriptor left, DataValueDescriptor right) throws StandardException { return SQLBoolean.truthValue(left, right, left.getShort() >= right.getShort()); } /** * This method implements the * operator for "smallint * smallint". * * @param left The first value to be multiplied * @param right The second value to be multiplied * @param result The result of a previous call to this method, null * if not called yet * * @return A SQLSmallint containing the result of the multiplication * * @exception StandardException Thrown on error */ public NumberDataValue times(NumberDataValue left, NumberDataValue right, NumberDataValue result) throws StandardException { if (result == null) { result = new SQLSmallint(); } if (left.isNull() || right.isNull()) { result.setToNull(); return result; } /* ** Java does not check for overflow with integral types. We have to ** check the result ourselves. ** The setValue(int) will perform the overflow check. */ int product = left.getShort() * right.getShort(); result.setValue(product); return result; } /** mod(smallint, smallint) */ public NumberDataValue mod(NumberDataValue dividend, NumberDataValue divisor, NumberDataValue result) throws StandardException { if (result == null) { result = new SQLSmallint(); } if (dividend.isNull() || divisor.isNull()) { result.setToNull(); return result; } /* Catch divide by 0 */ short shortDivisor = divisor.getShort(); if (shortDivisor == 0) { throw StandardException.newException(SQLState.LANG_DIVIDE_BY_ZERO); } result.setValue(dividend.getShort() % shortDivisor); return result; } /** * This method implements the unary minus operator for smallint. * * @param result The result of a previous call to this method, null * if not called yet * * @return A SQLSmalllint containing the result of the division * * @exception StandardException Thrown on error */ public NumberDataValue minus(NumberDataValue result) throws StandardException { if (result == null) { result = new SQLSmallint(); } if (this.isNull()) { result.setToNull(); return result; } int operandValue = this.getShort(); result.setValue(-operandValue); return result; } /** * This method implements the isNegative method. * * @return A boolean. If this.value is negative, return true. * For positive values or null, return false. */ protected boolean isNegative() { return !isNull() && value < 0; } /* * String display of value */ public String toString() { if (isNull()) return "NULL"; else return Short.toString(value); } /* * Hash code */ public int hashCode() { return (int) value; } /* * useful constants... */ static final int SMALLINT_LENGTH = 2; private static final int BASE_MEMORY_USAGE = ClassSize.estimateBaseFromCatalog( SQLSmallint.class); public int estimateMemoryUsage() { return BASE_MEMORY_USAGE; } /* * object state */ private short value; private boolean isnull;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -