001 package com.thaiopensource.datatype.xsd;
002
003 import java.math.BigDecimal;
004
005 class PrecisionRestrictDatatype extends ValueRestrictDatatype {
006 private final int precision;
007
008 PrecisionRestrictDatatype(DatatypeBase base, int precision) {
009 super(base);
010 this.precision = precision;
011 }
012
013 boolean satisfiesRestriction(Object obj) {
014 return getPrecision((BigDecimal)obj) <= precision;
015 }
016
017 static int getPrecision(BigDecimal n) {
018 return n.movePointRight(n.scale()).abs().toString().length();
019 }
020 }