}
protected Schemata.Column verify( SelectorName selectorName,
String propertyName,
boolean columnIsRequired ) {
Table table = tableWithNameOrAlias(selectorName);
if (table == null) {
StringBuilder existingSelectors = new StringBuilder();
boolean first = true;
for (SelectorName sel : selectorsByNameOrAlias.keySet()) {
if (first) first = false;
else existingSelectors.append(", ");
existingSelectors.append("'").append(sel.getString()).append("'");
}
problems.addError(GraphI18n.tableDoesNotExistButMatchesAnotherTable, selectorName.name(), existingSelectors);
return null;
}
Schemata.Column column = table.getColumn(propertyName);
if (column == null) {
// Maybe the supplied property name is really an alias ...
column = this.columnsByAlias.get(propertyName);
boolean propertyNameIsWildcard = propertyName == null || "*".equals(propertyName);
if (column == null && !propertyNameIsWildcard && !PseudoColumns.contains(propertyName, true)) {
if (!table.hasExtraColumns() && columnIsRequired) {
problems.addError(GraphI18n.columnDoesNotExistOnTable, propertyName, selectorName.name());
checkVariationsOfPropertyName(selectorName, propertyName, table, problems);
} else {
if (!checkVariationsOfPropertyName(selectorName, propertyName, table, problems)) {
problems.addWarning(GraphI18n.columnDoesNotExistOnTableAndMayBeResidual, propertyName,