/** * "Parse" an XML document for the first occurrence of a particular tag and return its value, which is assumed to be a number. * * The parse terminates based on the rules for java.text.DecimalFormat, using the * pattern and symbol sets for the default Locale. * * @param xmlDoc * The target XML document. * @param xmlTag * The target tag <em>including</em> the enclosing angle brackets. * @param xmlStart * The character position (from zero) in the document at which to start * looking for the target tag. * * @return * <ul> * <li>an integer representation of the element value</li> * <li>-1 if: * <ul> * <li>not found</li> * <li>the target tag is empty, for example, <code><part></part></code></li> * <li>a parse error occurred</li> * </ul> * </li> * </ul> * * @since 1.0 */ public int getXmlValueNum(String xmlDoc, String xmlTag, ParsePosition xmlStart) { if (verboseDebugLvl) { MySession.myConsole.printf("%s.getXmlValueNum: xmlDoc =%n%s%nxmlTag = %s%nstartIdx = %d%n", MY_CLASS_TAG, xmlDoc, xmlTag, xmlStart.getIndex()); } parseFmt.setParseBigDecimal(false); parsePos.setErrorIndex(-1); int i = xmlDoc.IndexOf(xmlTag, xmlStart.getIndex()); if (i != -1) { parsePos.setIndex((i + xmlTag.Length)); if ((parseResult = parseFmt.parse(xmlDoc, parsePos)) != null) { return(parseResult.intValue()); } } return(-1); }
/// <summary> /// Converts a Java Number instance to a nullable int. /// </summary> /// <param name="n">Java Number instance</param> /// <returns>Nullable int</returns> public static int?ToNullableInt(this java.lang.Number n) { return(n == null ? (int?)null : n.intValue()); }
public static decimal ToDecimal(JavaNumber n) { if (n is JavaByte || n is JavaShort || n is JavaInteger) { return new decimal(n.intValue()); } else if (n is JavaLong) { return new decimal(n.longValue()); } else if (n is JavaFloat || n is JavaDouble) { return new decimal(n.doubleValue()); } JavaBigDecimal bigDecimalValue = n as JavaBigDecimal; if (bigDecimalValue != null) { if (bigDecimalValue.compareTo(MAX_DECIMAL) > 0 || bigDecimalValue.compareTo(MIN_DECIMAL) < 0) { throw HsqlConvert.NumericValueOutOfRange(n); } return decimal.Parse(bigDecimalValue.toPlainString()); } return decimal.Parse(n.toString()); }
public static bool ToBoolean(JavaNumber n) { if (n is JavaInteger || n is JavaShort || n is JavaByte) { return (n.intValue() != 0); } else if (n is JavaLong) { return (n.longValue() != 0L); } else if (n is JavaDouble || n is JavaFloat) { return (n.doubleValue() != 0.0D); } JavaBigDecimal bigDecimalValue = n as JavaBigDecimal; if (bigDecimalValue != null) { return !bigDecimalValue.equals(BIG_DECIMAL_0); } return (n.intValue() != 0); }
public static sbyte ToTinyInt(JavaNumber n) { if (n is JavaByte) { return (sbyte) n.intValue(); } const int max = 127; const int min = -128; if (n is JavaShort || n is JavaInteger) { int value = n.intValue(); if (max < value || value < min) { throw HsqlConvert.NumericValueOutOfRange(n); } return (sbyte) value; } else if (n is JavaLong) { long value = n.longValue(); if (max < value || value < min) { throw HsqlConvert.NumericValueOutOfRange(n); } return (sbyte)value; } else if (n is JavaDouble || n is JavaFloat) { double value = n.doubleValue(); if (JavaDouble.isNaN(value) || JavaDouble.isInfinite(value) || max < value || value < min) { throw NumericValueOutOfRange(n); } return (sbyte)value; } JavaBigDecimal bigDecimalValue = n as JavaBigDecimal; if (bigDecimalValue != null) { JavaBigInteger bi = bigDecimalValue.toBigInteger(); if (bi.compareTo(MAX_TINYINT) > 0 || bi.compareTo(MIN_TINYINT) < 0) { throw HsqlConvert.NumericValueOutOfRange(n); } return (sbyte) bi.intValue(); } long longVaue = n.longValue(); if (max < longVaue || longVaue < min) { throw HsqlConvert.NumericValueOutOfRange(n); } return (sbyte)longVaue; }
public static short ToSmallInt(JavaNumber n) { if (n is JavaByte || n is JavaShort) { return n.shortValue(); } const int max = JavaShort.MAX_VALUE; const int min = JavaShort.MIN_VALUE; if (n is JavaInteger) { int value = n.intValue(); if (max < value || value < min) { throw HsqlConvert.NumericValueOutOfRange(n); } return (short) value; } if (n is JavaLong) { long value = n.longValue(); if (max < value || value < min) { throw HsqlConvert.NumericValueOutOfRange(n); } return (short) value; } if (n is JavaDouble || n is JavaFloat) { double value = n.doubleValue(); if (JavaDouble.isNaN(value) || JavaDouble.isInfinite(value) || max < value || value < min) { throw HsqlConvert.NumericValueOutOfRange(n); } return (short) value; } JavaBigDecimal bigDecimalValue = n as JavaBigDecimal; if (bigDecimalValue != null) { JavaBigInteger bi = bigDecimalValue.toBigInteger(); if (bi.compareTo(MAX_SMALLINT) > 0 || bi.compareTo(MIN_SMALLINT) < 0) { throw HsqlConvert.NumericValueOutOfRange(n); } return bi.shortValue(); } long l = n.longValue(); if (max < l || l < min) { throw HsqlConvert.NumericValueOutOfRange(n); } return (short) l; }
/** * "Parse" an XML document for the first occurrence of a particular tag and return its value, which is assumed to be a number. * * The parse terminates based on the rules for java.text.DecimalFormat, using the * pattern and symbol sets for the default Locale. * * @param xmlDoc * The target XML document. * @param xmlTag * The target tag <em>including</em> the enclosing angle brackets. * @param xmlStart * The character position (from zero) in the document at which to start * looking for the target tag. * * @return * <ul> * <li>an integer representation of the element value</li> * <li>-1 if: * <ul> * <li>not found</li> * <li>the target tag is empty, for example, <code><part></part></code></li> * <li>a parse error occurred</li> * </ul> * </li> * </ul> * * @since 1.0 */ public int getXmlValueNum(String xmlDoc, String xmlTag, ParsePosition xmlStart) { if (verboseDebugLvl) { MySession.myConsole.printf("%s.getXmlValueNum: xmlDoc =%n%s%nxmlTag = %s%nstartIdx = %d%n", MY_CLASS_TAG, xmlDoc, xmlTag, xmlStart.getIndex()); } parseFmt.setParseBigDecimal(false); parsePos.setErrorIndex(-1); int i = xmlDoc.IndexOf(xmlTag, xmlStart.getIndex()); if (i != -1) { parsePos.setIndex((i + xmlTag.Length)); if ((parseResult = parseFmt.parse(xmlDoc, parsePos)) != null) { return (parseResult.intValue()); } } return (-1); }