@Override
public boolean validate(Element enclosingElement, Element element) {
if (!element.getKind().equals(FIELD)) {
messager.printMessage(ERROR, Errors.COLUMN_TYPE_ERROR, element);
return false;
}
Table table = enclosingElement.getAnnotation(Table.class);
if (!enclosingElement.getKind().equals(CLASS) || table == null) {
messager.printMessage(ERROR, "@Column fields can only be enclosed by model classes.", element);
return false;
}
Column column = element.getAnnotation(Column.class);
Set<ColumnElement> existingColumns = registry.getColumnElements((TypeElement) enclosingElement);
for (ColumnElement existingColumn : existingColumns) {
if (existingColumn.getColumnName().equals(column.value())) {
messager.printMessage(ERROR, Errors.COLUMN_DUPLICATE_ERROR + column.value(), element);
return false;
}
}
return true;
}
}