private void validateValueNode(ValueNode valueNode, String value) throws EDIParseException {
if (!getFeature(FEATURE_VALIDATE)) {
return;
}
if (valueNode.getDataType() != null && !valueNode.getDataType().equals("")) {
try {
valueNode.isValidForType(value);
} catch (DataDecodeException e) {
throw new EDIParseException(edifactModel.getEdimap(), "Validation of expected type [" + valueNode.getDataType() + "] failed for value [" + value + "]. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", e, valueNode, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
}
}
if (valueNode.getMinLength() != null) {
if (value.length() < valueNode.getMinLength()) {
throw new EDIParseException(edifactModel.getEdimap(), "Value [" + value + "] should have a length greater than [" + valueNode.getMinLength() + "]. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", valueNode, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
}
}
if (valueNode.getMaxLength() != null) {
if (value.length() > valueNode.getMaxLength()) {
throw new EDIParseException(edifactModel.getEdimap(), "Value [" + value + "] exceeds allowed maximum length of [" + valueNode.getMaxLength() + "]. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", valueNode, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
}
}
}