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;
}