public static DateValue truncate( TemporalUnit unit, TemporalValue input, MapValue fields, Supplier<ZoneId> defaultZone ) { LocalDate localDate = input.getDatePart(); DateValue truncated = date( truncateTo( localDate, unit ) ); if ( fields.size() == 0 ) { return truncated; } else { MapValue updatedFields = fields.updatedWith( "date", truncated ); return build( updatedFields, defaultZone ); } }
public static LocalDateTimeValue truncate( TemporalUnit unit, TemporalValue input, MapValue fields, Supplier<ZoneId> defaultZone ) { Pair<LocalDate,LocalTime> pair = getTruncatedDateAndTime( unit, input, "local date time" ); LocalDate truncatedDate = pair.first(); LocalTime truncatedTime = pair.other(); LocalDateTime truncatedLDT = LocalDateTime.of( truncatedDate, truncatedTime ); if ( fields.size() == 0 ) { return localDateTime( truncatedLDT ); } else { return updateFieldMapWithConflictingSubseconds( fields, unit, truncatedLDT, ( mapValue, localDateTime ) -> { if ( mapValue.size() == 0 ) { return localDateTime( localDateTime ); } else { return build( mapValue.updatedWith( "datetime", localDateTime( localDateTime ) ), defaultZone ); } } ); } }
return build( mapValue.updatedWith( "time", time( offsetTime ) ), defaultZone );
return build( mapValue.updatedWith( "datetime", datetime( zonedDateTime ) ), defaultZone );
public static LocalTimeValue truncate( TemporalUnit unit, TemporalValue input, MapValue fields, Supplier<ZoneId> defaultZone ) { LocalTime localTime = input.getLocalTimePart(); LocalTime truncatedLT = assertValidUnit( () -> localTime.truncatedTo( unit ) ); if ( fields.size() == 0 ) { return localTime( truncatedLT ); } else { return updateFieldMapWithConflictingSubseconds( fields, unit, truncatedLT, ( mapValue, localTime1 ) -> { if ( mapValue.size() == 0 ) { return localTime( localTime1 ); } else { return build( mapValue.updatedWith( "time", localTime( localTime1 ) ), defaultZone ); } } ); } }
@Test void shouldUpdateWithIdenticalValues() { // Given MapValue base = mapValue( "k1", stringValue( "v1" ), "k2", stringValue( "v2" ), "k3", stringValue( "v3" ) ); // When MapValue updated = base.updatedWith( "k3", stringValue( "v3" ) ); // Then assertMapValueEquals( updated, base ); }
@Test void shouldUpdateMultipleTimesMapValue() { // Given MapValue a = mapValue( "k1", stringValue( "v1" ), "k2", stringValue( "v2" ) ); MapValue b = mapValue( "k1", stringValue( "version1" ), "k4", stringValue( "version4" ) ); MapValue c = mapValue( "k3", stringValue( "v3" ) ); // When MapValue updated = a.updatedWith( b ).updatedWith( c ); // Then assertMapValueEquals( updated, mapValue( "k1", stringValue( "version1" ), "k2", stringValue( "v2" ), "k3", stringValue( "v3" ), "k4", stringValue( "version4" ) ) ); }
@Test void shouldUpdateWithExistingKey() { // Given MapValue base = mapValue( "k1", stringValue( "v1" ), "k2", stringValue( "v2" ), "k3", stringValue( "v3" ) ); // When MapValue updated = base.updatedWith( "k3", stringValue( "version3" ) ); // Then assertMapValueEquals( updated, mapValue( "k1", stringValue( "v1" ), "k2", stringValue( "v2" ), "k3", stringValue( "version3" ) ) ); }
@Test void shouldUpdateWithNewKey() { // Given MapValue base = mapValue( "k1", stringValue( "v1" ), "k2", stringValue( "v2" ), "k3", stringValue( "v3" ) ); // When MapValue updated = base.updatedWith( "k4", stringValue( "v4" ) ); // Then assertMapValueEquals( updated, mapValue( "k1", stringValue( "v1" ), "k2", stringValue( "v2" ), "k3", stringValue( "v3" ), "k4", stringValue( "v4" ) ) ); }
@Test void shouldUpdateWithOtherMapValue() { // Given MapValue a = mapValue( "k1", stringValue( "v1" ), "k2", stringValue( "v2" ), "k3", stringValue( "v3" ) ); MapValue b = mapValue( "k1", stringValue( "version1" ), "k2", stringValue( "version2" ), "k4", stringValue( "version4" ) ); // When MapValue updated = a.updatedWith( b ); // Then assertMapValueEquals( updated, mapValue( "k1", stringValue( "version1" ), "k2", stringValue( "version2" ), "k3", stringValue( "v3" ), "k4", stringValue( "version4" ) ) ); }
public static DateValue truncate( TemporalUnit unit, TemporalValue input, MapValue fields, Supplier<ZoneId> defaultZone ) { LocalDate localDate = input.getDatePart(); DateValue truncated = date( truncateTo( localDate, unit ) ); if ( fields.size() == 0 ) { return truncated; } else { MapValue updatedFields = fields.updatedWith( "date", truncated ); return build( updatedFields, defaultZone ); } }
public static LocalDateTimeValue truncate( TemporalUnit unit, TemporalValue input, MapValue fields, Supplier<ZoneId> defaultZone ) { Pair<LocalDate,LocalTime> pair = getTruncatedDateAndTime( unit, input, "local date time" ); LocalDate truncatedDate = pair.first(); LocalTime truncatedTime = pair.other(); LocalDateTime truncatedLDT = LocalDateTime.of( truncatedDate, truncatedTime ); if ( fields.size() == 0 ) { return localDateTime( truncatedLDT ); } else { return updateFieldMapWithConflictingSubseconds( fields, unit, truncatedLDT, ( mapValue, localDateTime ) -> { if ( mapValue.size() == 0 ) { return localDateTime( localDateTime ); } else { return build( mapValue.updatedWith( "datetime", localDateTime( localDateTime ) ), defaultZone ); } } ); } }
return build( mapValue.updatedWith( "time", time( offsetTime ) ), defaultZone );
return build( mapValue.updatedWith( "datetime", datetime( zonedDateTime ) ), defaultZone );
public static LocalTimeValue truncate( TemporalUnit unit, TemporalValue input, MapValue fields, Supplier<ZoneId> defaultZone ) { LocalTime localTime = input.getLocalTimePart(); LocalTime truncatedLT = assertValidUnit( () -> localTime.truncatedTo( unit ) ); if ( fields.size() == 0 ) { return localTime( truncatedLT ); } else { return updateFieldMapWithConflictingSubseconds( fields, unit, truncatedLT, ( mapValue, localTime1 ) -> { if ( mapValue.size() == 0 ) { return localTime( localTime1 ); } else { return build( mapValue.updatedWith( "time", localTime( localTime1 ) ), defaultZone ); } } ); } }