public void validateForEntity(EntityMeta entityMeta, TableMetadata tableMetadata, ConfigurationContext configContext) {
log.debug("Validate existing table {} for {}", tableMetadata.getName(), entityMeta);
// Primary key Validation
PropertyMeta idMeta = entityMeta.getIdMeta();
final PropertyMetaTableValidator primaryKeyValidator = idMeta.forTableValidation();
if (entityMeta.structure().isEmbeddedId()) {
primaryKeyValidator.validatePrimaryKeyComponents(tableMetadata, true);
primaryKeyValidator.validatePrimaryKeyComponents(tableMetadata, false);
} else {
primaryKeyValidator.validateColumn(tableMetadata, entityMeta, configContext);
}
// Other fields validation
for (PropertyMeta pm : entityMeta.getAllMetasExceptIdAndCounters()) {
final PropertyMetaTableValidator columnValidator = pm.forTableValidation();
switch (pm.type()) {
case SIMPLE:
columnValidator.validateColumn(tableMetadata, entityMeta, configContext);
break;
case LIST:
case SET:
case MAP:
columnValidator.validateCollectionAndMapColumn(tableMetadata, entityMeta);
break;
default:
break;
}
}