Java源码示例:com.intellij.database.model.DasColumn
示例1
/**
* 类型校验,如果存在未知类型则引导用于去条件类型
*
* @param dbTable 原始表对象
* @return 是否验证通过
*/
@Override
public boolean typeValidator(DbTable dbTable) {
// 处理所有列
JBIterable<? extends DasColumn> columns = DasUtil.getColumns(dbTable);
List<TypeMapper> typeMapperList = CurrGroupUtils.getCurrTypeMapperGroup().getElementList();
FLAG:
for (DasColumn column : columns) {
String typeName = column.getDataType().getSpecification();
for (TypeMapper typeMapper : typeMapperList) {
// 不区分大小写查找类型
if (Pattern.compile(typeMapper.getColumnType(), Pattern.CASE_INSENSITIVE).matcher(typeName).matches()) {
continue FLAG;
}
}
// 没找到类型,引导用户去添加类型
if (MessageDialogBuilder.yesNo(MsgValue.TITLE_INFO, String.format("数据库类型%s,没有找到映射关系,是否去添加?", typeName)).isYes()) {
ShowSettingsUtil.getInstance().showSettingsDialog(project, "Type Mapper");
return false;
}
// 用户取消添加
return true;
}
return true;
}
示例2
public void newColumnEditorByDb(IdeaContext ideaContext, List<DbTable> dbTables) {
List<Table> tables = new ArrayList<>();
for (DbTable dbTable: dbTables) {
Table table = new Table();
table.setTableName(dbTable.getName());
List<Field> fields = new ArrayList<>();
JBIterable<? extends DasColumn> columnsIter = DasUtil.getColumns(dbTable);
List<? extends DasColumn> dasColumns = columnsIter.toList();
for (DasColumn dasColumn : dasColumns) {
Field field = new Field();
field.setColumn(dasColumn.getName());
field.setColumnType(dasColumn.getDataType().typeName);
field.setColumnSize(String.valueOf(dasColumn.getDataType().size));
field.setComment(dasColumn.getComment());
fields.add(field);
}
table.setFields(fields);
tables.add(table);
}
init(ideaContext, tables);
// esc
this.getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
}
示例3
public TableInfo(DbTable tableElement) {
this.tableElement = tableElement;
List<DasColumn> columns = new ArrayList<DasColumn>();
JBIterable<? extends DasColumn> columnsIter = DasUtil.getColumns(tableElement);
List<? extends DasColumn> dasColumns = columnsIter.toList();
for (DasColumn dasColumn : dasColumns) {
columns.add(dasColumn);
if (DasUtil.isPrimary(dasColumn)) {
primaryKeys.add(dasColumn.getName());
}
}
this.columns = columns;
}
示例4
@Override
protected SqlGenerator createSqlGenerator(final TableInfo tableInfo) {
return new SqlGenerator(tableInfo) {
@Override
public String getInsertValues() {
StringBuilder values = new StringBuilder();
List<DasColumn> columns = tableInfo.getColumns();
for (int i = 0; i < columns.size(); i++) {
DasColumn columnElement = columns.get(i);
if (i != 0) {
values.append(",");
}
values.append(":").append(Util.convertCamelCase(columnElement.getName()));
}
return values.toString();
}
};
}
示例5
@Override
protected SqlGenerator createSqlGenerator(final TableInfo tableInfo) {
return new SqlGenerator(tableInfo) {
@Override
public String getSetClause() {
List<DasColumn> columns = tableInfo.getNonPrimaryColumns();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < columns.size(); i++) {
DasColumn element = columns.get(i);
if (i != 0) {
sb.append(',');
}
String columnName = element.getName();
sb.append(" ").append(columnName).append(" = :")
.append(Util.convertCamelCase(columnName));
}
return sb.toString();
}
@Override
public String getWhereClause() {
return Util.makeNamedWhereClause(tableInfo.getPrimaryKeys());
}
};
}
示例6
public static JBIterable<? extends DasColumn> getColumns(Project project, String table) {
if (table == null) return null;
try {
JBIterable<? extends DasTable> tables = getTables(project);
for (DasTable item : tables) {
if (table.equals(item.getName())) {
return DasUtil.getColumns(item);
}
}
} catch (Exception e) {
return null;
}
return null;
}
示例7
public String getInsertValues() {
List<DasColumn> columns = tableInfo.getColumns();
StringBuilder columnList = new StringBuilder();
for (int i = 0, size = columns.size(); i < size; i++) {
if (i != 0) {
columnList.append(",");
}
columnList.append("?");
}
return columnList.toString();
}
示例8
public String getSetClause() {
List<DasColumn> columns = tableInfo.getNonPrimaryColumns();
StringBuilder setClause = new StringBuilder();
for (int i = 0, size = columns.size(); i < size; i++) {
DasColumn columnElement = columns.get(i);
if (i != 0) {
setClause.append(",");
}
setClause.append(" ").append(columnElement.getName()).append(" = ?");
}
return setClause.toString();
}
示例9
public String getDuplicateSetClause() {
List<DasColumn> columns = tableInfo.getNonPrimaryColumns();
List<String> columnList = Lists.newArrayList();
for (DasColumn column : columns) {
if (!DasUtil.isIndexColumn(column)) {
columnList.add(" " + column.getName() + " = ?");
}
}
return Joiner.on(",").join(columnList);
}
示例10
public List<String> getColumnsName() {
List<String> columnsName = Lists.newArrayList();
for (DasColumn column : columns) {
columnsName.add(column.getName());
}
return columnsName;
}
示例11
public List<DasColumn> getNonPrimaryColumns() {
Set<String> pKNameSet = new HashSet<String>();
for (String pkName : getPrimaryKeys()) {
pKNameSet.add(pkName);
}
List<DasColumn> ret = new ArrayList<DasColumn>();
for (DasColumn column : columns) {
if (!pKNameSet.contains(column.getName())) {
ret.add(column);
}
}
return ret;
}
示例12
/**
* 通过DbTable获取TableInfo
*
* @param dbTable 原始表对象
* @return 表信息对象
*/
@Override
public TableInfo getTableInfoByDbTable(DbTable dbTable) {
if (dbTable == null) {
return null;
}
TableInfo tableInfo = new TableInfo();
// 设置原属对象
tableInfo.setObj(dbTable);
// 设置类名
tableInfo.setName(nameUtils.getClassName(dbTable.getName()));
// 设置注释
tableInfo.setComment(dbTable.getComment());
// 设置所有列
tableInfo.setFullColumn(new ArrayList<>());
// 设置主键列
tableInfo.setPkColumn(new ArrayList<>());
// 设置其他列
tableInfo.setOtherColumn(new ArrayList<>());
// 处理所有列
JBIterable<? extends DasColumn> columns = DasUtil.getColumns(dbTable);
for (DasColumn column : columns) {
ColumnInfo columnInfo = new ColumnInfo();
// 原始列对象
columnInfo.setObj(column);
// 列类型
columnInfo.setType(getColumnType(column.getDataType().getSpecification()));
// 短类型
columnInfo.setShortType(nameUtils.getClsNameByFullName(columnInfo.getType()));
// 列名
columnInfo.setName(nameUtils.getJavaName(column.getName()));
// 列注释
columnInfo.setComment(column.getComment());
// 扩展项
columnInfo.setExt(new LinkedHashMap<>());
// 添加到全部列
tableInfo.getFullColumn().add(columnInfo);
// 主键列添加到主键列,否则添加到其他列
if (DasUtil.isPrimary(column)) {
tableInfo.getPkColumn().add(columnInfo);
} else {
tableInfo.getOtherColumn().add(columnInfo);
}
}
return tableInfo;
}
示例13
public List<DasColumn> getColumns() {
return columns;
}