Search in sources :

Example 1 with EdmDecimal

use of org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal in project teiid by teiid.

the class ODataTypeManager method parseLiteral.

public static Object parseLiteral(String odataType, String value) throws TeiidException {
    EdmPrimitiveType primitiveType = EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.valueOf(odataType.substring(4)));
    int maxLength = DataTypeManager.MAX_STRING_LENGTH;
    if (primitiveType instanceof EdmBinary || primitiveType instanceof EdmStream) {
        maxLength = DataTypeManager.MAX_VARBINARY_BYTES;
    }
    int precision = 4;
    int scale = 3;
    if (primitiveType instanceof EdmDecimal) {
        precision = 38;
        scale = 9;
    }
    Class<?> expectedClass = primitiveType.getDefaultType();
    try {
        if (EdmString.getInstance().equals(primitiveType)) {
            value = EdmString.getInstance().fromUriLiteral(value);
        }
        Object converted = primitiveType.valueOfString(value, false, maxLength, precision, scale, true, expectedClass);
        if (primitiveType instanceof EdmTimeOfDay) {
            Calendar ts = (Calendar) converted;
            return new Time(ts.getTimeInMillis());
        } else if (primitiveType instanceof EdmDate) {
            Calendar ts = (Calendar) converted;
            return new Date(ts.getTimeInMillis());
        }
        return converted;
    } catch (EdmPrimitiveTypeException e) {
        throw new TeiidException(e);
    }
}
Also used : EdmPrimitiveType(org.apache.olingo.commons.api.edm.EdmPrimitiveType) EdmBinary(org.apache.olingo.commons.core.edm.primitivetype.EdmBinary) EdmStream(org.apache.olingo.commons.core.edm.primitivetype.EdmStream) Calendar(java.util.Calendar) Time(java.sql.Time) EdmPrimitiveTypeException(org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException) EdmDate(org.apache.olingo.commons.core.edm.primitivetype.EdmDate) EdmDate(org.apache.olingo.commons.core.edm.primitivetype.EdmDate) Date(java.sql.Date) EdmDecimal(org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal) TeiidException(org.teiid.core.TeiidException) EdmTimeOfDay(org.apache.olingo.commons.core.edm.primitivetype.EdmTimeOfDay)

Aggregations

Date (java.sql.Date)1 Time (java.sql.Time)1 Calendar (java.util.Calendar)1 EdmPrimitiveType (org.apache.olingo.commons.api.edm.EdmPrimitiveType)1 EdmPrimitiveTypeException (org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException)1 EdmBinary (org.apache.olingo.commons.core.edm.primitivetype.EdmBinary)1 EdmDate (org.apache.olingo.commons.core.edm.primitivetype.EdmDate)1 EdmDecimal (org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal)1 EdmStream (org.apache.olingo.commons.core.edm.primitivetype.EdmStream)1 EdmTimeOfDay (org.apache.olingo.commons.core.edm.primitivetype.EdmTimeOfDay)1 TeiidException (org.teiid.core.TeiidException)1