public static DecimalParseResult parseIncludeLeadingZerosInPrecision(String stringValue) { return parse(stringValue, true); }
public static DecimalParseResult parse(String stringValue) { return parse(stringValue, false); }
@Override protected Object visitDecimalLiteral(DecimalLiteral node, ConnectorSession context) { return Decimals.parse(node.getValue()).getObject(); }
private void assertParseFailure(String text) { try { Decimals.parse(text); } catch (IllegalArgumentException e) { String expectedMessage = format("Invalid decimal value '%s'", text); if (!Objects.equals(e.getMessage(), expectedMessage)) { fail(format("Unexpected exception, exception with message '%s' was expected", expectedMessage), e); } return; } fail("Parse failure was expected"); }
@Override protected Type visitDecimalLiteral(DecimalLiteral node, StackableAstVisitorContext<Context> context) { DecimalParseResult parseResult = Decimals.parse(node.getValue()); return setExpressionType(node, parseResult.getType()); }
@Override public Slice getSlice(int field) { checkState(row != null, "No current row"); Column column = columns.get(field); if (column.getType().getBase() == ColumnType.Base.DECIMAL) { return (Slice) Decimals.parse(row.get(column.getPosition())).getObject(); } Slice characters = Slices.utf8Slice(row.get(columns.get(field).getPosition())); if (column.getType().getBase() == ColumnType.Base.CHAR) { characters = trimTrailingSpaces(characters); } return characters; }
@Override protected RowExpression visitDecimalLiteral(DecimalLiteral node, Void context) { DecimalParseResult parseResult = Decimals.parse(node.getValue()); return constant(parseResult.getObject(), parseResult.getType()); }
private void assertParseResult(String value, Object expectedObject, int expectedPrecision, int expectedScale) { assertEquals(Decimals.parse(value), new DecimalParseResult( expectedObject, createDecimalType(expectedPrecision, expectedScale))); }
@Override public long getLong(int field) { checkState(row != null, "No current row"); Column column = columns.get(field); if (column.getType().getBase() == ColumnType.Base.DATE) { return Days.daysBetween(new LocalDate(0), LocalDate.parse(row.get(column.getPosition()))).getDays(); } if (column.getType().getBase() == ColumnType.Base.TIME) { return LocalTime.parse(row.get(column.getPosition())).getMillisOfDay(); } if (column.getType().getBase() == ColumnType.Base.INTEGER) { return parseInt(row.get(column.getPosition())); } if (column.getType().getBase() == ColumnType.Base.DECIMAL) { DecimalParseResult decimalParseResult = Decimals.parse(row.get(column.getPosition())); return rescale((Long) decimalParseResult.getObject(), decimalParseResult.getType().getScale(), ((DecimalType) columnTypes.get(field)).getScale()); } return parseLong(row.get(column.getPosition())); }
public static DecimalParseResult parseIncludeLeadingZerosInPrecision(String stringValue) { return parse(stringValue, true); }
public static DecimalParseResult parse(String stringValue) { return parse(stringValue, false); }
@Override public Slice getSlice(int field) { checkState(row != null, "No current row"); Column column = columns.get(field); if (column.getType().getBase() == ColumnType.Base.DECIMAL) { return (Slice) Decimals.parse(row.get(column.getPosition())).getObject(); } Slice characters = Slices.utf8Slice(row.get(columns.get(field).getPosition())); if (column.getType().getBase() == ColumnType.Base.CHAR) { characters = trimTrailingSpaces(characters); } return characters; }
@Override public long getLong(int field) { checkState(row != null, "No current row"); Column column = columns.get(field); if (column.getType().getBase() == ColumnType.Base.DATE) { return Days.daysBetween(new LocalDate(0), LocalDate.parse(row.get(column.getPosition()))).getDays(); } if (column.getType().getBase() == ColumnType.Base.TIME) { return LocalTime.parse(row.get(column.getPosition())).getMillisOfDay(); } if (column.getType().getBase() == ColumnType.Base.INTEGER) { return parseInt(row.get(column.getPosition())); } if (column.getType().getBase() == ColumnType.Base.DECIMAL) { DecimalParseResult decimalParseResult = Decimals.parse(row.get(column.getPosition())); return rescale((Long) decimalParseResult.getObject(), decimalParseResult.getType().getScale(), ((DecimalType) columnTypes.get(field)).getScale()); } return parseLong(row.get(column.getPosition())); }