core/src/main/java/com/orientechnologies/orient/core/serialization/serializer/record/string/ORecordSerializerStringAbstract.java
public static Object getTypeValue(final String iValue) {
    if (iValue == null || iValue.equalsIgnoreCase("NULL"))
      return null;

    if (iValue.length() == 0)
      return "";

    if (iValue.length() > 1)
      if (iValue.charAt(0) == '"' && iValue.charAt(iValue.length() - 1) == '"')
        // STRING
        return OStringSerializerHelper.decode(iValue.substring(1, iValue.length() - 1));
      else if (iValue.charAt(0) == OStringSerializerHelper.BINARY_BEGINEND
          && iValue.charAt(iValue.length() - 1) == OStringSerializerHelper.BINARY_BEGINEND)
        // STRING
        return OStringSerializerHelper.getBinaryContent(iValue);
      else if (iValue.charAt(0) == OStringSerializerHelper.LIST_BEGIN
          && iValue.charAt(iValue.length() - 1) == OStringSerializerHelper.LIST_END) {
        // LIST
        final ArrayList<String> coll = new ArrayList<String>();
        OStringSerializerHelper.getCollection(iValue, 0, coll, OStringSerializerHelper.LIST_BEGIN,
            OStringSerializerHelper.LIST_END, OStringSerializerHelper.COLLECTION_SEPARATOR);
        return coll;
      } else if (iValue.charAt(0) == OStringSerializerHelper.SET_BEGIN
          && iValue.charAt(iValue.length() - 1) == OStringSerializerHelper.SET_END) {
        // SET
        final Set<String> coll = new HashSet<String>();
        OStringSerializerHelper.getCollection(iValue, 0, coll, OStringSerializerHelper.SET_BEGIN, OStringSerializerHelper.SET_END,
            OStringSerializerHelper.COLLECTION_SEPARATOR);
        return coll;
      } else if (iValue.charAt(0) == OStringSerializerHelper.MAP_BEGIN
          && iValue.charAt(iValue.length() - 1) == OStringSerializerHelper.MAP_END) {
        // MAP
        return OStringSerializerHelper.getMap(iValue);
      }

    if (iValue.charAt(0) == ORID.PREFIX)
      // RID
      return new ORecordId(iValue);

    boolean integer = true;
    char c;

    boolean stringStarBySign = false;

    for (int index = 0; index < iValue.length(); ++index) {
      c = iValue.charAt(index);
      if (c < '0' || c > '9') {
        if ((index == 0 && (c == '+' || c == '-'))) {
          stringStarBySign = true;
          continue;
        } else if (c == DECIMAL_SEPARATOR)
          integer = false;
        else {
          if (index > 0) {
            if (!integer && c == 'E') {
              // CHECK FOR SCIENTIFIC NOTATION
              if (index < iValue.length())
                index++;
              if (iValue.charAt(index) == '-')
                continue;
            }

            final String v = iValue.substring(0, index);

            if (c == 'f')
              return new Float(v);
            else if (c == 'c')
              return new BigDecimal(v);
            else if (c == 'l')
              return new Long(v);
            else if (c == 'd')
              return new Double(v);
            else if (c == 'b')
              return new Byte(v);
            else if (c == 'a' || c == 't')
              return new Date(Long.parseLong(v));
            else if (c == 's')
              return new Short(v);
          }
          return iValue;
        }
      } else if (stringStarBySign) {
        stringStarBySign = false;
      }
    }
    if (stringStarBySign)
      return iValue;

    if (integer) {
      try {
        return new Integer(iValue);
      } catch (NumberFormatException ignore) {
        return new Long(iValue);
      }
    } else if ("NaN".equals(iValue) || "Infinity".equals(iValue))
      // NaN and Infinity CANNOT BE MANAGED BY BIG-DECIMAL TYPE
      return new Double(iValue);
    else
      return new BigDecimal(iValue);
  }
public static Object getTypeValue(final String iValue) {
    if (iValue == null || iValue.equalsIgnoreCase("NULL"))
      return null;

    if (iValue.length() == 0)
      return "";

    if (iValue.length() > 1)
      if (iValue.charAt(0) == '"' && iValue.charAt(iValue.length() - 1) == '"')
        // STRING
        return OStringSerializerHelper.decode(iValue.substring(1, iValue.length() - 1));
      else if (iValue.charAt(0) == OStringSerializerHelper.BINARY_BEGINEND
          && iValue.charAt(iValue.length() - 1) == OStringSerializerHelper.BINARY_BEGINEND)
        // STRING
        return OStringSerializerHelper.getBinaryContent(iValue);
      else if (iValue.charAt(0) == OStringSerializerHelper.LIST_BEGIN
          && iValue.charAt(iValue.length() - 1) == OStringSerializerHelper.LIST_END) {
        // LIST
        final ArrayList<String> coll = new ArrayList<String>();
        OStringSerializerHelper.getCollection(iValue, 0, coll, OStringSerializerHelper.LIST_BEGIN,
            OStringSerializerHelper.LIST_END, OStringSerializerHelper.COLLECTION_SEPARATOR);
        return coll;
      } else if (iValue.charAt(0) == OStringSerializerHelper.SET_BEGIN
          && iValue.charAt(iValue.length() - 1) == OStringSerializerHelper.SET_END) {
        // SET
        final Set<String> coll = new HashSet<String>();
        OStringSerializerHelper.getCollection(iValue, 0, coll, OStringSerializerHelper.SET_BEGIN, OStringSerializerHelper.SET_END,
            OStringSerializerHelper.COLLECTION_SEPARATOR);
        return coll;
      } else if (iValue.charAt(0) == OStringSerializerHelper.MAP_BEGIN
          && iValue.charAt(iValue.length() - 1) == OStringSerializerHelper.MAP_END) {
        // MAP
        return OStringSerializerHelper.getMap(iValue);
      }

    if (iValue.charAt(0) == ORID.PREFIX)
      // RID
      return new ORecordId(iValue);

    boolean integer = true;
    char c;

    boolean stringStarBySign = false;

    for (int index = 0; index < iValue.length(); ++index) {
      c = iValue.charAt(index);
      if (c < '0' || c > '9') {
        if ((index == 0 && (c == '+' || c == '-'))) {
          stringStarBySign = true;
          continue;
        } else if (c == DECIMAL_SEPARATOR)
          integer = false;
        else {
          if (index > 0) {
            if (!integer && c == 'E') {
              // CHECK FOR SCIENTIFIC NOTATION
              if (index < iValue.length())
                index++;
              if (iValue.charAt(index) == '-')
                continue;
            }

            final String v = iValue.substring(0, index);

            if (c == 'f')
              return new Float(v);
            else if (c == 'c')
              return new BigDecimal(v);
            else if (c == 'l')
              return new Long(v);
            else if (c == 'd')
              return new Double(v);
            else if (c == 'b')
              return new Byte(v);
            else if (c == 'a' || c == 't')
              return new Date(Long.parseLong(v));
            else if (c == 's')
              return new Short(v);
          }
          return iValue;
        }
      } else if (stringStarBySign) {
        stringStarBySign = false;
      }
    }
    if (stringStarBySign)
      return iValue;

    if (integer) {
      try {
        return new Integer(iValue);
      } catch (NumberFormatException ignore) {
        return new Long(iValue);
      }
    } else if ("NaN".equals(iValue) || "Infinity".equals(iValue))
      // NaN and Infinity CANNOT BE MANAGED BY BIG-DECIMAL TYPE
      return new Double(iValue);
    else
      return new BigDecimal(iValue);
  }
public static Object getTypeValue ( final String iValue ) { if ( iValue == null || iValue . equalsIgnoreCase ( "NULL" ) ) return null ; if ( iValue . length ( ) == 0 ) return "" ; if ( iValue . length ( ) > 1 ) if ( iValue . charAt ( 0 ) == ' ' && iValue . charAt ( iValue . length ( ) - 1 ) == ' ' ) // STRING
 return OStringSerializerHelper . decode ( iValue . substring ( 1 , iValue . length ( ) - 1 ) ) ; else if ( iValue . charAt ( 0 ) == OStringSerializerHelper . BINARY_BEGINEND && iValue . charAt ( iValue . length ( ) - 1 ) == OStringSerializerHelper . BINARY_BEGINEND ) // STRING
 return OStringSerializerHelper . getBinaryContent ( iValue ) ; else if ( iValue . charAt ( 0 ) == OStringSerializerHelper . LIST_BEGIN && iValue . charAt ( iValue . length ( ) - 1 ) == OStringSerializerHelper . LIST_END ) { // LIST
 final ArrayList < String > coll = new ArrayList < String > ( ) ; OStringSerializerHelper . getCollection ( iValue , 0 , coll , OStringSerializerHelper . LIST_BEGIN , OStringSerializerHelper . LIST_END , OStringSerializerHelper . COLLECTION_SEPARATOR ) ; return coll ; } else if ( iValue . charAt ( 0 ) == OStringSerializerHelper . SET_BEGIN && iValue . charAt ( iValue . length ( ) - 1 ) == OStringSerializerHelper . SET_END ) { // SET
 final Set < String > coll = new HashSet < String > ( ) ; OStringSerializerHelper . getCollection ( iValue , 0 , coll , OStringSerializerHelper . SET_BEGIN , OStringSerializerHelper . SET_END , OStringSerializerHelper . COLLECTION_SEPARATOR ) ; return coll ; } else if ( iValue . charAt ( 0 ) == OStringSerializerHelper . MAP_BEGIN && iValue . charAt ( iValue . length ( ) - 1 ) == OStringSerializerHelper . MAP_END ) { // MAP
 return OStringSerializerHelper . getMap ( iValue ) ; } if ( iValue . charAt ( 0 ) == ORID . PREFIX ) // RID
 return new ORecordId ( iValue ) ; boolean integer = true ; char c ; boolean stringStarBySign = false ; for ( int index = 0 ; index < iValue . length ( ) ; ++ index ) { c = iValue . charAt ( index ) ; if ( c < ' ' || c > ' ' ) { if ( ( index == 0 && ( c == ' ' || c == ' ' ) ) ) { stringStarBySign = true ; continue ; } else if ( c == DECIMAL_SEPARATOR ) integer = false ; else { if ( index > 0 ) { if ( ! integer && c == ' ' ) { // CHECK FOR SCIENTIFIC NOTATION
 if ( index < iValue . length ( ) ) index ++ ; if ( iValue . charAt ( index ) == ' ' ) continue ; } final String v = iValue . substring ( 0 , index ) ; if ( c == ' ' ) return new Float ( v ) ; else if ( c == ' ' ) return new BigDecimal ( v ) ; else if ( c == ' ' ) return new Long ( v ) ; else if ( c == ' ' ) return new Double ( v ) ; else if ( c == ' ' ) return new Byte ( v ) ; else if ( c == ' ' || c == ' ' ) return new Date ( Long . parseLong ( v ) ) ; else if ( c == ' ' ) return new Short ( v ) ; } return iValue ; } } else if ( stringStarBySign ) { stringStarBySign = false ; } } if ( stringStarBySign ) return iValue ; if ( integer ) { try { return new Integer ( iValue ) ; } catch ( NumberFormatException ignore ) { return new Long ( iValue ) ; } } else if ( "NaN" . equals ( iValue ) || "Infinity" . equals ( iValue ) ) // NaN and Infinity CANNOT BE MANAGED BY BIG-DECIMAL TYPE
 return new Double ( iValue ) ; else return new BigDecimal ( iValue ) ; }
Parses a string returning the value with the closer type. Numbers by default are INTEGER if haven't decimal separator,
otherwise FLOAT. To treat all the number types numbers are postponed with a character that tells the type: b=byte, s=short,
l=long, f=float, d=double, t=date. If starts with # it's a RecordID. Most of the code is equals to getType() but has been
copied to speed-up it.

@param iValue
Value to parse
@return The closest type recognized
Parses a string returning the value with the closer type . Numbers by default are INTEGER if haven t decimal separator otherwise FLOAT . To treat all the number types numbers are postponed with a character that tells the type : b = byte s = short l = long f = float d = double t = date . If starts with # it s a RecordID . Most of the code is equals to getType () but has been copied to speed - up it .