bool ModelValidator::isValid(const TextAnnotation& textAnnotation, bool allowDefaults/* = false*/)
{
	RETURN_IF_STR_EMPTY(textAnnotation.GetText(), "Annotation Text");

	if (textAnnotation.GetConnectorPoints() != NULL)
	{
		RETURN_IF_NOT_VALID1(*textAnnotation.GetConnectorPoints(), allowDefaults, "Text connection points are invalid");

		if (textAnnotation.GetConnectorPoints()->GetSpatialCoordinateCollection().size() > 2)
			RETURN_WITH_ERROR("No more than two text connection points are allowed");
	}

	if (!allowDefaults)
	{
		RETURN_IF_STR_EMPTY(textAnnotation.GetFont(), "Font");
		RETURN_IF_STR_EMPTY(textAnnotation.GetFontColor(), "Font Color");
		RETURN_IF_STR_EMPTY(textAnnotation.GetFontEffect(), "Font Effect");
		RETURN_IF_STR_EMPTY(textAnnotation.GetFontSize(), "Font Size");
		RETURN_IF_STR_EMPTY(textAnnotation.GetFontStyle(), "Font Style");
		RETURN_IF_STR_EMPTY(textAnnotation.GetFontOpacity(), "Font Opacity");
		RETURN_IF_STR_EMPTY(textAnnotation.GetTextJustify(), "Text Justify");
	}

	return true;
}