예제 #1
0
        /**
         * "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>&lt;part&gt;&lt;/part&gt;</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);
        }
예제 #2
0
 /// <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;
            }
예제 #7
0
        /**
         * "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>&lt;part&gt;&lt;/part&gt;</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);
        }