X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=model%2Fyang-model-ri%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fmodel%2Fri%2Ftype%2FBaseDecimalType.java;h=374ef46f1481e696b13d140bfa6b1fdb4b41709f;hb=4d91e42fb4f17951d06e9286ef8cded5b10f20ba;hp=04e8a0449dce10f974eadf11381c28031aaecded;hpb=b67b827e357ae40ae26e4bfec35b76ef5ee67967;p=yangtools.git diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseDecimalType.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseDecimalType.java index 04e8a0449d..374ef46f14 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseDecimalType.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseDecimalType.java @@ -12,16 +12,16 @@ import static com.google.common.base.Verify.verifyNotNull; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableRangeSet; import com.google.common.collect.Range; -import java.math.BigDecimal; import java.util.Collection; import java.util.Optional; +import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; -final class BaseDecimalType extends AbstractRangeRestrictedBaseType +final class BaseDecimalType extends AbstractRangeRestrictedBaseType implements DecimalTypeDefinition { private static final ConstraintMetaDefinition BUILTIN_CONSTRAINT = new ConstraintMetaDefinition() { @@ -46,39 +46,25 @@ final class BaseDecimalType extends AbstractRangeRestrictedBaseType> IMPLICIT_RANGE_STATEMENTS = ImmutableList.of( - createRangeConstraint("-922337203685477580.8", "922337203685477580.7"), - createRangeConstraint("-92233720368547758.08", "92233720368547758.07"), - createRangeConstraint("-9223372036854775.808", "9223372036854775.807"), - createRangeConstraint("-922337203685477.5808", "922337203685477.5807"), - createRangeConstraint("-92233720368547.75808", "92233720368547.75807"), - createRangeConstraint("-9223372036854.775808", "9223372036854.775807"), - createRangeConstraint("-922337203685.4775808", "922337203685.4775807"), - createRangeConstraint("-92233720368.54775808", "92233720368.54775807"), - createRangeConstraint("-9223372036.854775808", "9223372036.854775807"), - createRangeConstraint("-922337203.6854775808", "922337203.6854775807"), - createRangeConstraint("-92233720.36854775808", "92233720.36854775807"), - createRangeConstraint("-9223372.036854775808", "9223372.036854775807"), - createRangeConstraint("-922337.2036854775808", "922337.2036854775807"), - createRangeConstraint("-92233.72036854775808", "92233.72036854775807"), - createRangeConstraint("-9223.372036854775808", "9223.372036854775807"), - createRangeConstraint("-922.3372036854775808", "922.3372036854775807"), - createRangeConstraint("-92.23372036854775808", "92.23372036854775807"), - createRangeConstraint("-9.223372036854775808", "9.223372036854775807")); - - private static RangeConstraint createRangeConstraint(final String min, final String max) { - return new ResolvedRangeConstraint<>(BUILTIN_CONSTRAINT, ImmutableRangeSet.of( - Range.closed(new BigDecimal(min), new BigDecimal(max)))); + private static final ImmutableList> IMPLICIT_RANGE_STATEMENTS; + + static { + final var builder = ImmutableList.>builderWithExpectedSize(18); + for (int scale = 1; scale <= 18; ++scale) { + builder.add(new ResolvedRangeConstraint<>(BUILTIN_CONSTRAINT, ImmutableRangeSet.of(Range.closed( + Decimal64.minValueIn(scale), Decimal64.maxValueIn(scale))))); + } + IMPLICIT_RANGE_STATEMENTS = builder.build(); } - static RangeConstraint constraintsForDigits(final int fractionDigits) { + static RangeConstraint constraintsForDigits(final int fractionDigits) { return verifyNotNull(IMPLICIT_RANGE_STATEMENTS.get(fractionDigits - 1)); } private final int fractionDigits; BaseDecimalType(final QName qname, final Collection unknownSchemaNodes, - final int fractionDigits, final RangeConstraint rangeConstraint) { + final int fractionDigits, final RangeConstraint rangeConstraint) { super(qname, unknownSchemaNodes, rangeConstraint); this.fractionDigits = fractionDigits; }