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

Reduce code duplication in ColumnNamer.getColumnName()

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