in features/sharding/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/AbstractCosIdIntervalShardingAlgorithm.java [97:116]
private Range<LocalDateTime> toLocalDateTimeRange(final Range<T> shardingValue) {
if (Range.all().equals(shardingValue)) {
return Range.all();
}
Object endpointValue = shardingValue.hasLowerBound() ? shardingValue.lowerEndpoint() : shardingValue.upperEndpoint();
if (endpointValue instanceof LocalDateTime) {
return (Range<LocalDateTime>) shardingValue;
}
if (shardingValue.hasLowerBound() && shardingValue.hasUpperBound()) {
LocalDateTime lower = localDateTimeConvertor.toLocalDateTime(shardingValue.lowerEndpoint());
LocalDateTime upper = localDateTimeConvertor.toLocalDateTime(shardingValue.upperEndpoint());
return Range.range(lower, shardingValue.lowerBoundType(), upper, shardingValue.upperBoundType());
}
if (shardingValue.hasLowerBound()) {
LocalDateTime lower = localDateTimeConvertor.toLocalDateTime(shardingValue.lowerEndpoint());
return BoundType.OPEN == shardingValue.lowerBoundType() ? Range.greaterThan(lower) : Range.atLeast(lower);
}
LocalDateTime upper = localDateTimeConvertor.toLocalDateTime(shardingValue.upperEndpoint());
return BoundType.OPEN == shardingValue.upperBoundType() ? Range.lessThan(upper) : Range.atMost(upper);
}