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 }