提交 274abf34 authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Reduce code duplication in ColumnNamer.getColumnName()

上级 3ccdfaff
......@@ -57,52 +57,24 @@ public class ColumnNamer {
*/
public String getColumnName(Expression columnExp, int indexOfColumn, String columnNameOverride) {
// try a name from the column name override
String columnName = null;
if (columnNameOverride != null) {
columnName = columnNameOverride;
if (!isAllowableColumnName(columnName)) {
columnName = fixColumnName(columnName);
}
if (!isAllowableColumnName(columnName)) {
columnName = null;
}
}
String columnName = getColumnName(columnNameOverride, null);
if (columnName == null) {
// try a name from the column alias
if (columnName == null && columnExp.getAlias() != null && !DEFAULT_COLUMN_NAME.equals(columnExp.getAlias())) {
columnName = columnExp.getAlias();
if (!isAllowableColumnName(columnName)) {
columnName = fixColumnName(columnName);
}
if (!isAllowableColumnName(columnName)) {
columnName = null;
}
}
columnName = getColumnName(columnExp.getAlias(), DEFAULT_COLUMN_NAME);
if (columnName == null) {
// try a name derived from the column expression SQL
if (columnName == null && columnExp.getColumnName() != null
&& !DEFAULT_COLUMN_NAME.equals(columnExp.getColumnName())) {
columnName = columnExp.getColumnName();
if (!isAllowableColumnName(columnName)) {
columnName = fixColumnName(columnName);
}
if (!isAllowableColumnName(columnName)) {
columnName = null;
}
}
columnName = getColumnName(columnExp.getColumnName(), DEFAULT_COLUMN_NAME);
if (columnName == null) {
// try a name derived from the column expression plan SQL
if (columnName == null && columnExp.getSQL() != null && !DEFAULT_COLUMN_NAME.equals(columnExp.getSQL())) {
columnName = columnExp.getSQL();
if (!isAllowableColumnName(columnName)) {
columnName = fixColumnName(columnName);
}
if (!isAllowableColumnName(columnName)) {
columnName = null;
}
}
columnName = getColumnName(columnExp.getSQL(), DEFAULT_COLUMN_NAME);
// go with a innocuous default name pattern
if (columnName == null) {
columnName = configuration.getDefaultColumnNamePattern()
.replace("$$", Integer.toString(indexOfColumn + 1));
}
}
}
}
if (existingColumnNames.contains(columnName) && configuration.isGenerateUniqueColumnNames()) {
columnName = generateUniqueName(columnName);
}
......@@ -110,6 +82,21 @@ public class ColumnNamer {
return columnName;
}
private String getColumnName(String proposedName, String disallowedName) {
String columnName = null;
if (proposedName != null && !proposedName.equals(disallowedName)) {
if (isAllowableColumnName(proposedName)) {
columnName = proposedName;
} else {
proposedName = fixColumnName(proposedName);
if (isAllowableColumnName(proposedName)) {
columnName = proposedName;
}
}
}
return columnName;
}
private String generateUniqueName(String columnName) {
String newColumnName = columnName;
int loopCount = 2;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论