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    }